我正在尝试提高C#Winform项目的性能。
以前,生成Excel文件的时间为100000毫秒(使用Office.Interop.Excel)。 使用ClosedXml它大概是5000毫秒。非常好。但是现在我需要打印这个Excel文档(只有一个工作表或整个工作簿)
之前我正在这样做(使用办公室互操作):
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);
}
但现在_activeWorkbook
和_activeWorksheet
的类型为XLWorkbook
和IXLWorksheet
。所以没有Printout
方法。我找不到打印方法,我想没有,因为OpenXml不依赖于Excel。我是对的吗?
我找不到用于打印工作表的Shell命令。
那么,有没有一种简单的方法可以在不使用Interop的情况下打印工作簿/工作表?
答案 0 :(得分:4)
允许您读取和编写Excel兼容文件的库与大多数库一样," headless"。
其中的代码可用于以Excel(和兼容的应用程序)理解的格式写入数据,但它们通常不提供(链接到)用户界面,也不提供呈现Excel内容的方法文件到另一种文件格式或打印机。因为这超出了图书馆的范围。读取和写入文件是一回事,正确渲染其内容是另一回事。
有些图书馆支持打印Excel文件,例如Aspose。
使用库生成文档时,您始终只能use interop to print。或者您可以send the "print" verb to Excel,它将使用默认设置打印到默认打印机。