2015-12-16 222 views
2

我試圖提高C#Winform項目的性能。打印Excel工作表/工作簿

以前,生成一個Excel文件的時間是100000ms(使用Office.Interop.Excel)。 使用ClosedXml約爲5000ms。非常好。但現在我需要把它打印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_activeWorksheetXLWorkbookIXLWorksheet。所以沒有Printout方法。我找不到打印方法,我想這不是因爲OpenXml不依賴於Excel。我對嗎?

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

那麼,有沒有簡單的方法來打印工作簿/工作表而不使用Interop?

回答

4

允許您讀取和寫入Excel兼容文件的庫與大多數庫一樣都是「headless」。

它們中的代碼可用於以Excel(和兼容應用程序)理解的格式寫入數據,但它們通常不提供(鏈接到)用戶界面,也不提供呈現Excel文件轉換爲另一種文件格式或打印機。因爲這超出了圖書館的範圍。讀寫文件是一回事,正確地呈現其內容是另一回事。

有支持打印Excel文件的庫,例如Aspose

在使用庫生成文檔時,您始終只能使用use interop to print。或者您可以使用send the "print" verb to Excel,它將使用默認設置打印到默認打印機。

+0

「默認設置爲默認打印機」您的意思是Excel文件的默認設置?所以我可以使用「print verb」和ClosedXml'PrintArea'來打印單個工作表? – ZwoRmi

+0

我不知道,試試吧。 :) – CodeCaster

相關問題