相关文章推荐
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模块来转换成字符并写到文件中。

 
推荐文章