Vue 项目中使用 Papa Parse 解析本地上传的 csv 文件,并在 el-table 中展示

一、安装并使用:

1. 安装papaparse库,用于解析CSV文件:

npm install papaparse

2. 在组件中使用:

  • 关键代码
import Papa from 'papaparse';
Papa.parse(file, config);
const csv = Papa.unparse(data[, config]);
  • 具体实例

页面结构:

<template>
<el-row
class="pd-tb-40"
:gutter="20"
>
<el-col :span="12">
<div class="upload-box mr-l-100">
<el-upload
action="#"
accept=".csv"
:multiple="false"
:limit="1"
:show-file-list="false"
:before-upload="beforeFileUpload"
>
<el-button
size="small"
type="primary"
>
点击上传
</el-button>
<div
slot="tip"
class="el-upload__tip"
>
<div class="upload-file-desc">
1、一次只能上传一份csv <br />
2、文件说明:
<p class="mr-l-20 tx-nowrap">·xxxxxxx</p>
</div>
</div>
</el-upload>
</div>
</el-col>
<el-col :span="12">
<el-table
:data="tableData"
style="width: 100%"
max-height="480"
>
<el-table-column
v-for="(header, index) in tableHeaders"
:key="index"
:prop="header"
:label="header"
></el-table-column>
</el-table>
</el-col>
</el-row>
</template>

逻辑部分:

<script>
import Papa from "papaparse";
export default {
data() {
return {
tableData: [],
tableHeaders: [],
};
},
methods: {
beforeFileUpload(file) {
// 使用 PapaParse 解析 CSV 文件
// const encodingList = ["utf-8", "gbk", "gb2312"];
Papa.parse(file, {
header: true,
skipEmptyLines: true,
encoding: "gb2312",
complete: result => {
// 解析完成后将数据存储到 tableData 中
this.tableData = result.data;
this.tableHeaders = Object.keys(result.data[0] || {});
},
error: error => {
console.error("CSV解析错误:", error.message);
},
});
return false; // 阻止上传行为
},
},
};
</script>

csv文件内容包含中文时需要注意编码,通过 encoding 属性设置,避免出现中文乱码。更多功能及配置可查看官方文档。

二、参考文档:

Papa Parse 官网地址
GitHub 地址

posted @   Li_pk  阅读(1551)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
历史上的今天:
2022-11-03 vscode实用功能汇总
2022-11-03 Vue常见问题汇总
2022-11-03 CSS常用功能汇总
点击右上角即可分享
微信分享提示