你在工作中是不是总得导入Excel数据?别担心!我这儿有个网红神器——Vue JavaScript框架。它里面有很多好用的功能~接下来,我就教你们怎么用这两个工具和Excel.js库,轻轻松松解决批量数据导出的问题。
安装Excel.js库
首先,得下载个叫Excel.js的程序库!借助npm这个小助手就能轻松解决!方法,超级简单……
bash npm install exceljs
搞定了!别忘了把ExcelJS装到Vue小部件里面去,再加个导出函数就万事大吉啦~数据导出就是这么简单!
引入Excel.js库
想用就用,用vue搭个ExcelJS的表格模块儿,简单点儿说就是这两步:打开引用咯。
javascript 用ExcelJS导入! 这样,我们就可以在Vue组件中使用Excel.js库了。 创建导出函数 咱赶紧动手搞个导出函数,把数据给导出去!看看这个例子: exportData() { 咱们动手,用ExcelJS搭建个新表,就叫它'工作簿'好了。 在工作簿中新建个表,名字叫"Sheet 1"。 worksheet.columns = [ 样式表这么设置:给“编号”那个字段留个位置,宽度设为10。 名字那里,输入你的姓名,宽度最好别超过32。 你看这里,表头写着“年龄”俩大字,谁都看得懂。然后“age"按大小排序,简单明了。再来看看这十个格子,大小正好,用得特别舒服,设计真的很走心。 ];npm install exceljs --savethis.data.forEach(item => {
worksheet.addRow(item);
});
成功存入Excel缓存了哦, 快来瞧瞧有啥。
咱们试下新Blob玩法!先弄个Blob出来,加好缓冲区后,别忘了把文件类型设成"应用程序/vnd.openxmlformats-officedocument.spreadsheetml.sheet"哈。
咱们先创建个链接,用标签名叫。
直接把链接的路径改成刚加载好的那个大文件(blob)哈。
link.download = 'data.xlsx';
link.click();
}
这个小程序,首先运用了一点exceljs的代码,调出一堆数据来;然后在 "data"那儿搞了个表格玩儿~接着,在 "exportData"那儿我们新造了个Excel表格,放进workbook和worksheet里头,还给它起了个名字、填了点东西!最后,就靠着exceljs的魔法,让这表格变成真正的Excel文档!点击下载链接,轻松保存到你的电脑上~import ExcelJS from 'exceljs'; export default { data() { return { // 数据数组 data: [ { name: '张三', age: 18, gender: '男' }, { name: '李四', age: 20, gender: '女' }, { name: '王五', age: 22, gender: '男' }, ], }; }, methods: { exportData() { const workbook = new ExcelJS.Workbook(); const worksheet = workbook.addWorksheet('Sheet 1'); // 表头 worksheet.columns = [ { header: '姓名', key: 'name', width: 10 }, { header: '年龄', key: 'age', width: 10 }, { header: '性别', key: 'gender', width: 10 }, ]; // 表数据 this.data.forEach((item, index) => { const rowIndex = index + 2; worksheet.addRow({ name: item.name, age: item.age, gender: item.gender, }); }); // 导出Excel workbook.xlsx.writeBuffer().then((buffer) => { const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); const url = URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; link.download = 'data.xlsx'; link.click(); URL.revokeObjectURL(url); }); }, }, };触发导出操作
在Vue组件中的交互,简直简单到家了!像按钮这样的交互控件,直接在模板上添加点击开关就能搞定。
html按下那个小按钮,你的文档就会瞬间跑到电脑上的Excel表里!不过别以为只是按个钮那么简单,其实整个过程都是在网页上完成的。所以,想要成功下载的话,得先了解下什么是Blob和URL这些新概念。首先,你得把做好的Office文件存进浏览器的缓存里,变成Blob的形式。然后再让它变成Excel文件就行。
处理数据格式
处理数据可得注意,尤其是日期跟数字啥的。还好Excel.js里有好多好用的API能解决这个问题!比如我们咋给日期换个样式?
咱们就在这纸上加点字儿,写点啥吧:找个名叫’timothy lee’的人,他都30岁,生日是1987年6月25日。
哈喽,挺简单的。就用个公式就行了:worksheet.getColumn(‘birthday’).numFmt=’dd/mm/yyyy’;搞定!
通过设置numFmt属性,我们可以指定日期的显示格式。
处理大文件导出
处理大量的数据导出,别忘了快才是关键!我得告诉你,用Excel.js这个小工具,你能迅速搞定巨型文件导出。而且它还有个牛逼的功能——流式写入!下面就教你怎么轻松学会:
试下这个Excel的XLSX编辑器,特别好用!
filename: ‘data.xlsx’
});
赶紧试下这个功能,马上你的Excel里就能出现一张新表格,就叫它”表格1″!
worksheet.columns = [
这是打上了“编号”标签的部分,宽度设定为10格!
快!名字填这边,然后在那边也填个”姓名”,宽度选32就行了。
“年龄段,宽度调整到10个字符,这样看起来更舒适。”
];
this.data.forEach(item => {
把物品放到表格里,搞定!
搞定提交,溜!(wbfile.commit())
成功写入文件了!
用WorkbookWriter和commit这俩神器,记笔记就是小菜一碟!而且还能让大文件导出飞速。
处理异常情况
导出数据有时候挺烦人的!要特别留意那些特殊状况,比如说数据是空白啦或者格式有误之类的。我来教你怎么搞定它们吧:
if (this.data.length === 0) {
alert(‘数据为空,无法导出’);
return;
}
try {
咱们先来整出个Excel工作簿,这样方便操作。
新表叫’Sheet 1’,我给它加进去。
worksheet.columns = [
文档开头记得插个”ID”!还有那个”关键字段”要填成“id”,它的长度是10位哟~
你的名字是啥?宽度设置为32个字符哈。
这就是那个年龄字段,它的宽度是10。
];
this.data.forEach(item => {
worksheet.addRow(item);
});
稍等我答复下再告诉你。这样你容易明白点,看得一清二楚。
让我们试试这个新功能,把”blop”这个名字转化为应用程序中的 “应用程序/vnd.openxmlformats-officedocument.spreadsheetml.sheet” 格式文件怎么样?
马上动起来,用document.createElement(‘a’)做个链接!
简单!把那个大文件(blob)里面的链子换成新的就搞定了。
link.download = ‘data.xlsx’;
link.click();
} catch (error) {
导出出错!原因就留给我们检查咯~
试试 try-catch,让我们的数据导出更稳妥了。就算出问题也不怕,照样妥善搞定!
总结
想学会如何用Vue和Exceljs结合来传输数据?别怕,这篇简单教程保证让你轻松上手,无论是表格数据还是其他类型的数据都没问题!读完之后,你就能成功地把数据导出到Excel并保存好。希望这篇小文能帮你解决Vue开发过程中遇到的小困扰~
小伙伴们,有没有遇到头疼的数据导出难题?都是怎么解决的呀?
评论0