前端导出表格之XLSX使用

导入xlsx

npm install xlsx

XLSX官网

引用

import XLSX from xlsx

H5 table 导出表格

  1. 在页面创建table
<table border="" id="table">
    	<tbody>
		<tr>
			<td rowspan='2'>表头1</td>
			<td colspan="2">表头2</td>
		</tr>
		<tr >
		  <td>A1</td>
		  <td>B1</td>
		</tr>
		<tr>
		   <td>A2</td>
		   <td>B21</td>
                   <td>B22</td>
		</tr>
	</tbody>
</table>
  1. 导出方法
 downloadExl () {
                // 初始化
                var workbook = XLSX.utils.book_new();
                // 数据
                var ws1 = XLSX.utils.table_to_sheet(document.getElementById('table'));
                // 这是  Sheet
                XLSX.utils.book_append_sheet(workbook, ws1, "Sheet1");
                XLSX.writeFile(workbook, 'table.xlsx');
                
          }

3.结果
得到如下图:

202007311639.png

跟页面显示的一模一样的数据以及样式。

多个sheet表格导出

  1. 在创建一个table2。
  2. 导出方法
  function downloadExlSheelt () {
	  var workbook = XLSX.utils.book_new();
	   
	  var ws1 = XLSX.utils.table_to_sheet(document.getElementById('table'));
	  XLSX.utils.book_append_sheet(workbook, ws1, "Sheet1");
	  var ws2 = XLSX.utils.table_to_sheet(document.getElementById('table2'));
	  XLSX.utils.book_append_sheet(workbook, ws2, "Sheet2");
	  XLSX.writeFile(workbook, filename); //导出Excel
	   
	   }

3.结果得到2个Sheet不同数据。

Sheet 的名称不可以一样

数组数据导出

到数据多时,页面table就需要分页,但是用table导出表格,会出现数据丢失。因此可考虑数组导出。

例子方法
  function downloadExle () {
	var filename = "file.xlsx"; //文件名称
	        var data = [ ['表头1','表头2'],['','z','b'], [ 1,2,3],[true, false,"sheetjs"],["foo","bar",new Date("2014-02-19T14:30Z"), "0.3"], ["baz", null, "qux"]];  //数据,一定注意需要时二维数组
	        var ws_name = "Sheet1"; //Excel第一个sheet的名称
	        var wb = XLSX.utils.book_new(), 
	        var ws = XLSX.utils.aoa_to_sheet(data);
	        XLSX.utils.book_append_sheet(wb, ws, ws_name);  //将数据添加到工作薄
	        XLSX.writeFile(wb, filename); //导出Excel
	}

结果如图:
202007311600.png

如果想导出都多个sheet的表格,可参考上一个方法

导出数据格式为 二维数组,与导出的表格一一对应。

Json 数据导出

1.下载

npm install -S file-saver xlsx
npm install -D script-loader

  1. 项目中新建一个文件夹:(vendor—名字任取)
    里面放置两个文件Blob.js 和 Export2Excel.js。
    下载地址: https://github.com/WtecHtec/WorkNotes.git

3.导出方法

export2Excel() {
      require.ensure([], () => {
      // 引用 步骤 2 文件夹
         const { export_json_to_excel } = require(‘../../vendor/Export2Excel’);
         //对应表格输出的title
        const tHeader = [‘序号’, ‘IMSI’, ‘MSISDN’, ‘证件号码’, ‘姓名’];
// 对应表格输出的 tableData 数据, filterVal 属性字段
        const filterVal = [‘ID’, ‘imsi’, ‘msisdn’, ‘address’, ‘name’];
        const list = this.tableData;
        const data = this.formatJson(filterVal, list);
         //对应下载文件的名字
        export_json_to_excel({
                        header: tHeader,
                        data: data,
                        filename: filename,
                        sheetName: filename,
                       
                    });
      })
    },
    formatJson(filterVal, jsonData) {
      return jsonData.map(v => filterVal.map(j => v[j]))
    }

如果webpack报解析错误:
在build—-webpack.base.conf.js中resolve的alias加入 ‘vendor’: path.resolve(__dirname, ‘…/src/vendor’),
即可解决

合并单元格

// ws 为 XLSX.utils.aoa_to_sheet|table_to_sheet 的对象

  1. 方式1
var cell_address = { 
               s: {r:0 ,c:0} ,
		e : {r:1 ,c:0}
	}; 
			
	ws['!merges'].push(cell_address)

s: 合并单元格起始位置
e: 合并单元格结束位置
ws[’!merges’]: 合并单元格参数

  1. 方式2
var cell_address = XLSX.utils.decode_range('A1:A2') 
    ws['!merges'].push(cell_address)
方式2

decode_range:
参数1: 合并单元格起始位置
参数2: 合并单元格结束位置

可查看excel表格格式。

  • 4
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
要在Vue中使用XLSX导出嵌套表格,您需要安装和导入XLSX插件。XLSX插件支持将数据导出Excel文件。以下是一些步骤: 1. 安装XLSX插件: ``` npm install xlsx ``` 2. 在Vue组件中导入XLSX: ``` import XLSX from 'xlsx' ``` 3. 创建一个方法来导出表格: ``` exportTable() { const wb = XLSX.utils.book_new() // 创建一个名为“Sheet1”的工作表 const ws1 = XLSX.utils.json_to_sheet(this.tableData) // 创建一个名为“Sheet2”的工作表 const ws2 = XLSX.utils.json_to_sheet(this.nestedTableData) // 将工作表添加到工作簿中 XLSX.utils.book_append_sheet(wb, ws1, 'Sheet1') XLSX.utils.book_append_sheet(wb, ws2, 'Sheet2') // 将工作簿转换为二进制文件 const wbout = XLSX.write(wb, {bookType: 'xlsx', type: 'binary'}) // 下载Excel文件 saveAs(new Blob([s2ab(wbout)], {type: 'application/octet-stream'}), 'table.xlsx') } ``` 在这个例子中,我们创建了两个工作表(`ws1`和`ws2`),并将它们添加到工作簿中。我们使用`XLSX.write`方法将工作簿转换为二进制文件,然后将其下载到本地计算机。 4. 创建一个辅助函数`s2ab`,用于将字符串转换为ArrayBuffer: ``` function s2ab(s) { const buf = new ArrayBuffer(s.length) const view = new Uint8Array(buf) for (let i=0; i<s.length; i++) view[i] = s.charCodeAt(i) & 0xFF return buf } ``` 这个函数将字符串转换为ArrayBuffer,以便我们可以将其下载为Excel文件。 5. 添加一个按钮或其他触发器,以调用`exportTable`方法: ``` <button @click="exportTable">Export Table</button> ``` 以上是使用XLSX导出表格嵌套表格的基本步骤。您可以根据需要修改代码,以适应您的应用程序需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天也想MK代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值