Printing an existing excel file in C#

M

Miran

Hi,
I have an xls file i would like to printout from my application. So far i
have found this example for printing in general
Process pr = new Process();
pr.StartInfo.FileName = "MyFile.xls";
pr.StartInfo.CreateNoWindow = true;
pr.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
pr.StartInfo.Verb = "Print";
pr.Start();
pr.WaitForExit();
pr.Dispose();
this prints good but the problem i would like to hide excel from the user or
find an alternative way to print the file, without user being aware of any
other processes except printing, any ideas or help i greatly appreciated
 
U

urkec

Miran said:
Hi,
I have an xls file i would like to printout from my application. So far i
have found this example for printing in general
Process pr = new Process();
pr.StartInfo.FileName = "MyFile.xls";
pr.StartInfo.CreateNoWindow = true;
pr.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
pr.StartInfo.Verb = "Print";
pr.Start();
pr.WaitForExit();
pr.Dispose();
this prints good but the problem i would like to hide excel from the user or
find an alternative way to print the file, without user being aware of any
other processes except printing, any ideas or help i greatly appreciated

You could use COM interop and Excel object model to set Application.Visible
to false, open the file you want and print it:

using System;
using System.Reflection;
using Microsoft.Office.Interop.Excel;

class XLPrintTest
{
static void Main()
{
Application ExcelApp = new Application ();
ExcelApp.Visible = false;
ExcelApp.DisplayAlerts = false;

Workbook WBook = ExcelApp.Workbooks.Open
(@"C:\test.xls", Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value);

WBook.PrintOut (Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value);

WBook.Close (false, Missing.Value, Missing.Value);

ExcelApp.Quit ();
}
}
 
M

Miran

thx for solving the problem

urkec said:
You could use COM interop and Excel object model to set Application.Visible
to false, open the file you want and print it:

using System;
using System.Reflection;
using Microsoft.Office.Interop.Excel;

class XLPrintTest
{
static void Main()
{
Application ExcelApp = new Application ();
ExcelApp.Visible = false;
ExcelApp.DisplayAlerts = false;

Workbook WBook = ExcelApp.Workbooks.Open
(@"C:\test.xls", Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value);

WBook.PrintOut (Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value);

WBook.Close (false, Missing.Value, Missing.Value);

ExcelApp.Quit ();
}
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top