2

I'm trying to improve performance of a C# Winform project.

Previously, generate an Excel file was during 100000ms (using Office.Interop.Excel). Using ClosedXml it is about 5000ms. Really Great. But now I need to print this Excel document (only a Worksheet or the entire workbook)

I was doing this before (using office interop) :

public void PrintCurrentWorksheet()
{
    this._activeWorksheet.PrintOut(Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
}
public void PrintWorkbook()
{
    this._activeWorbook.PrintOut(Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
}

But now type of _activeWorkbook and _activeWorksheet are XLWorkbook and IXLWorksheet. So there is no Printout method. I could not find a print method and I suppose there is not because OpenXml is not relied to Excel. Am I right?

I could not find a Shell command to print a Worksheet.

So, is there a simple way to print a Workbook/Worksheet without using Interop?

ZwoRmi
  • 1,093
  • 11
  • 30

1 Answers1

4

Libraries that allow you to read and write Excel-compatible files are, like most libraries, "headless".

The code in them can be used to write data in a format that Excel (and compatible applications) understand, but they generally do not offer a (link to a) user interface, nor a way to render the contents of the Excel file to another file format or a printer. Because that is outside the scope of the library. Reading and writing files is one thing, rendering their contents properly is a whole other thing.

There are libraries that do support printing Excel files, such as Aspose.

You can always only use interop to print, while generating the document using libraries. Or you can send the "print" verb to Excel, which will print using default settings to the default printer.

Community
  • 1
  • 1
CodeCaster
  • 147,647
  • 23
  • 218
  • 272