【Javascript】檔案資料處理

更新 發佈閱讀 3 分鐘

案例情境

專案產生大量又瑣碎的作業做處理,眼下要從iReport的設定檔(jrxml)擷取每一項套印參數出來,提供給別人做Excel公式的資料表進行作業。

範例jrxml

範例jrxml


任務

想法:

  1.  把檔案讀取進來
  2.  逐行讀取,篩選特定標籤的那行,加入到要輸出的陣列
  3.  對陣列內容美化(去空白、取必要的參數)

檔案格式已經固定,剩下的部分查一下語法即可作業,分別用三種語言進行實作,順便比較一下其中的差異:

  • Python:沒有太多記憶語法上的負擔,檔案讀寫用不到其他模組的引入,小工具首選
  • Javascript:node均有同步/非同步兩中版本,小工具而言我選擇同步的方法,跟其他後端語言處理的體驗比較接近
  • Go讀寫檔案出來是byte陣列,較多實作細節要注意跟型別轉換


考慮工作上Javascript比較常用,留這版當記錄吧!

處理

  1. 副檔名為.mjs是因為ECMAScript對模組的一些支持做了改變,不想要npm --init建立完整的專案,只想跑個腳本且採用import的寫法。
  2. 讀取檔案的時候以utf-8作為編碼格式,結果為字串。
  3. 處理的內容就回去參照jrxml內的檔案格式,擷取需要的部分輸出成檔案。
  4. 作為小工具,暫不考慮異常處理,不然實際上會拋出錯誤的地方都要注意。
raw-image
import { readFileSync, writeFileSync } from "node:fs";

function main() {
const file = readFileSync("temp.jrxml", "utf-8");
const output = process(file);
writeFileSync("output.txt", output, "utf-8");
}

function process(file) {
return file
.split("\n")
.filter(line => line.includes("fieldDescription"))
.map(line =>line.substring(line.indexOf("DATA[") + 5, line.indexOf("]]")))
.join("\n");
}

main();


結果

raw-image



