js导入导出excel并携带样式

推荐使用这个 exceljs  因为其他的没找到携带样式的

先导入

打印输出的结果

 

我们需要的数据在worksheets里

rowCount为行数,columnCount为列数

 

model里properties有默认的行高与列宽,通过对比cols数组的width与rows数组中的height 可以知道行高与列宽变大了还是变小了,merges里存放着合并的单元格

rows数组中可以看到有单元格值与样式

大致效果

 导出

创建工作簿,之后创建一个名为sheet1的工作表,给其工作表设置默认行高与列宽

 

根据当前拥有的行列数设置每行与每列的行高与列宽

 

 

再根据行与列去获取单元格设置单元格值与样式

 

最后我们处理一下合并的单元格就大功告成了

 

我们就可以直接下载下来了

 

效果大致如此 

 

当然exceljs也有缺点,它只支持xlsx格式与csv格式

别的我没找到携带样式的方法,所以

 

只能这样了... 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 NestJS导入导出 Excel 文件可以使用 `exceljs` 库来实现。以下是一个简单的示例: 首先,确保已经安装了 `exceljs` 这个库: ``` npm install exceljs ``` 然后,创建一个导出 Excel 的函数: ```typescript import { Injectable } from '@nestjs/common'; import * as ExcelJS from 'exceljs'; import { Response } from 'express'; @Injectable() export class ExcelService { async exportToExcel(data: any[], res: Response, filename: string) { const workbook = new ExcelJS.Workbook(); const worksheet = workbook.addWorksheet('Sheet 1'); // 将数据写入工作表 worksheet.addRows(data); // 设置响应头,告诉浏览器下载文件 res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); res.setHeader('Content-Disposition', `attachment; filename=${filename}.xlsx`); // 将工作簿数据写入响应流 await workbook.xlsx.write(res); // 结束响应 res.end(); } } ``` 在你的控制器中使用 `ExcelService` 导出 Excel 文件: ```typescript import { Controller, Get, Res } from '@nestjs/common'; import { ExcelService } from './excel.service'; @Controller('excel') export class ExcelController { constructor(private readonly excelService: ExcelService) {} @Get('export') async exportToExcel(@Res() res) { const data = [ ['Name', 'Age'], ['John Doe', 30], ['Jane Smith', 25], // 更多数据行... ]; await this.excelService.exportToExcel(data, res, 'data'); } } ``` 在这个例子中,我们创建了一个 `ExcelService` 来处理 Excel 相关的操作。在 `exportToExcel` 方法中,我们使用 `exceljs` 创建一个工作簿,将数据写入工作表,并将工作簿数据写入响应流中,实现了导出 Excel 文件的功能。 在控制器中,我们通过 `@Get('export')` 装饰器创建了一个 GET 路由,当用户访问 `/excel/export` 时,会触发 `exportToExcel` 方法导出 Excel 文件。 注意:以上示例是基于 NestJS 的示例,你需要在自己的项目中相应地进行配置和使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值