2017年11月22日 星期三

[研究] 匯出、匯入 Excel 檔案 (.NET)

[研究] 匯出、匯入 Excel 檔案 (.NET)

2017-11-22

(零) 前言

微軟官方並不建議在伺服器端使用直接存取 Excel 物件模型的方式來控制 Excel 檔案,除了上述的資源無法釋放的問題外,還有像是權限的問題,以及安全性問題等等,詳細的資料請參考:

Considerations for server-side Automation of Office - Microsoft Support
http://support.microsoft.com/default.aspx/kb/257757


Office 伺服器端自動化的考量因素 - Microsoft Support
https://support.microsoft.com/zh-tw/help/257757/considerations-for-server-side-automation-of-office

Considerations for server-side Automation of Office
https://support.microsoft.com/fi-fi/help/257757/considerations-for-server-side-automation-of-office

在 Server 端存取 Excel 檔案的利器:NPOI Library
https://msdn.microsoft.com/zh-tw/ee818993.aspx

也就是最好不要在 Web Server 或網頁上做 Excel 檔案的匯出、匯入等行為。

****************************************

(一) 以Html方式輸出

[研究][C#][ASP.NET] GridView 匯出成 Excel (.xls)(以Html方式輸出)
http://shaurong.blogspot.tw/2016/03/caspnet-gridview-excel-xlshtml.html

優點:不需要安裝任何元件
缺點:Office 2007(含)以後,開啟檔案時候會有警告,因為檔案格式實際上是 HTML,不是真正的 .xls

****************************************

(二) 使用 Microsoft XML SDK 2.5 for Office

歡迎使用 Open XML SDK 2.5 for Office
https://msdn.microsoft.com/zh-tw/library/office/bb448854.aspx

Open XML SDK 2.5 for Microsoft Office
https://www.microsoft.com/en-us/download/details.aspx?id=30425

[研究][C#][ASP.NET] GridView 匯出成 Excel (.xlsx) (使用 OpenXML SDK 2.5)
http://shaurong.blogspot.tw/2016/03/caspnet-gridview-excel-xlsx-openxml-sdk.html

優點:微軟官方推出的免費元件
缺點:
1.Web Server 要另外安裝元件
2.可能只支援 .xlsx  (可能不支援 .xls)
3.元件更新可能沒有 Office 快
4.可能有資源無法釋放的問題、權限的問題、安全性問題等等。

2017-11-22,目前 NuGet 提供的 OpenXML 已經到 v2.7.2 版,但獨立下載的仍只有 v2.5 版。

****************************************

(三) 使用 Microsoft Office

[研究][C#][ASP.NET] GridView 匯出成 .xls (使用 Excel )
http://shaurong.blogspot.tw/2016/03/caspnet-gridview-xls-excel.html

優點:直接操作 Excel 軟體去處理檔案,相容性最佳
缺點:
1.Web Server 必須安裝商業版 Microsoft Office,必須付費,免費版 Office Viewer 不支援。
2.可能有資源無法釋放的問題、權限的問題、安全性問題等等。

****************************************

(四) 使用 NPOI

這不是微軟官方提供的,但是在微軟的 MSDN 網站上有介紹。

[研究][C#][ASP.NET] 用 NPOI v2.2.1 在 Server 端存取 Excel 檔案 (從官方下載安裝)
http://shaurong.blogspot.com/2017/11/caspnet-npoi-v221-server-excel.html

[研究][C#][ASP.NET] 用 NPOI v2.3.0 在 Server 端存取 Excel 檔案 (NuGet安裝)
http://shaurong.blogspot.com/2017/11/caspnet-npoi-server-excel-nuget.html

****************************************

(五) 使用 ClosedXML

這不是微軟官方提供的,它使用了 OpenXML 和一些其他套件,程式開發聽說比 OpenXML 要簡易點。

[研究] [C#] 用 ClosedXML 在 Server端操作 Excel,安裝與試用 (NuGet安裝)
http://shaurong.blogspot.com/2017/11/c-closedxml-server-excel-nuget.html

PS:

[研究] [C#] [WinForm] 取得 Excel 的所有 工作表 名稱,及儲存格內容 (使用Access Database Engine 2010)
http://shaurong.blogspot.tw/2016/11/c-winform-excel.html

沒有留言:

張貼留言