留言
avatar-img
留言分享你的想法!
avatar-img
Err500
12會員
78內容數
遇到的坑、解過的題、新知識的探索、舊時代的遺毒!? 工作後我發現,文件更新往往跟不上新需求的更迭,犯錯的歷史總是不斷重演。因此,我改變了方式,蒐集從程式上、系統上的每一次異常處理過程,好讓再次遇到相同的問題時能快速應變。此專題就是我的錯題本,期待日後不管在工作上或交流上遇到難題,都能輕鬆地應答:有什麼難的,我都踩過。
Err500的其他內容
2024/09/21
工作上固定頻率會收到User提供的設定需求資訊,檔案大多為excel的格式.xlsx或.xls,需要擷取內容的參數資訊,轉換撰寫sql語法寫入資料庫進行操作。 既然格式都是固定的,何不動手寫個小工具,一鍵完成轉換呢?
Thumbnail
2024/09/21
工作上固定頻率會收到User提供的設定需求資訊,檔案大多為excel的格式.xlsx或.xls,需要擷取內容的參數資訊,轉換撰寫sql語法寫入資料庫進行操作。 既然格式都是固定的,何不動手寫個小工具,一鍵完成轉換呢?
Thumbnail
2024/04/09
上次完成到基本的CRUD及權限控制,後面花了點時間把排序、分頁、圖表總覽的部分做完,其他細節是佈署上線,一般在公司內有專屬的部門處理,僅了解一下流程。
Thumbnail
2024/04/09
上次完成到基本的CRUD及權限控制,後面花了點時間把排序、分頁、圖表總覽的部分做完,其他細節是佈署上線,一般在公司內有專屬的部門處理,僅了解一下流程。
Thumbnail
2021/05/30
輸入畫面 為什麼要做驗證? 因為作為設計者,永遠不該預設使用者會乖乖照設計者的意思輸入。
Thumbnail
2021/05/30
輸入畫面 為什麼要做驗證? 因為作為設計者,永遠不該預設使用者會乖乖照設計者的意思輸入。
Thumbnail
看更多
你可能也想看
Thumbnail
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
Thumbnail
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
Thumbnail
專案產生大量又瑣碎的作業做處理,眼下要從iReport的設定檔(jrxml)擷取每一項套印參數出來,提供給別人做Excel公式的資料表進行作業。
Thumbnail
專案產生大量又瑣碎的作業做處理,眼下要從iReport的設定檔(jrxml)擷取每一項套印參數出來,提供給別人做Excel公式的資料表進行作業。
Thumbnail
一、泛用型的電子公文系統是為了解決底下幾種痛點: 痛點一:為了不同公文流程就要開發不同程式針對不同的公文流程常常因為資料格式的不一致,就要設計好幾種Table,哪怕只是差異一點點的欄位都必須重新設計好幾種不同的流程做因應,一般中小型的公司並沒有辦法有太多的軟體人員做開發...
Thumbnail
一、泛用型的電子公文系統是為了解決底下幾種痛點: 痛點一:為了不同公文流程就要開發不同程式針對不同的公文流程常常因為資料格式的不一致,就要設計好幾種Table,哪怕只是差異一點點的欄位都必須重新設計好幾種不同的流程做因應,一般中小型的公司並沒有辦法有太多的軟體人員做開發...
Thumbnail
檔案存取 路徑與檔案處理是很常用的功能,他們可以獨立運作,但是常常搭配一起使用,如果你處理的檔案是在當下的目錄,可以不需要使用路徑的功能單獨讀寫檔案,如果是想要做一些資料夾的管理,就需要理解路徑和檔案之間的關係。
Thumbnail
檔案存取 路徑與檔案處理是很常用的功能,他們可以獨立運作,但是常常搭配一起使用,如果你處理的檔案是在當下的目錄,可以不需要使用路徑的功能單獨讀寫檔案,如果是想要做一些資料夾的管理,就需要理解路徑和檔案之間的關係。
Thumbnail
關於json的資料交換格式請參考「【程式語言 - Javascript】輕量資料格式 JSON」, 我們常常會在使用套件的過程中發現回傳值的型態都會有「dict」的蹤跡, 為什麼呢? 因為動態、彈性、靈活, 不需要預先定義類別來明確指定每個欄位的內容, 但缺點就是文件必須寫清楚內容物是哪些, 否
Thumbnail
關於json的資料交換格式請參考「【程式語言 - Javascript】輕量資料格式 JSON」, 我們常常會在使用套件的過程中發現回傳值的型態都會有「dict」的蹤跡, 為什麼呢? 因為動態、彈性、靈活, 不需要預先定義類別來明確指定每個欄位的內容, 但缺點就是文件必須寫清楚內容物是哪些, 否
Thumbnail
NodeJS 學習來到 file systems 操作,在文檔操作上有分為同步跟異步的處理,接下來分階段介紹操作函數
Thumbnail
NodeJS 學習來到 file systems 操作,在文檔操作上有分為同步跟異步的處理,接下來分階段介紹操作函數
Thumbnail
您是否苦於網路資訊爆炸嗎? 教學何其多,但卻無法好好選擇的困境呢? 歡迎加入「🔒 阿Han的軟體心法實戰營」, 這裡不給您冗餘的雜訊, 單刀直入直接送您重點, 避開選擇障礙的困境, 讓您獲得業界標準的開發起手式, 成為Top 1的頂尖人才。 身為專業的軟體開發者的我們, 除了讓程式會動之外, 也
Thumbnail
您是否苦於網路資訊爆炸嗎? 教學何其多,但卻無法好好選擇的困境呢? 歡迎加入「🔒 阿Han的軟體心法實戰營」, 這裡不給您冗餘的雜訊, 單刀直入直接送您重點, 避開選擇障礙的困境, 讓您獲得業界標準的開發起手式, 成為Top 1的頂尖人才。 身為專業的軟體開發者的我們, 除了讓程式會動之外, 也
Thumbnail
JSON(JavaScript Object Notation)是一種常用的數據交換格式,用於在不同的應用程序之間傳遞結構化數據。在C#中,我們可以使用Newtonsoft.Json模組來處理JSON資料。
Thumbnail
JSON(JavaScript Object Notation)是一種常用的數據交換格式,用於在不同的應用程序之間傳遞結構化數據。在C#中,我們可以使用Newtonsoft.Json模組來處理JSON資料。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News