2015-12-01 39 views
22

我使用Excel Interop打開xlsx文件並將其保存爲pdf文檔。在調用'ExportAsFixedFileFormat'方法後,將顯示一個標題爲「發佈」的對話框來指示進度。我怎樣才能壓制或隱藏這個對話框?我在其他論壇上看到過一些類似的問題,但沒有令人滿意的解決方案,但希望有人從那以後解決了這個問題。C#Excel Interop - 調用時禁止「發佈」對話框Worksheet.ExportAsFixedFormat

enter image description here

代碼:

Application application = new Application(); 
application.DisplayAlerts = false; // <- No effect 
application.Visible = false; // <- No effect 
application.ScreenUpdating = false; // <- No effect 
application.UserControl = false; // <- No effect 
application.Workbooks.Open(path, Type.Missing, true); 
application.DisplayDocumentActionTaskPane = false; // <- No effect 
application.Worksheets[1].ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, path); 
+0

這個賞金可能對沒有人有幫助。它似乎取決於操作系統和Excel版本,因爲在我的機器上(Win 10 + Office 2013)沒有一個對話框彈出 – lokusking

+0

你根本不能。當Excel檢測到正在進行的操作需要很長時間時,纔會顯示這些進度對話框。即使保存工作簿「CTRL + S」並且目標是網絡速度較慢的網絡驅動器,也會看到一個進度對話框。其主要原因是您要麼發佈大量數據,要麼系統資源緊張,或者您正在緩慢或全部發布的網絡驅動器上發佈。 – cyboashu

+3

很少有矯枉過正的方法,使用WinAPI查找此對話框並將隱藏的可見性設置爲隱藏,或者如果您關心用戶取消此操作,則在發佈期間再次使用WinAPI阻止鍵盤鼠標輸入。 – cyboashu

回答

0

如何處理它在BackgroundWorker。這不會拋出COMEXCEPTION。 我試了一下按鈕上的代碼點擊,它的工作原理沒有顯示progress dialog

var worker = new BackgroundWorker(); 
worker.DoWork += (o, args) => 
{ 
    var path = @"D:\sample.xlsx"; 
    var application = new Microsoft.Office.Interop.Excel.Application(); 
    application.Workbooks.Open(path, 
     Type.Missing, true); 
    application.Worksheets[1].ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, path); 
}; 
worker.RunWorkerAsync(); 
1

也許我沒有回答你的問題,但我會盡力幫助。據我所知,不建議在後端處理中使用Excel Interop。你遇到過其中一個問題,但還有一些問題。有與Excel格式交互的第三方替代品,其中一些是開源的,一些是商業的。我強烈建議看看其中之一: ClosedXMLNPOI。兩者都是開源和免費的。

0

您可以使用pedamorf庫,pedamorf是一個將文檔,圖像,url,html和文本轉換爲PDF的服務器。它非常依賴優秀的開源程序wkhtml2pdf,Libre Office和iTextSharp。提供了一個客戶端庫,可以從.NET應用程序中使用客戶端庫來利用pedamorf提供的轉換服務。

更多信息是here

0

到目前爲止,更好的API來處理(創建,讀取,導出爲PDF/HTML,等...),我所知道的是FLEXCEL XLS/XLSX文件。這非常簡單,令人難以置信的快速和完整的C#寫入。不要求Excel安裝。

你會在這裏找到它:http://www.tmssoftware.com/site/flexcelnet.asp(以獲得大量的實例源代碼試用版)

如果你的預算在項目中獲得許可證,我真的reccomend。

+0

使用NuGet並搜索EPPlus。到目前爲止(在我的HO中)是用於在網絡上生成Excel內容的最佳API。 – Dotnettex