打印Excel工作表/工作簿

时间:2015-12-16 09:25:06

标签: c# winforms printing excel-interop closedxml

我正在尝试提高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的类型为XLWorkbookIXLWorksheet。所以没有Printout方法。我找不到打印方法,我想没有,因为OpenXml不依赖于Excel。我是对的吗?

我找不到用于打印工作表的Shell命令。

那么,有没有一种简单的方法可以在不使用Interop的情况下打印工作簿/工作表?

1 个答案:

答案 0 :(得分:4)

允许您读取和编写Excel兼容文件的库与大多数库一样," headless"。

其中的代码可用于以Excel(和兼容的应用程序)理解的格式写入数据,但它们通常不提供(链接到)用户界面,也不提供呈现Excel内容的方法文件到另一种文件格式或打印机。因为这超出了图书馆的范围。读取和写入文件是一回事,正确渲染其内容是另一回事。

有些图书馆支持打印Excel文件,例如Aspose

使用库生成文档时,您始终只能use interop to print。或者您可以send the "print" verb to Excel,它将使用默认设置打印到默认打印机。