开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 3552|回复: 0

Vue框架下如何轻松实现Excel、PDF导出?

[复制链接]

0

精华

8

贡献

1737

赞扬

特约版主

帖子
583
软币
4484
在线时间
273 小时
注册时间
2019-2-21
发表于 2020-12-17 09:36:03 | 显示全部楼层 |阅读模式
项目需求:开发一套基于Vue框架的工程档案管理系统,用于工程项目资料的填写、编辑和归档,经调研需支持如下功能:
  • Excel报表的导入、导出
  • PDF文件的导出
  • 打印表格
经过技术选型,项目组一致决定通过表格组件SpreadJS 来实现。以下是实现Excel报表的导入导出、PDF导出、打印表格的一些思路,供大家参考:
环境介绍
  • 后台:Spring Boot 2.x
  • 前台:vue、vue-element、webpack、iview、Vuex.js 2.x
  • 组件:SpreadJS v11
项目运行效果:
如下是本地的一个Excel文件:

通过SpreadJS,导入到项目中的效果:

项目中应用了SpreadJS V12.2.5的版本(目前官网SpreadJS的最新版本是V14),其中package.json 需要添加的引用如下:
[JavaScript] 纯文本查看 复制代码
"dependencies": {
"@grapecity/spread-excelio": "12.2.5",
"@grapecity/spread-sheets": "12.2.5",
"@grapecity/spread-sheets-pdf": "^12.2.5",
"@grapecity/spread-sheets-print": "12.2.5",
"@grapecity/spread-sheets-resources-zh": "12.2.5",
"@grapecity/spread-sheets-vue": "12.2.5",
"@grapecity/spread-sheets-charts": "12.2.5" ,
"file-saver": "2.0.2",
"jquery": "2.2.1",
"vue": "^2.5.2",
"vue-router": "^3.0.1"
},

执行npm install 命令安装SpreadJS 组件导入导出Excel报表
  • 安装相关的资源包: "\@grapecity/spread-excelio"、 "file-saver"
  • 在页面中引入: import ExcelIO from '\@grapecity/spread-excelio'、import FaverSaver from 'file-saver'
  • 如下代码可实现导入导出Excel:
[JavaScript] 纯文本查看 复制代码
exportXlsx () {
let ex = new ExcelIO.IO()
let json = this.spread.toJSON()
ex.save(json, function (blob) {
FaverSaver.saveAs(blob, 'export.xlsx')
}, function (e) {
console.log(e)
})
},
importXlsx(){
let self = this;
var excelIO = new ExcelIO.IO();
console.log(excelIO);
const excelFile = document.getElementById("fileDemo").files[0];
excelIO.open(excelFile, function (json) {
let workbookObj = json;
self.spread.fromJSON(workbookObj);
}, function (e) {
alert(e.errorMessage);
});
}


导出PDF的注意事项
  • 安装相同版本的 PDF包: "\@grapecity/spread-sheets-pdf"
  • 在需要打印的页面引入该包: import "\@grapecity/spread-sheets-pdf";
  • 引入该包需要注意引入顺序,先引入 \@grapecity/spread-sheets和 grapecity/spread-sheets-print
  • 需引入第三方插件file-saver : import FaverSaver from 'file-saver'
  • 如下几行代码可实现导出PDF功能
[JavaScript] 纯文本查看 复制代码
savePdf(){
let self = this;
let jsonString = JSON.stringify(self.spread.toJSON());
let printSpread = new GC.Spread.Sheets.Workbook();
printSpread.fromJSON(JSON.parse(jsonString));

printSpread.savePDF(function(blob) { 
// window.open(URL.createObjectURL(blob)) 
FaverSaver.saveAs(blob, 'Hello.pdf')
}, function(error) {
console.log(error);
}, {
title: 'Print',
}); 
}


纯前端表格控件SpreadJS,可满足 .NET、Java、App 等应用程序中的 Web Excel 组件开发、数据填报、在线文档、图表公式联动、类 Excel UI 设计等业务场景,并在数据可视化、Excel 导入导出、公式引用、数据绑定、框架集成中无需大量代码开发和测试,极大降低了企业研发成本和项目交付风险。
本文转载自葡萄城

回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2021-9-25 02:55

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表