匯入匯出功能:系統與 Excel 的和平共存

做系統的人有個常見的天真想法:「系統上線之後,大家就不用 Excel 了。」我們可以很誠實地告訴你:不會。上線十年的系統,使用者還是會要求「這個列表可以匯出 Excel 嗎」。與其對抗這件事,不如把匯入匯出做好——它是系統與 Excel 和平共存的橋樑,也是決定導入成敗的隱形功能。

為什麼使用者永遠需要 Excel

三個很實際的理由。第一,老闆要的報表格式永遠在變,系統再怎麼客製都追不上「這次幫我多加一欄」的速度,匯出後自己拉樞紐分析最快。第二,跟外部夥伴交換資料——供應商的報價單、物流商的對帳單——對方給的就是 Excel,你不可能要求全世界都串 API。第三,初期建檔:一個有幾千筆商品或會員的公司要換系統,不可能叫員工一筆一筆手 key。

所以我們在規劃任何系統時,匯入匯出不是「之後再說的加值功能」,而是第一版就要有的基礎設施。這也是我們在什麼時候該把 Excel 換成系統那篇提過的觀念:換系統不是消滅 Excel,是把「單一事實來源」搬進系統,Excel 退回工具的位置。

匯入功能的三道防線

第一道:範本設計

不要讓使用者自由發揮欄位,一定要提供可下載的標準範本。範本裡的細節很多:欄位名稱要用中文而不是資料庫欄名、必填欄位要標清楚、日期格式要在範本裡放一筆示範資料。我們踩過的坑是日期——Excel 會自作聰明把「2025-01-05」轉成它自己的日期序列值,不同電腦的地區設定還會產生不同結果。後來我們的做法是範本中日期欄直接設為文字格式,並在匯入時同時容忍多種常見寫法。

第二道:先驗證,後寫入

最糟糕的匯入體驗是:傳了一千筆,系統寫到第三百筆遇到錯誤就停了,前三百筆進去了、後七百筆沒進,資料變成半生不熟。正確做法是兩階段:先整批驗證,把所有錯誤一次列出來;全部通過才真正寫入,任何一筆失敗就整批不進。技術上這叫交易(transaction),對使用者來說就是「要嘛全成功,要嘛全失敗」,永遠不會有中間狀態。

第三道:錯誤回報要講人話

「第 47 列匯入失敗」是廢話,使用者打開檔案還要自己猜哪裡錯。有用的錯誤訊息長這樣:「第 47 列:商品編號 A102 已存在,若要更新請改用更新匯入」「第 89 列:售價欄位是『面議』,必須是數字」。更好的做法是讓系統直接產出一份「錯誤標註版」的 Excel 讓使用者下載,錯的儲存格旁邊寫明原因,改完再傳一次。

匯入功能的品質,取決於它怎麼處理錯的資料,而不是怎麼處理對的資料。

匯出的兩個實務細節

匯出看似簡單,有兩個坑。一是編碼:匯出 CSV 給 Windows 上的 Excel 開,沒處理好編碼就是滿螢幕亂碼,這個問題二十年了還在發生,直接匯出 xlsx 格式最省事。二是資料量:使用者按下「全部匯出」時,可能是十萬筆,同步處理會讓網頁轉圈到逾時。量大的匯出應該改成背景產檔,完成後通知下載,不要讓使用者盯著進度條賭運氣。

別忘了權限

最後提醒一件常被忽略的事:匯出等於資料離開系統。會員名單、成本價、營收明細,一旦匯出成檔案就不受系統權限保護了。哪些角色能匯出哪些資料、匯出行為要不要留紀錄,規劃時就要想清楚。我們的做法是匯出一律寫入操作紀錄,含時間、人、匯出範圍——出事的時候,這是唯一能追的線索。

如果你正在評估把手上的 Excel 作業系統化,匯入匯出的設計品質是檢驗廠商的好題目。歡迎參考我們的客製化系統與 SaaS 服務

這類問題,我們每天都在自己的產品上解

免費 30 分鐘線上諮詢・先釐清方向,不推銷・一個工作天內回覆

我要詢案

← 更多觀點