Global

Members

WDataCsv

Description:
  • 讀寫CSV檔

Source:

讀寫CSV檔

Example
import wdc from './src/WDataCsv.mjs'

let fpIn = './g-test-in.csv'
wdc.readCsv(fpIn)
    .then((ltdtIn) => {
        console.log(ltdtIn)
        // => [ { NAME: 'Daffy Duck', AGE: '24' }, { NAME: 'Bugs 邦妮', AGE: '22' } ]
    })
    .catch((err) => {
        console.log(err)
    })

let ltdtOut = [{ name: '大福 Duck', value: 2.4 }, { name: 'Bugs 邦妮', value: '2.2' }]
let fpOut = './g-test-out.csv'
wdc.writeCsv(fpOut, ltdtOut)
    .then((res) => {
        console.log(res)
        // => finish
    })
    .catch((err) => {
        console.log(err)
    })

Methods

(async) parseCsv(inp, optopt) → {Promise}

Description:
  • 解析CSV字串

Source:
Example
import wdc from './src/WDataCsv.mjs'

let fp = './g-test-in.csv'

let c = fs.readFileSync(fp, 'utf8')

await wdc.parseCsv(c)
    .then((ltdt) => {
        console.log(ltdt)
        // => [ { NAME: 'Daffy Duck', AGE: '24' }, { NAME: 'Bugs 邦妮', AGE: '22' } ]
    })
    .catch((err) => {
        console.log(err)
    })

await wdc.parseCsv(c, { mode: 'mat' })
    .then((mat) => {
        console.log(mat)
        // => [ [ 'NAME', 'AGE' ], [ 'Daffy Duck', '24' ], [ 'Bugs 邦妮', '22' ] ]
    })
    .catch((err) => {
        console.log(err)
    })
Parameters:
Name Type Attributes Default Description
inp String

輸入CSV字串

opt Object <optional>
{}

輸入設定物件,預設{}

Properties
Name Type Attributes Default Description
mode String <optional>
'ltdt'

輸入回傳數據格式字串,可選ltdt(各數據列為物件)或mat(各數據列為陣列),預設ltdt

headers Boolean | Array <optional>

輸入標頭設定,給false代表無標頭列,給陣列代表無標頭列且以此陣列為欄名,不給則取第1列為標頭。因csv-parser於給true時會使各列成為_0,_1等溢出鍵之壞數據,故給true時視為不給。另mode為mat時本設定固定為false

skipLines Number <optional>

輸入解析前跳過列數整數。因csv-parser之註解列不計入行號,故與skipComments併用時計數基準會位移,兩者不建議同時使用

skipComments Boolean | String <optional>

輸入忽略註解列設定,給true代表跳過#開頭之列,給字串代表以該字元為註解符

separator String <optional>

輸入欄位分隔字元,因csv-parser僅取首個byte,故須為單字元

quote String <optional>

輸入引號字元,因csv-parser僅取首個byte,故須為單字元

escape String <optional>

輸入逃逸字元,因csv-parser僅取首個byte,故須為單字元

newline String <optional>

輸入行尾字元,因csv-parser僅取首個byte,故須為單字元

strict Boolean <optional>

輸入各列欄數是否須與標頭數相符布林值。因csv-parser於headers為false時會強制關閉本設定,故mode為mat時本設定無效

mapHeaders function <optional>

輸入標頭轉換函式。因csv-parser僅於解析標頭列時呼叫,故mode為mat時不會被呼叫。另回傳null時該欄將被整欄丟棄

mapValues function <optional>

輸入欄值轉換函式。mode為mat時其header參數恆為undefined

maxRowBytes Number <optional>

輸入單列位元組數上限整數

Returns:

回傳Promise,resolve回傳ltdt(各數據列為物件陣列)或mat(二維陣列),reject回傳錯誤訊息

Type
Promise

(async) readCsv(fp, optopt) → {Promise}

Description:
  • 讀取CSV檔,自動清除BOM

Source:
Example
import wdc from './src/WDataCsv.mjs'

