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

更新於 2024/11/05閱讀時間約 7 分鐘
圖片來自 Microsoft Design
ExcelMerger 是個簡單到不行的 app-它幫我們合併 Excel 檔,可以是合併一個檔案內的多個工作表,也可以是合併多個檔案。
安裝完,跑起來的畫面只有一個簡單的拖放區,用戶可以把 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:
一直以來我都被這樣的簡潔吸引著,這是近乎完美的簡潔,有人這樣詮釋完美:
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
14會員
64內容數
Where I go and what I get.
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Leon的沙龍 的其他內容
圖片來自 Thomas Koukas 這篇主題談的並不是《從 A 到 A+》的什麼廉價低配版,並不是。 之前寫過一篇〈你的程式是資產還是負債?〉,裡面分享了把程式比喻成負資產的危害,以及如何活化資產的幾種方式,這一篇我想延續「資產」的概念,分享我對正資產程式的成長循環的觀點。 即便我們把手中有活躍客
Martin Rue 說:「應用是資產,程式是負債」,因為應用替客戶解決問題而帶來經濟價值,但下面的程式卻是建構應用所必須付出的成本,後續的維護更是持續的成本支出,你同意他的觀點嗎?這裏談談我們對程式是資產或負債的觀點。
終於談到點餐了,這篇拖稿已久的文章談到我們對點餐的概念,怎樣才能兼顧多元化的店家與顧客需求,這裡有我們的解答。
控場是最重要也最花費時間的工作,我們用 prototype 重新整理與歸納桌位的資訊,讓最重要的相關資訊能一目瞭然,以及兼具視覺上的美觀及明確且一致的操作流程。
甘迺迪國際機場的 JFK AirTrain 和設計師 Adam Fisher-Cox 合作重新翻修了告示螢幕,分享這個案例看別的設計師對於個案的思考與流程。
介紹一下 MailPoet 和它的發信設定。
圖片來自 Thomas Koukas 這篇主題談的並不是《從 A 到 A+》的什麼廉價低配版,並不是。 之前寫過一篇〈你的程式是資產還是負債?〉,裡面分享了把程式比喻成負資產的危害,以及如何活化資產的幾種方式,這一篇我想延續「資產」的概念,分享我對正資產程式的成長循環的觀點。 即便我們把手中有活躍客
Martin Rue 說:「應用是資產,程式是負債」,因為應用替客戶解決問題而帶來經濟價值,但下面的程式卻是建構應用所必須付出的成本,後續的維護更是持續的成本支出,你同意他的觀點嗎?這裏談談我們對程式是資產或負債的觀點。
終於談到點餐了,這篇拖稿已久的文章談到我們對點餐的概念,怎樣才能兼顧多元化的店家與顧客需求,這裡有我們的解答。
控場是最重要也最花費時間的工作,我們用 prototype 重新整理與歸納桌位的資訊,讓最重要的相關資訊能一目瞭然,以及兼具視覺上的美觀及明確且一致的操作流程。
甘迺迪國際機場的 JFK AirTrain 和設計師 Adam Fisher-Cox 合作重新翻修了告示螢幕,分享這個案例看別的設計師對於個案的思考與流程。
介紹一下 MailPoet 和它的發信設定。
你可能也想看
Google News 追蹤
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
大家在逛華山的時候 應該多少會有印象,有一間「賽先生科學工廠」 裡面很多科學的有趣玩具,大人小孩都會沉迷在裡面 「小獵犬號」是賽先生科學工廠的旗下品牌 在松菸文創園區有專屬攤位 將科學優雅的一面呈現出來,融入生活儀式感 小獵犬號有一個手作課程和生態瓶有關 「生態瓶」又叫「華德箱」
Thumbnail
斷橋殘月派三篇完小說,文創實驗 - 無論何時加入觀看,都明其所以。短篇都市愛情小說,一個 等待了十年的癡漢,愛上已經有了九歲大兒子的女士...........
Thumbnail
融合了藝術與歷史 華山文創園區,一個融合了現代藝術與歷史文化的地方,總是吸引著各式各樣的人來這裡尋求靈感和放鬆。在這個充滿創意的氛圍中,我找到了位於一個角落的小酒館,決定坐下來進行一場街頭速寫。 樹蔭下 這家小酒館隱身於華山文創的樹蔭下,門口擺放著幾張木質桌椅,給人一種既溫馨又隨性的感覺。我選
Thumbnail
屬於文創小說,即無論甚麼時候加入觀看,都明其所以。一位特工的故事,他要到泰國捉拿毒販,從小單戀的表姐卻扯上了牽連。
Thumbnail
了解小鈴鐺的困擾 為了了解小鈴鐺對我的方格子交流互動造成的困擾,我特別花了時間將所有訊息列印出來整理。後來發現實在太多了,所以列印範圍只限於最近24小時之內的訊息,總計598筆。裡面有各式各樣的訊息,經過整理後,大約可以分為以下七類: 第一類:喜歡你的(304個) 這類訊息是系統通知你有誰喜歡
Thumbnail
如何解決問題 有朋友問我,我輔導了那麼多廠商,是如何解決他們的問題,讓我的文創會員覺得我很有方法解答他們的疑惑?其實,我並沒有太多太好的方法,而是因為同樣的問題碰到許多次,你就會去思考這個問題是如何產生的,那要怎麼解決?有沒有其他的方案?正反兩面去看問題,漸漸地就會有答案出來。 通常,我反而是回
Thumbnail
美國周三 (4 日) 公布有「小非農」之稱的 ADP 就業報告顯示,9 月美國私營部門就業人數經季節調整後增加 8.9 萬人,創 2021 年 1 月以來新低,遠遠低於經濟學家預期的 15 萬人,也不及修正後前值 18 萬人,該數值自 17.7 萬人上修。該份報告進一步證明美國吃緊的就業市場出現鬆動
Thumbnail
小說介紹 第一章   滿目皆是橘黃色調,帶著一股悠遠的古樸氣息。   藤床上,撫著一頭青絲的手漸漸慢了下來。   不知想到了什麼,帝朦眼眸閃過暗影,忽地挺起身子:「玄兒,你可知創世神永恆存在,不死不滅,唯有相滅才是死期。」   「造主,若是相滅……我和帝清會死?」小帝玄臉白了一陣,他從沒想過有一日自
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
大家在逛華山的時候 應該多少會有印象,有一間「賽先生科學工廠」 裡面很多科學的有趣玩具,大人小孩都會沉迷在裡面 「小獵犬號」是賽先生科學工廠的旗下品牌 在松菸文創園區有專屬攤位 將科學優雅的一面呈現出來,融入生活儀式感 小獵犬號有一個手作課程和生態瓶有關 「生態瓶」又叫「華德箱」
Thumbnail
斷橋殘月派三篇完小說,文創實驗 - 無論何時加入觀看,都明其所以。短篇都市愛情小說,一個 等待了十年的癡漢,愛上已經有了九歲大兒子的女士...........
Thumbnail
融合了藝術與歷史 華山文創園區,一個融合了現代藝術與歷史文化的地方,總是吸引著各式各樣的人來這裡尋求靈感和放鬆。在這個充滿創意的氛圍中,我找到了位於一個角落的小酒館,決定坐下來進行一場街頭速寫。 樹蔭下 這家小酒館隱身於華山文創的樹蔭下,門口擺放著幾張木質桌椅,給人一種既溫馨又隨性的感覺。我選
Thumbnail
屬於文創小說,即無論甚麼時候加入觀看,都明其所以。一位特工的故事,他要到泰國捉拿毒販,從小單戀的表姐卻扯上了牽連。
Thumbnail
了解小鈴鐺的困擾 為了了解小鈴鐺對我的方格子交流互動造成的困擾,我特別花了時間將所有訊息列印出來整理。後來發現實在太多了,所以列印範圍只限於最近24小時之內的訊息,總計598筆。裡面有各式各樣的訊息,經過整理後,大約可以分為以下七類: 第一類:喜歡你的(304個) 這類訊息是系統通知你有誰喜歡
Thumbnail
如何解決問題 有朋友問我,我輔導了那麼多廠商,是如何解決他們的問題,讓我的文創會員覺得我很有方法解答他們的疑惑?其實,我並沒有太多太好的方法,而是因為同樣的問題碰到許多次,你就會去思考這個問題是如何產生的,那要怎麼解決?有沒有其他的方案?正反兩面去看問題,漸漸地就會有答案出來。 通常,我反而是回
Thumbnail
美國周三 (4 日) 公布有「小非農」之稱的 ADP 就業報告顯示,9 月美國私營部門就業人數經季節調整後增加 8.9 萬人,創 2021 年 1 月以來新低,遠遠低於經濟學家預期的 15 萬人,也不及修正後前值 18 萬人,該數值自 17.7 萬人上修。該份報告進一步證明美國吃緊的就業市場出現鬆動
Thumbnail
小說介紹 第一章   滿目皆是橘黃色調,帶著一股悠遠的古樸氣息。   藤床上,撫著一頭青絲的手漸漸慢了下來。   不知想到了什麼,帝朦眼眸閃過暗影,忽地挺起身子:「玄兒,你可知創世神永恆存在,不死不滅,唯有相滅才是死期。」   「造主,若是相滅……我和帝清會死?」小帝玄臉白了一陣,他從沒想過有一日自