ExcelMerger-文創小農獨立手做 app 幫你合併 Excel 檔

更新於 發佈於 閱讀時間約 8 分鐘
raw-image
raw-image

ExcelMerger 是個簡單到不行的 app-它幫我們合併 Excel 檔,可以是合併一個檔案內的多個工作表,也可以是合併多個檔案。

raw-image

安裝完,跑起來的畫面只有一個簡單的拖放區,用戶可以把 Excel 檔從檔案總管拖進去,或是點擊拖放區用開檔案的方式把 Excel 檔讀進去,ExcelMerger 會把這些檔案合併到一個新檔案內,並跳出另存新檔的畫面,剩下的步驟就如同一般的 Windows 操作那樣,把合併好的新檔案放在你喜歡的地方。

雖然說這麼簡單,但還是有些事項要提醒的:

  • 為了保證格式的正確性,ExcelMerge 背後是呼叫 Excel 來做剪下貼上的工作,而不是用第三方工具,所以電腦內得有裝 Excel,也因此這個小 app 是 Windows 限定的。
  • 合併的基礎是每張表都有一致的欄位,這個小 app 並不具備人工智慧判斷欄位的性能,它其實只幫我們做重複性的複製、貼上而已。
  • 每張表的第一列通常是標題列,ExcelMerger 只會保留一次標題列,所以不用擔心合併後的檔案會出現重複的標題列,除此之外,它真的只有做複製、貼上,不會動到原始檔案的任何東西。
  • 本 app 只有在 Windows 10 / Microsoft 365 Excel、Excel 2019 測過,其他 Windows / Excel 版本能應該也能用,如果有問題請到它的專案頁回報。
  • 不含惡意程式,由文創小農獨立手做,天然、有機、無毒、無殘留,如果被防毒程式警告應該是誤判,原碼公開在 GitHub,未來若有新版本也都會發布在 ExcelMerger 的 GitHub 專案頁

至於為什麼要特地寫一支傻瓜 app 幫我們做 CTRL-C、CTRL-V,因為這樣的重複性動作對人類來說太慢也太乏味,又可能貼錯,這種機械性的重複作業正是程式最適合發揮的地方,另一個原因是我們家洪媽媽剛好有這樣的需求,幫家人提高工作效率之餘,也把 app 放出來,希望能援助到其他的地方媽媽。

開發筆記

這支看似簡單的 app 背後卻是用相當不對稱的 Rust + Python + JavaScript 三種語言來實現:

  • JavaScript 負責處理前端介面,前端框架是 Svelte,但幾乎完全沒用到 Svelte 的特性…。
  • Rust 的 Tauri 框架負責把 web 封裝成桌面程式,並且提供存取本機檔案的 API 給 JavaScript。
  • Python 負責後端呼叫 Excel 做開檔、合併、存檔的動作。

Excel 檔案處理

對「讀 Excel 檔案,並且合併」這個核心需求,原本是不考慮 Python 的,但搜尋了幾個 JavaScript 套件,例如 ExcelJS,用的很爽但後來才發現它不支援舊的 xls 檔案…最後試了 SheetJS,但終究因為下面的原因最後還是放棄在 JavaScript 內處理 Excel 檔:

  • SheetJS 不支援儲存格樣式,即便 SheetJS Pro 好像有支援。
  • 在 JS 處理某些舊的 xls 檔會遇到解碼問題,某些陳年的 Delphi / InterBase 程式輸出的 xls 檔案內的文字是 Big5,但在 JavaScript 被錯誤的以 UTF-8 解成亂碼,於是又要多一層調用 iconv-lite 來轉換。

這些問題當然都是走過路過才會遇過的,最終只好把這部分砍掉重練,改用 Python 直接呼叫 Excel,一勞永逸的解決掉解碼和樣式遺漏問題,但副作用就是從此這個 app 只能在 Windows 下使用了,並且用戶得先裝有 Excel,幸好對我們的目標用戶來說,應該九成九的人都滿足這兩點要求。

關於 Python 呼叫 Excel 的部分,可以參考另外一篇〈用 Python 寫 Excel 巨集〉。

