使用Interop打印Excel

有没有人有任何想法如何使用C#和Excel Interop编程方式打印Excel文件? 如果是这样,你能提供代码吗?

为了打印,您可以使用Worksheet.PrintOut()方法。 您可以通过传入Type.Missing来省略任何或所有可选参数。 如果您省略了所有这些打印机,它将默认从打印机打印一份副本。 但是可以使用参数来设置要打印的份数,sorting规则等。有关Worksheet.PrintOut()方法的更多信息,请参阅帮助。

他们在帮助文件中显示的示例是:

private void PrintToFile() { // Make sure the worksheet has some data before printing. this.Range["A1", missing].Value2 = "123"; this.PrintOut(1, 2, 1, false, missing, true, false, missing); } 

但是,除非需要更改默认设置,否则只需在Type.Missing中传递所有参数即可。 下面是一个使用自动化来打开Excel工作簿,打印第一页,然后closures的示例:

 void PrintMyExcelFile() { Excel.Application excelApp = new Excel.Application(); // Open the Workbook: Excel.Workbook wb = excelApp.Workbooks.Open( @"C:\My Documents\Book1.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,Type.Missing,Type.Missing); // Get the first worksheet. // (Excel uses base 1 indexing, not base 0.) Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets[1]; // Print out 1 copy to the default printer: ws.PrintOut( Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); // Cleanup: GC.Collect(); GC.WaitForPendingFinalizers(); Marshal.FinalReleaseComObject(ws); wb.Close(false, Type.Missing, Type.Missing); Marshal.FinalReleaseComObject(wb); excelApp.Quit(); Marshal.FinalReleaseComObject(excelApp); } 

希望这可以帮助!

麦克风

重要的改进是select打印机的代码,例如:

 var printers = System.Drawing.Printing.PrinterSettings.InstalledPrinters; int printerIndex = 0; foreach(String s in printers) { if (s.Equals("Name of Printer")) { break; } printerIndex++; } xlWorkBook.PrintOut(Type.Missing, Type.Missing, Type.Missing, Type.Missing,printers[printerIndex], Type.Missing, Type.Missing, Type.Missing);