前端xlsx导入与导出

最近在做项目中,后端偷懒不做导出功能,让我前端实现,所以在这里记录下前端导出功能,顺便补上导入功能。

项目时用vue开发的 所以在此我把导入导出功能封装到一个mixin中,需要用到直接引入调用方法一步到胃😝

首先引入xlsx

 npm i xlsx

之后写一个mixin专门处理导入导出功能 - 代码如下: 
/**
 *  导出的Mixin方法等...
 */
import XLSX from "xlsx";

// 定义一个mixin对象
const exportMixin = {
    methods: {
		/**
		 * 导出 Excel 表
		 * 	@param {array} title 	文件名称
		 *  @param {array} data 	二维数组 [0]表示表头
		 * data 例子:
		 * 	[
				['表头1', '表头2', '表头3'],
				['内容1', '内容2', '内容3'],
				['内容11', '内容22', '内容33'],
			]
		 * */
		handleExportExcel(data, title) {
			const worksheet = XLSX.utils.aoa_to_sheet(data);
			const workbook = XLSX.utils.book_new();
			XLSX.utils.book_append_sheet(workbook, worksheet, title);
			XLSX.writeFile(workbook, `${title}.xlsx`);
		},

		/**
		 * 获取导入xlsx表格的数据
		 * */
		getImportExcelData(file) {
			return new Promise(resolve => {
				// 判断格式
				const type = file.name.substring(file.name.lastIndexOf(".") + 1);
				if(type !== 'xlsx' && type !== 'xls') {
					resolve(null);
				}

				const fileReader = new FileReader();
				fileReader.onload = event => {
					try {
						const data = event.target.result;
						const workbook = XLSX.read(data, { type: "binary" });
						// 取第一张表
						const xlsxData = XLSX.utils.sheet_to_json( workbook.Sheets[workbook.SheetNames[0]]);
						// 把解析出来的Excel数据返回
						resolve(xlsxData);
					} catch (e) {
						resolve(null);
					}
				}
				fileReader.readAsBinaryString(file);
			});
		},
	}
}


// 导出...
export default exportMixin;
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
由于JQ并没有内置的excel导入导出功能,需要借助其他插件或库来实现。 1. 前端Excel导入 可以使用SheetJS库来实现前端Excel导入。具体步骤如下: 1. 引入SheetJS库。可以从官网下载或者使用CDN引入。 2. 使用FileReader读取文件内容,并将文件内容转换为二进制字符串。 ``` var reader = new FileReader(); reader.onload = function(e) { var data = e.target.result; var workbook = XLSX.read(data, {type: 'binary'}); // 处理Excel内容 }; reader.readAsBinaryString(file); ``` 3. 将二进制字符串解析为Excel对象,并对数据进行处理。 ``` var sheet_name_list = workbook.SheetNames; var sheet = workbook.Sheets[sheet_name_list[0]]; var json_data = XLSX.utils.sheet_to_json(sheet); // 处理json_data ``` 2. 前端Excel导出 可以使用js-xlsx库来实现前端Excel导出。具体步骤如下: 1. 引入js-xlsx库。可以从官网下载或者使用CDN引入。 2. 创建工作簿对象,并设置工作表内容。 ``` var worksheet = XLSX.utils.json_to_sheet(json_data); var workbook = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1"); ``` 3. 将工作簿对象转换为二进制字符串,并将其下载到本地。 ``` var wbout = XLSX.write(workbook, {bookType:'xlsx', type: 'binary'}); function s2ab(s) { var buf = new ArrayBuffer(s.length); //convert s to arrayBuffer var view = new Uint8Array(buf); //create uint8array as viewer for (var i=0; i<s.length; i++) view[i] = s.charCodeAt(i) & 0xFF; //convert to octet return buf; } saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), 'example.xlsx'); ``` 注意:以上代码中的saveAs函数用于将二进制数据保存到本地文件中,需要引入FileSaver库。可以从官网下载或者使用CDN引入。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值