电子表格工具SheetJS,可用于解析、生成Excel等。
官方文档:SheetJS中文文档、SheetJS官方文档。
下边案例参考自:csdn
引用
npm下载:
npm install xlsx
cdn引入:
<script lang="javascript" src="https://unpkg.com/xlsx"></script>
解析excel
使用SheetJs将excel中的数据转换为json对象。(数据保存在数组中)
elementUI组件,选择excel文件:
<el-upload :on-change="fileChange2" :show-file-list="false" :auto-upload="false" action="#"
style="display: inline-block;">
<el-button type="primary"
style="border:0;font-size: 3.25rem!important;width: 100vw;height: 100%;padding: 1.625rem 4.25rem;">
选择文件
</el-button>
</el-upload>
函数fileChange2如下:
fileChange2(file) {
var _vue = this;
var reader = new FileReader();
reader.onload = function(e) {
var data = e.target.result;
var workbook = XLSX.read(data, {
type: 'binary'
});
workbook.SheetNames.forEach(sheetName => {
var XL_row_object = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[
sheetName]);
if (XL_row_object.length > 0) {
_vue.handelData(XL_row_object);
return;
}
})
};
reader.readAsBinaryString(file.raw);
},
handelData(data) {
console.log(data);
}
生成excel
使用json数据生成excel文件。
toExcel() {
var _vue = this;
_vue.datas.unshift({
user_name: '姓名',
user_code: '账号',
duty: '职务',
r: '序号'
});
var worksheet = XLSX.utils.json_to_sheet(_vue.datas, {
header: ['r', 'user_name', 'user_code', 'duty'],
skipHeader: true
});
var range = XLSX.utils.decode_range(worksheet['!ref']);
for (var row = range.s.r; row <= range.e.r; row++) {
for (var columns = range.s.c; columns <= range.e.c; columns++) {
var cellName = XLSX.utils.encode_cell({
c: columns,
r: row
});
worksheet[cellName].z = '@';
}
}
var new_workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(new_workbook, worksheet, 'Sheet1');
XLSX.writeFile(new_workbook, '财务部拥有角色的账号.xlsx');
}
除了可以生成excel文件,还支持:
XLSX.utils.sheet_to_csv:生成CSV格式
XLSX.utils.sheet_to_txt:生成纯文本格式
XLSX.utils.sheet_to_html:生成HTML格式
XLSX.utils.sheet_to_json:输出JSON格式
等等
|