let fp = './g-test-in.csv'

wdc.readCsv(fp)
    .then((ltdt) => {
        console.log(ltdt)
        // => [ { NAME: 'Daffy Duck', AGE: '24' }, { NAME: 'Bugs 邦妮', AGE: '22' } ]
    })
    .catch((err) => {
        console.log(err)
    })

wdc.readCsv(fp, { mode: 'mat' })
    .then((mat) => {
        console.log(mat)
        // => [ [ 'NAME', 'AGE' ], [ 'Daffy Duck', '24' ], [ 'Bugs 邦妮', '22' ] ]
    })
    .catch((err) => {
        console.log(err)
    })
Parameters:
Name Type Attributes Default Description
fp String

輸入檔案位置字串

opt Object <optional>
{}

輸入設定物件,預設{}

Properties
Name Type Attributes Default Description
mode String <optional>
'ltdt'

輸入回傳數據格式字串,可選ltdt(各數據列為物件)或mat(各數據列為陣列),預設ltdt

headers Boolean | Array <optional>

輸入標頭設定,給false代表無標頭列,給陣列代表無標頭列且以此陣列為欄名,不給則取第1列為標頭。因csv-parser於給true時會使各列成為_0,_1等溢出鍵之壞數據,故給true時視為不給。另mode為mat時本設定固定為false

skipLines Number <optional>

輸入解析前跳過列數整數。因csv-parser之註解列不計入行號,故與skipComments併用時計數基準會位移,兩者不建議同時使用

skipComments Boolean | String <optional>

輸入忽略註解列設定,給true代表跳過#開頭之列,給字串代表以該字元為註解符

separator String <optional>

輸入欄位分隔字元,因csv-parser僅取首個byte,故須為單字元

quote String <optional>

輸入引號字元,因csv-parser僅取首個byte,故須為單字元

escape String <optional>

輸入逃逸字元,因csv-parser僅取首個byte,故須為單字元

newline String <optional>

輸入行尾字元,因csv-parser僅取首個byte,故須為單字元

strict Boolean <optional>

輸入各列欄數是否須與標頭數相符布林值。因csv-parser於headers為false時會強制關閉本設定,故mode為mat時本設定無效

mapHeaders function <optional>

輸入標頭轉換函式。因csv-parser僅於解析標頭列時呼叫,故mode為mat時不會被呼叫。另回傳null時該欄將被整欄丟棄

mapValues function <optional>

輸入欄值轉換函式。mode為mat時其header參數恆為undefined

maxRowBytes Number <optional>

輸入單列位元組數上限整數

Returns:

回傳Promise,resolve回傳ltdt(各數據列為物件陣列)或mat(二維陣列),reject回傳錯誤訊息

Type
Promise

(async) writeCsv(fp, data, optopt) → {Promise}

Description:
  • 輸出數據至CSV檔案

Source:
Example
import wdc from './src/WDataCsv.mjs'

let ltdt = [{ name: '大福 Duck', value: 2.4 }, { name: 'Bugs 邦妮', value: '2.2' }]

let fp = './g-test-out.csv'

wdc.writeCsv(fp, ltdt)
    .then((res) => {
        console.log(res)
        // => finish
    })
    .catch((err) => {
        console.log(err)
    })
Parameters:
Name Type Attributes Default Description
fp String

輸入檔案位置字串

data Array

輸入數據陣列,為mat或ltdt格式

opt Object <optional>
{}

輸入設定物件,預設{}

Properties
Name Type Attributes Default Description
mode String <optional>
'ltdt'

輸入數據格式字串,可選ltdt或mat,預設ltdt

keys Array <optional>
[]

輸入指定欲輸出鍵值陣列,預設[]

kphead Object <optional>
{}

輸入指定鍵值轉換物件,預設{}

bom Boolean <optional>
true

輸入是否添加開頭BOM符號,預設true

Returns:

回傳Promise,resolve回傳成功訊息,reject回傳錯誤訊息

Type
Promise