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

更新於 發佈於 閱讀時間約 8 分鐘
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
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 自動化完成吧!
Thumbnail
合併 Excel 表讓你力不從心嗎?讓 ExcelMerger 幫助你,全台灣第一個具有文創、小農、獨立、手做元素的 app 終於姍姍來遲了!
Thumbnail
合併 Excel 表讓你力不從心嗎?讓 ExcelMerger 幫助你,全台灣第一個具有文創、小農、獨立、手做元素的 app 終於姍姍來遲了!
Thumbnail
心血來潮突然想用google excel來記錄每天的花費 有一些小地方想用指令碼來方便自己作業
Thumbnail
心血來潮突然想用google excel來記錄每天的花費 有一些小地方想用指令碼來方便自己作業
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News