我已經實現了一個下載實用程序,它在後臺線程中下載文件。現在,我想實現將每個文件的下載結果導出到Excel工作表的功能。我正在使用Microsoft.Office.Interop.Excel庫來達到此目的。因此,爲此我創建了一個excel工作簿,並在其中執行條目。我的問題是我是否在下載過程開始時打開工作簿,然後關閉工作簿完成後,還是每次我想進入時創建一個新的Excel連接?請注意,下載可能需要很長時間。我應該保持excel工作簿連接在C#中打開,或者每次需要添加新行時打開一個新連接?
0
A
回答
1
使用Interop
時需要注意的一點是,您實際上是在後臺創建了一個excel.exe
進程,然後使用DCOM來操作正在運行的進程。
通常,這意味着當您第一次打開文件並且Excel未運行時,加載需要一段時間。因此,如果您要進行增量更新,我會建議在後臺保持文件的打開狀態。
還要記住,Interops是硬編碼到您要定位的Office版本,並且還需要安裝Office才能運行。
個人而言,我總是使用第三方庫進行Excel操作,因爲它們比Interop
程序集性能高得多,並且不需要在機器上安裝Office的硬性依賴性。我已經成功地使用
的例子是:SpreadsheetGear和FlexCel
相關問題
- 1. C#應該在連接池中保持打開連接
- 2. MySQL,我應該在需要時保持連接或連接嗎?
- 3. 保持SYSDBA連接在C++中打開
- 4. 我應該每次打開一個MySQL連接還是總是打開一個MySQL連接?
- 5. 爲什麼我應該關閉或保持Redis連接打開?
- 6. 連接池應該比保持連接打開慢得多嗎?
- 7. 保持mysql連接打開
- 8. IPC:爲每個請求連接或保持套接字打開?
- 9. 我應該保持連接還是應該每次創建新連接?
- 10. 每次我想要使用它時,是否應該創建一個全新的SqlConnection,或者每次嘗試重新打開一個現有連接?
- 11. 從網絡斷開連接時保持Oracle連接打開
- 12. MYSQL /打開和關閉連接或保持每個瀏覽器用戶打開一個連接?
- 13. 我應該每次打開一個IDBDatabase還是保持一個實例打開?
- 14. 我需要告訴Apache Tomcat保持打開Websocket連接嗎?
- 15. FTP重新打開連接
- 16. 我應該保持一個數據庫連接在MySQLdb中打開嗎?
- 17. 是否爲每個UDP連接打開一個新套接字?
- 18. 我應該保持SerialPort連接打開嗎?
- 19. 我應該保持Sqlite連接打開嗎?
- 20. 我應該保持數據庫連接打開嗎?
- 21. 我應該保持SSH連接到Unix打開
- 22. MySQL連接需要時間打開
- 23. WM6.5連接到SQL Server 2008:我應該保持連接打開嗎?
- 24. 每次打開Excel時,VSTO加載項打開默認工作簿
- 25. 保持一個連接爲每個客戶端打開php
- 26. BeginTransaction需要打開連接。連接的當前狀態爲打開,執行
- 27. 打開另一個工作簿時打開工作簿#1
- 28. 保持TCP連接打開,直到斷開連接Android
- 29. SoapHttpClientProtocol,該方法是否調用每次打開一個新的連接?
- 30. Postgres連接應該始終打開?或者在運行每個查詢之前連接?
我使用Interop程序集的版本15,所以會用Excel的特定版本的工作。 –
它將與版本15對應的版本一起工作。它可能適用於早期版本,但不能保證。 MS定期討論版本之間公開的API,這就是爲什麼有這麼多的第三方庫存在文件格式而不是Office API版本。 – toadflakz
你絕對是寫作,互操作庫是絕對廢話,我用NPOI,它運作得非常好。 –