Excel轉ODS檔案

  • 3695
  • 0
  • 2023-10-26

遇到需求是要將報表轉檔成ODS格式,但原本的報表套件沒支援OpenDocument,所以找了一些解法......

因為報表套件沒辦法直接輸出 OpenDocument 檔案,所以打算先輸出 Excel,再將 Excel 檔轉成 ODS 檔案,所以下的關鍵字都是以 Excel 轉 ODS 為主。

客戶 / 公司有錢或資料量不大的選擇:

  1. Spire.XLS for .NET
    看到最多文章推薦的套件。
    免費版限制:一次可存取 5 張工作表和每張表 200 列的資料
     
  2. Gembox.Spreadsheet
    免費版限制:一次可存取 5 張工作表和每張表 150 列的資料
     
  3. Aspose.Cells
    免費版限制:會多產生一頁試用警告的工作表

以上三個套件都可以從 NuGet 安裝,而且我覺得說明文件也寫得很清楚,至少我都有用這幾套成功寫出 DEMO。
樣式的接近度我個人認為是 3>2>1,但差異不大,基本上都很接近原檔了。

如果不想花大錢買現成套件,可以考慮下面的選擇。

  1. Microsoft.Office.Interop.Excel

    伺服器可以安裝 Office 的話,可以考慮這個解法,更好的辦法是叫客戶直接開 Excel 另存新檔。
    不過 Interop 沒支援開啟 Stream​的方法(畢竟只是呼叫 Excel 軟體幫我們做事),
    所以必須先將報表輸出成 Excel 存在本機,再把它讀取出來,轉成 ODS 檔。
    詳細寫法可參考:https://blackcatj.blogspot.com/2017/04/caspnet-office-pdfodf.html

    優點:樣式與原檔最接近
    缺點:需要頻繁使用輸出 ODS 功能的話,要考慮這些暫存 Excel 的問題 (儲存位置、檔名、刪除時機......)
     
  2. 雙手萬能
    沒免費套件能用,何不自己寫?
    網路上查到最多資料都是提到這篇文章 How to Read and Write ODF/ODS Files
    他的做法是拿一張空白的 ODS 檔當範本,然後把資料的部分替換掉。
    所以這個做法最大的問題就是..... 你拉得漂漂亮亮的表格樣式全部都毀了
    ◢▆▅▄▃_崩╰(〒皿〒)╯潰_▃▄▅▆◣
    我沒有找到 Office Open XML 和 OpenDocument 樣式的轉換方式或相關對應文件,所以只能停在這邊。
    如果有人有相關資訊,歡迎提供給我!

    優點:免費!愛怎麼客製就怎麼客製
    缺點:樣式不會轉過來