Account Name,Account Code,Type,Description
Cash,101,Assets,Checking account balance
Wages Payable,220,Liabilities,Amount owed to employes for hours not yet paid
Rent expense,560,Expenses,Cost of occupied rented facilities during accounting period
使用csv-parse来读取CSV文件
我们可以使用node-csv中的csv-parse来读取csv文件。Csv-parse包提供了很多种方法来解析csv文件–你可以使用callbask,也可以使用stream+callback或者sync的API,当然也支持async的api。本文就使用stream+callback api以及同步的sync api。
Stream+Callback API
我们先来创建一个文件index.js,并且创建parser:
var fs = require('fs');
var parse = require('csv-parse');
var parser = parse({columns: true}, function (err, records) {
console.log(records);
fs.createReadStream(__dirname+'/chart-of-accounts.csv').pipe(parser);
这里,我们使用了fs和csv-parse模块,然后创建parser,这里第二个参数就是callback函数,我们可以在这个callback中访问records,或者就像例子中一样先把record打印出来。
这里我们使用的参数不是强制的,你可以使用下面这些参数:
-
Delimiter
: 默认是逗号,假如你的文件中使用的是别的分隔符,比如分号;,或者管道|你可以设置相关的选项。
-
cast
:这个选项的默认值是false,这个是用来表示是否把字符串转换成本机的数据类型。比如,一个列的日期域可以转换成Date。
-
columns
:这个选项是用来表示你是否使用object格式来产生record。默认值是false,也就是records是通过parser用arrays来产生的。假如设为true,parser就是从第一行的column来推测。
最后就是用fs打开文件,然后把它传入到parser中。下面我们来运行试试看:
node index.js
结果如下所示:
'Account Name': 'Cash',
'Account Code': '101',
Type: 'Assets',
Description: 'Checking account balance'
'Account Name': 'Wages Payable',
'Account Code': '220',
Type: 'Liabilities',
Description: 'Amount owed to employes for hours not yet paid'
'Account Name': 'Rent expense',
'Account Code': '560',
Type: 'Expenses',
Description: 'Cost of occupied rented facilities during accounting period'
有了这个结果,你就可以对这些内容来进行各种处理了。
使用同步API
下面我们来使用同步API来实现:
var fs = require('fs').promises;
var parse = require('csv-parse/lib/sync');
(async function () {
const fileContent = await fs.readFile(__dirname+'/chart-of-accounts.csv');
const records = parse(fileContent, {columns: true});
console.log(records)
})();
'Account Code': '220',
Type: 'Liabilities',
Description: 'Amount owed to employes for hours not yet paid'
'Account Name': 'Rent expense',
'Account Code': '560',
Type: 'Expenses',
Description: 'Cost of occupied rented facilities during accounting period'
使用csv Stringify来写csv文件
下面我们来看看如何把数据写到csv格式的文件中。这里,我们使用csv-stringify包。我们假设你已经得到一些JSON格式的数据,然后想把它写入到csv文件中。
var someData = [
"Country": "Nigeria",
"Population": "200m",
"Continent": "Africa",
"Official Language(s)": "English"
"Country": "India",
"Population": "1b",
"Continent": "Asia",
"Official Language(s)": "Hindi, English"
"Country": "United States of America",
"Population": "328m",
"Continent": "North America",
"Official Language": "English"
"Country": "United Kingdom",
"Population": "66m",
"Continent": "Europe",
"Official Language": "English"
"Country": "Brazil",
"Population": "209m",
"Continent": "South America",
"Official Language": "Portugese"
node-csv是一个很小的模块来进行读写,转换csv数据的。我们使用了scv-parse模块来读取csv文件然后使用csv-stringify模块来转换成字符并写到文件中。
Post Views:
5,696