前端介面

因為原本天真地以為可以用 JavaScript 就能處理好 Excel 檔案合併的工作,因此用 web 做 UI 再封裝成桌面程式便成了自然而然的選擇,即便後來改用 Python 處理 Excel 檔,然而幾經權衡之下,還是決定沿用 web 做 UI 的方案,除了因為 web UI 的頭已經洗一半,不想全部砍掉重練改用 wxPython 之外,受到公司同事的影響,個人也較偏好 web UI 的方案,布局比傳統 GUI 套件更自由,並且 web 的布局邏輯可以通用到瀏覽器端、桌面端和手機端,是一條可以共用的知識鍊,所以最終還是繼續採用以 web 為基礎的介面。

UX 方面,最初就確立了採用盡可能簡單的拖放式介面,這是受到過往使用某些 macOS app 的啟發,例如 Keka:

raw-image

一直以來我都被這樣的簡潔吸引著,這是近乎完美的簡潔,有人這樣詮釋完美:

Perfection is achieved not when there is nothing more to add, but when there is nothing left to take away.
所謂完美境界,並非加無可加,而是減無可減。
Antoine de Saint-Exupéry - Ch III: The Tool, Terre des hommes

之前寫過的〈談產品設計的 80/20 法則〉、〈談 POS 設計背後的原則〉也都有一貫的核心思想-盡可能地去除軟體中多餘的部分,減少選擇就是提高效率(在商業上也是如此)。

關於在 web 實現拖放介面的部分,可以參考另外一篇〈Web 處理檔案那些事-上傳篇〉。

封裝成桌面程式

想把 web 封裝成桌面程式,除了 Tauri 外,還有最多人用的 Electron 與 NW.js,最後選擇小眾的 Tauri 的原因是:

  • 使用簡單,Tauri 身為一個 2019 年底才問世的小朋友,相較於兩位大哥哥,它具有更簡單快速上手的特性。
  • 低耦合,Tauri 不綁定 Chromium,它是調用各 OS 自帶的 WebView 做顯示,因此 Tauri 編譯出來的安裝檔都非常小。
  • 還是低耦合,Tauri 底層是 Rust,另外提供一層 JavaScript 的 API 讓程式得以調用本機檔案系統之類的資源,底層的 Rust 也是可抽換的,未來有可能支援 Python / Nim 等其他語言做為底層。
  • 潮。

當然,上面我所看重的特性並不適用於全部的場景,在公司內可能更可能採用成熟又有富爸爸支持的 Electron,像 Tauri 這類還在發展中的工具,就留給我們這個富有實驗精神的文創小農獨立手做,天然、有機、無毒、無殘留的小 app 來用即可。

結語

希望 ExcelMerger 能幫助到有需要的朋友,喜歡的朋友請我幫按讚、訂閱、開啟小鈴鐺,一鍵三連,感恩。


