exceljs 导出excel
时间: 2025-04-13 18:37:23 浏览: 37
<think>嗯,用户想用exceljs导出Excel文件,需要示例代码。首先,我得确认用户的使用环境,比如是Node.js还是前端,比如Vue或React。不过根据提供的引用,有提到Vue和Java+JS的例子,所以可能用户是在前端使用,尤其是Vue。不过示例代码可能需要区分环境。
首先,安装exceljs和file-saver。引用2和3都提到了这两个包,所以必须包括安装步骤。用户可能需要知道如何安装,所以给出npm命令。
然后,基本步骤应该是创建workbook,添加worksheet,设置列头,添加数据行,设置样式,最后导出。引用3中的Vue示例可能是一个好的参考,但需要简化代码,让用户容易理解。
要注意的是,在浏览器端导出可能需要使用ExcelJS的xlsx模块,并且使用FileSaver保存文件。同时,设置表格样式,比如列宽、标题加粗,这些细节能提升用户体验,所以应该包含在内。
另外,用户可能需要处理更复杂的情况,比如合并单元格或者添加公式,但基础示例应该先覆盖基本需求。引用3中的代码展示了如何设置单元格样式,比如字体颜色和填充色,这些可以作为可选的高级配置。
还要注意异步操作,比如workbook.xlsx.writeBuffer()返回的是Promise,所以在示例中使用async/await处理,确保用户知道需要正确处理异步流程。
最后,相关问题部分需要涵盖常见的问题,比如样式设置、大数据量处理、兼容性等,这样用户遇到进一步问题时可以自行参考。</think>以下是使用ExcelJS导出Excel文件的完整示例代码和步骤说明:
### 一、基础导出步骤(浏览器环境)
1. 安装依赖:
```bash
npm install exceljs file-saver
```
2. 基础示例代码:
```javascript
import ExcelJS from 'exceljs';
import { saveAs } from 'file-saver';
// 创建workbook
const workbook = new ExcelJS.Workbook();
const worksheet = workbook.addWorksheet('Sheet1');
// 设置列头
worksheet.columns = [
{ header: 'ID', key: 'id', width: 10 },
{ header: '姓名', key: 'name', width: 20 },
{ header: '成绩', key: 'score', width: 15 }
];
// 添加数据行
worksheet.addRow({ id: 1, name: '张三', score: 95 });
worksheet.addRow({ id: 2, name: '李四', score: 88 });
// 设置标题样式
worksheet.getRow(1).eachCell(cell => {
cell.font = { bold: true, color: { argb: 'FFFFFFFF' } };
cell.fill = {
type: 'pattern',
pattern: 'solid',
fgColor: { argb: 'FF4F81BD' }
};
});
// 导出文件
workbook.xlsx.writeBuffer().then(buffer => {
const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
saveAs(blob, '学生成绩表.xlsx');
});
```
### 二、关键配置说明
1. **列定义**:使用`columns`属性定义表格结构,`width`设置列宽(单位:字符)
2. **数据填充**:支持`addRow()`逐行添加,或`addRows()`批量添加二维数组
3. **样式设置**:
- 单元格样式:`font`、`fill`、`border`等属性
- 行高设置:`worksheet.getRow(1).height = 25`
- 自动筛选:`worksheet.autoFilter = 'A1:C1'`
### 三、高级功能示例
```javascript
// 合并单元格
worksheet.mergeCells('A1:C1');
worksheet.getCell('A1').value = '2023年度成绩汇总表';
// 添加公式
worksheet.addRow({ id: '合计', score: { formula: 'SUM(C2:C3)' } });
// 设置数字格式
worksheet.getColumn('score').numFmt = '0.00';
```
### 四、最佳实践建议
1. 大数据量导出时建议分页处理,每sheet不超过100万行[^3]
2. 复杂样式建议使用`Style`对象统一管理
3. 中文文件名编码问题处理:
```javascript
saveAs(blob, decodeURI(encodeURIComponent('中文文件名.xlsx')));
```
阅读全文
相关推荐


















