使用 npm 或 yarn 安装:
npm install papaparse
或
yarn add papaparse
通过 CDN 引入:
<script src="https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.0/papaparse.min.js"></script>
import Papa from 'papaparse';
// 解析 CSV 字符串
const csvString = 'name,age\nAlice,30\nBob,25';
Papa.parse(csvString, {
header: true,
complete: function(results) {
console.log(results.data); // 输出: [{name: 'Alice', age: '30'}, {name: 'Bob', age: '25'}]
}
});
// 生成 CSV 字符串
const data = [
{ name: 'Alice', age: 30 },
{ name: 'Bob', age: 25 }
];
const csv = Papa.unparse(data);
console.log(csv); // 输出: 'name,age\nAlice,30\nBob,25'
// HTML
<input type="file" id="upload" />
// JavaScript
document.getElementById('upload').addEventListener('change', function(event) {
const file = event.target.files[0];
Papa.parse(file, {
header: true,
complete: function(results) {
console.log(results.data);
}
});
});
Papa.parse:解析 CSV 数据。
Papa.parse(csvString, config);
csvString
:要解析的 CSV 数据字符串或文件。config
:配置对象,用于自定义解析行为。Papa.unparse:生成 CSV 数据。
Papa.unparse(data, config);
data
:要转换为 CSV 的数据。config
:配置对象,用于自定义生成行为。Papa.stream:流式解析 CSV 数据。
Papa.stream(file, config);
file
:要解析的文件流。config
:配置对象,用于自定义解析行为。配置选项:
header
:是否将第一行作为表头。dynamicTyping
:自动将数值解析为数字类型。skipEmptyLines
:是否跳过空行。complete
:解析完成后的回调函数。error
:处理解析错误的回调函数。使用流式解析处理大型文件,逐行解析以节省内存:
Papa.parse(file, {
worker: true,
step: function(row) {
console.log('Row:', row.data);
},
complete: function() {
console.log('All done!');
}
});
异步解析大文件,避免阻塞主线程:
Papa.parse(file, {
worker: true,
complete: function(results) {
console.log('Finished:', results);
}
});