留言
avatar-img
留言分享你的想法!
avatar-img
Leon的沙龍
15會員
64內容數
Where I go and what I get.
Leon的沙龍的其他內容
2024/04/10
Goolge OR-Tools 是一套以數學模型為基礎的求解器,相較於 OptaPlanner,OR-Tools 有更平緩的學習曲線,本文是 OR-Tools 最基礎的介紹。
Thumbnail
2024/04/10
Goolge OR-Tools 是一套以數學模型為基礎的求解器,相較於 OptaPlanner,OR-Tools 有更平緩的學習曲線,本文是 OR-Tools 最基礎的介紹。
Thumbnail
2024/04/09
這篇開箱另一套權限檢查工具 Vakt,相較於 Oso,Vakt 的規則直接以 Python 語法構成,不用再學 Oso 的特規語法,可以作為 Oso 的替代品。
Thumbnail
2024/04/09
這篇開箱另一套權限檢查工具 Vakt,相較於 Oso,Vakt 的規則直接以 Python 語法構成,不用再學 Oso 的特規語法,可以作為 Oso 的替代品。
Thumbnail
2024/04/09
SpiffWorkflow 是一個專門針對業務流程的流程引擎,它與商業 BPMN 產品有所區別,適合應用在自有專案中,並且需要內含稍微複雜的商業流程。例如,對於需要外部程式與前端配合才能真正讓用戶輸入決斷的場景,SpiffWorkflow 是一個適合的解決方案。
Thumbnail
2024/04/09
SpiffWorkflow 是一個專門針對業務流程的流程引擎,它與商業 BPMN 產品有所區別,適合應用在自有專案中,並且需要內含稍微複雜的商業流程。例如,對於需要外部程式與前端配合才能真正讓用戶輸入決斷的場景,SpiffWorkflow 是一個適合的解決方案。
Thumbnail
看更多
你可能也想看
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
Visual Basic for Applications(VBA)是一種功能強大的程式語言,廣泛用於自動化 Microsoft Office 應用程式中的重複性任務。在這篇教學文章中,我們將介紹如何使用 VBA 來新增、刪除和移動檔案。
Thumbnail
Visual Basic for Applications(VBA)是一種功能強大的程式語言,廣泛用於自動化 Microsoft Office 應用程式中的重複性任務。在這篇教學文章中,我們將介紹如何使用 VBA 來新增、刪除和移動檔案。
Thumbnail
專案產生大量又瑣碎的作業做處理,眼下要從iReport的設定檔(jrxml)擷取每一項套印參數出來,提供給別人做Excel公式的資料表進行作業。
Thumbnail
專案產生大量又瑣碎的作業做處理,眼下要從iReport的設定檔(jrxml)擷取每一項套印參數出來,提供給別人做Excel公式的資料表進行作業。
Thumbnail
1. 如何開始巨集(VBA) 2. 初步認識編寫VBA的面板 3. 儲存啟用VBA的活頁簿檔案
Thumbnail
1. 如何開始巨集(VBA) 2. 初步認識編寫VBA的面板 3. 儲存啟用VBA的活頁簿檔案
Thumbnail
這裡說的文書軟體涉及 開源軟體(程式碼開放)---可以讓會寫程式碼的同好共同開發。 PC版本LibreOffice、MAC版本Open Office
Thumbnail
這裡說的文書軟體涉及 開源軟體(程式碼開放)---可以讓會寫程式碼的同好共同開發。 PC版本LibreOffice、MAC版本Open Office
Thumbnail
在專案中,使用NuGet套件管理員來安裝Microsoft.Office.Interop.Excel套件。這個套件將幫助我們與Excel進行互動。
Thumbnail
在專案中,使用NuGet套件管理員來安裝Microsoft.Office.Interop.Excel套件。這個套件將幫助我們與Excel進行互動。
Thumbnail
如果想把文件與多人共同編輯,或多或少使用過 Google Drive 裡的試算表工具。不曉得你有沒有跟我一樣的經驗,使用過程中越用越氣,不管是表格插入與調整,或是文字格式編排,都不如Microsoft Excel 好用。這篇文章是想與你分享如何不在雲端中開啟,便可以與他人共用Excel檔案!
Thumbnail
如果想把文件與多人共同編輯,或多或少使用過 Google Drive 裡的試算表工具。不曉得你有沒有跟我一樣的經驗,使用過程中越用越氣,不管是表格插入與調整,或是文字格式編排,都不如Microsoft Excel 好用。這篇文章是想與你分享如何不在雲端中開啟,便可以與他人共用Excel檔案!
Thumbnail
如何透過 Google Sheet (試算表) 與 Google Doc (文件) 自動化文件套版流程?不需要寫任何程式,就可以完成自動化文件套版流程的串接設定,之後也不用再手動一一複製貼上製作文件,只要輸入一筆或多筆 Google Sheet 資料,文件套版就交給 NoCode 自動化完成吧!
Thumbnail
如何透過 Google Sheet (試算表) 與 Google Doc (文件) 自動化文件套版流程?不需要寫任何程式,就可以完成自動化文件套版流程的串接設定,之後也不用再手動一一複製貼上製作文件,只要輸入一筆或多筆 Google Sheet 資料,文件套版就交給 NoCode 自動化完成吧!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News