什麼時候會用到
- 每個月要交的表單格式固定,資料卻在另一份檔案裡,每次都手動一列一列複製。
- 兩邊的姓名或編號不完全一樣,來源多了一段括號或編號,用 VLOOKUP 對不起來。
- 主管機關給的空白表單有框線、合併儲存格與頁首頁尾,用一般工具填完就走樣。
- 這個月新增了幾個人,要接在表單原有的資料後面,格式要跟前面一樣。
- 要填的表單本身分成好幾張工作表,同一次要全部填完。
- 同一套轉貼規則每個月都要跑一次,不想每次重設一遍。
這個工具在做的一件事
把來源檔的欄位,依主鍵對到目標檔的正確那一列,再寫進去。來源與目標都可以有多張工作表, 對列與寫入是一張目標工作表算一次。
- 來源檔提供資料,它不會被修改。
- 目標檔是要交出去的那一份,工具產生的是它的複本。
- 主鍵決定哪一列對哪一列,欄位決定哪一欄填哪一欄。
- 來源有而目標沒有的列會被新增,不會被漏掉。
操作介面只有繁體中文
這個工具的操作介面固定是繁體中文,切換語言不會改變它。這是刻意的決定: 它的使用者是要交表格的行政與社福單位,介面用詞跟著表單走比跟著網站走更重要。 頁面上的說明仍然有中英文兩份。
四個步驟在做什麼
四個步驟同時攤在畫面上,由左到右做完就結束,不需要來回切換分頁。
| 步驟 | 要決定的事 |
|---|---|
| 1 檔案指定 | 來源檔、目標檔,以及要不要匯入一份之前匯出的設定 |
| 2 主鍵對應 | 要填哪幾張目標工作表,以及兩邊各用哪一欄對列 |
| 3 轉貼欄位 | 目標的哪一欄取自來源哪一張工作表的哪一欄,要不要做值的取代 |
| 4 匯出與轉換 | 轉換、下載,以及替這次的設定取個名字匯出成 JSON |
主鍵怎麼比對
對列的規則只有一條:目標表的主鍵值是來源表主鍵值的前綴時,兩列視為同一列。來源系統匯出的資料常常在姓名或編號後面多接一段流水號,這條規則就是為了那件事。
- 目標寫「王小明」,來源寫「王小明A123」,兩列會被對起來。
- 反過來目標寫得比來源長,不算相符。
- 比對前一律去掉空白與換行,跟這個工具其他的比對一致。
- 一個目標值對到多列時取最上面的那一列,並在訊息區留下警告。
- 一個來源列只會被用掉一次,兩列目標不會拿到同一筆資料。
- 目標主鍵是空白的列直接略過,那通常是表單預留的空列。
來源有、目標沒有的列會被新增
對不上任何目標列的來源列不是錯誤,是這次要新增的人。它們接在該目標工作表資料的 最後一列之後,順序照來源的順序。
- 新增的列會一併寫入主鍵,下次再跑這份設定時對得回來。
- 整列比照最後一列資料的格式複製,每一欄的框線都齊全。
- 目標有而來源沒有的列會被留著不動,並在訊息裡報出來有幾列。
轉貼欄位怎麼指定
一個轉貼欄位講完的是一句話:目標的哪一欄,取自來源哪一張工作表的哪一欄。 一個欄位只綁一張工作表的一欄。
- 不同欄位可以取自不同的來源工作表,電話取自基本資料、地址取自戶籍都可以。
- 欄位取自主鍵那張工作表時,直接讀對到的那一列。
- 欄位取自別張工作表時,用同一個主鍵欄位名在那張表上再查一次,這次要完全相同。
- 欄位從標題列上的真實標題選,也可以直接打欄號,例如 Y、AA、AQ,主鍵欄位也一樣。
- 不讓人自己打欄位名稱,打錯的名字不會報錯只會少填一欄。
- 目標欄位選定之後記的是欄號,選了 B 欄就寫 B 欄,不再回頭比對名稱。
- 來源欄位預設記的是欄位名,來源檔每個月重新匯出,欄位順序常常變,用名字才對得住。
- 標題空白或好幾欄同名時改記欄號,名字分不出是哪一欄,就固定抄那一欄。
- 目標那一欄的標題後來被改過時會提醒一次,但仍然照欄號寫,那是你選的位置。
- 對不到的欄位在畫面上整列標紅,並在轉換時說明它為什麼沒被填。
取代規則與空白的處理
同一件事在來源與目標裡寫法不同是常態。取代規則套在單一欄位上,由上往下比, 第一條符合的生效。
- 比對方式選「完全相同」時,來源值要跟條件一模一樣才算符合。
- 比對方式選「包含」時,條件是來源值的一部分就算符合。
- 沒對到的值預設照原樣填,也可以改成一律填入某個值。
- 不設規則時原值照搬,數字仍然是數字,Excel 那端加總得動。
- 來源是空白時那一格不寫,目標原本的內容保留,規則不會套到空白值上。
兩層標題與合併儲存格讀得出來
真實表單的標題很少只有一列。A 欄的標題直向合併兩列,B 欄與 C 欄上面共用一個類別標題, 下面才是各自的子標題,這種寫法工具認得。
- 標題列往下合併到第幾列,那整塊就是標題區塊,資料從區塊下面開始。
- 直向合併的欄位上下讀到同一格,名稱就是那一格,不會變成兩個同名欄位。
- 橫向合併的類別標題會與子標題併起來,讀成「餐飲/共餐」與「餐飲/送餐」。
- 被合併蓋住的格子本身是空的,取值時一律先解合併,不會讀成空白。
- 兩邊的欄位下拉列出來的就是這些名稱,所以看到什麼就是對到什麼。
標題列與資料起始列是怎麼推算的
實務上的工作表很少第 1 列就是欄位名稱,上面常常還有表單名稱、填表說明與跨欄合併的抬頭。 工具會先推測,推測值一律可以直接改。
- 標題列只在前 10 列、前 80 欄裡找,取讀得到最多個像欄位名的那一列,純數字的一列不算。
- 推測落在子標題那一列時會往上退回合併範圍的頂端,不會漏掉上面那一層。
- 資料起始列從整個標題區塊的下面開始找。
- 含有「合計」「總計」這類關鍵字的列會被跳過。
- 整列空白、但同一列有公式參照到更下方的列時也會被跳過,那是彙總列。
- 逐列計算的公式不會被跳過,那是資料列的一部分。
- 同一張來源工作表的標題列整份設定共用一個,在哪一步改都一樣。
填進表單為什麼格式不會壞
一般的 Excel 函式庫在存檔時會把整份活頁簿重新序列化, 頁首頁尾、圖形物件、印表機設定與 customXml 就是在那一步掉的。 政府調查表單掉了這些等於不能交。
這個工具的作法不一樣:把 xlsx 當成壓縮檔,只對目標工作表的內容做定點修改, 壓縮檔裡其餘每一個項目原封不動複製過去。因此下面這些全部不受影響。
- 儲存格樣式、框線與填滿色。
- 合併儲存格、欄寬與列高。
- 沒有被寫到的公式。
- 圖形、圖片與列印設定。
- 頁首頁尾,以及 .xlsm 檔裡的巨集。
下載的檔名一律加上轉換時間
轉好的檔案不會跟原檔同名,檔名固定是「原檔名_年月日_時分秒.原副檔名」, 例如 訪視紀錄_20260914_153012.xlsx。
- 時間是按下轉換的那一刻,用你電腦上的時鐘。
- 副檔名跟著原檔走,.xlsm 轉出來仍然是 .xlsm,巨集也還在。
- 同一份表單轉好幾次時,看檔名就知道哪一份最新,不會互相蓋掉。
設定要重複使用就匯出設定檔
這個工具不會用瀏覽器儲存空間記住你的設定,也不會自動載入上一次的內容。 要重複使用只有一條路:在第四步匯出成 JSON,下次在第一步匯入。
- 設定檔記的是目標工作表、兩邊的主鍵欄位、標題列、資料起始列、轉貼欄位與取代規則。
- 設定檔的名字可以自己取,不填就叫「轉貼設定」,匯入過的設定會預設沿用原本的名字。
- 載入時如果某張工作表在這次的檔案裡不存在,會被移除並告知,不做模糊猜測。
- 檔案路徑不會被記住,瀏覽器不能也不該自己開檔。
這個工具刻意不做的事
- 不記住任何設定。沒有帳號、沒有雲端、也不用瀏覽器儲存空間。 關掉分頁就什麼都沒有,要留就匯出設定檔。
- 不內建任何欄位或工作表名稱。一切從空的開始,全部由你當場指定。
- 不做模糊比對。只有前綴這一條規則,不猜錯字也不算相似度。
- 不支援舊版 .xls。請先用 Excel 另存新檔,工具會直接擋下並說明。
- 不覆蓋你電腦上的檔案。輸出一律是下載,同名時由瀏覽器自己處理。
你的檔案會不會離開這台電腦
不會。兩份檔案都是由瀏覽器直接讀進記憶體,比對、寫入與輸出都在同一個分頁裡完成, 沒有任何請求把內容送出去,也沒有任何東西被寫進瀏覽器儲存空間。 細節見隱私權政策。
常見問題
- 檔案會被上傳嗎?
- 不會。這個站沒有後端,也沒有任何轉檔用的 API。你選的兩份 Excel 是由瀏覽器直接讀進記憶體,比對與寫出也都在同一個分頁裡完成,下載的檔案是在你的電腦上組出來的。處理的常常是個資名冊,這件事是這個工具存在的前提。
- 主鍵的前綴相符是什麼意思?
- 目標表的主鍵值是來源表主鍵值的開頭時,兩列就視為同一列。目標寫「王小明」,來源寫「王小明A123」,這兩列會被對起來;反過來,目標寫得比來源長則不算相符。這是為了處理來源系統匯出時常在名字或編號後面多接一段流水號的情況。
- 一個目標值對到好幾個來源列會怎麼樣?
- 取最上面的那一列,並在訊息區留下一則警告,寫清楚是哪一列對到了幾筆。一個來源列只會被用掉一次,所以不會有兩列目標拿到同一筆資料。看到這則警告時通常代表主鍵挑得不夠獨特,換一個更能識別的欄位比較好。
- 來源有、目標沒有的人會被漏掉嗎?
- 不會,那些列會被當成新增,接在該目標工作表資料的最後一列之後,主鍵也會一起寫進去。新增的列整列比照最後一列資料的格式複製,每一欄的框線都齊全。
- 表單的標題有兩層,還有合併儲存格,讀得出來嗎?
- 讀得出來。標題列往下合併到第幾列,那整塊就當成標題區塊。直向合併的欄位上下讀到同一格,名稱就是那一格;橫向合併的類別標題會與底下的子標題併起來,讀成「餐飲/共餐」這種名字。被合併蓋住的格子在檔案裡其實是空的,工具取值時一律先解合併,所以不會把它讀成空白欄位。
- 來源那一格是空白的話,目標原本的值會被清掉嗎?
- 不會。來源是空白時那一格根本不會被寫入,目標原本的內容原封不動保留。取代規則也不會套到空白值上,所以「沒對到的一律填入」不可能把空白洗成預設值。
- 填進表單之後,原本的格式會不會壞掉?
- 不會。這個工具把 xlsx 當成壓縮檔處理,只改目標工作表的內容,壓縮檔裡其餘每一個項目原封不動複製過去。樣式、合併儲存格、欄寬、列高、公式、圖形、頁首頁尾與巨集因此都不受影響。一般的 Excel 函式庫做不到這件事,它們存檔時會把整份活頁簿重新序列化,頁首頁尾與圖形就是在那個時候掉的。
- 設定可以留到下次用嗎?
- 可以,但要自己匯出。這個工具不會用瀏覽器儲存空間記住你的設定,也不會自動載入上一次的內容。在第四步按「匯出設定」會得到一份 JSON,下次在第一步的「匯入設定」帶回來。
- 舊版的 .xls 可以用嗎?
- 不行,請先用 Excel 另存為 .xlsx 或 .xlsm。工具會直接擋下來並說明,不會假裝讀得進去然後產出一份空的結果。