Nodejs哪种方法导出excel好?找了好多帖 (结帖)
Nodejs哪种方法导出excel好?找了好多帖 (结帖)
因为我现在要导出xls,不要xlsx。导出做报表用的 (后来我放弃xls)
找了很多,现在比较好的方法是生成xls文件,再导入csv格式的内容。这样的做法,我担心2个问题。1是中文会不会乱码,2是会不会自动撑开格子。失败的例子像这样:
name data meney
xiaoming 2014-02-23 14:59 1000
能不能data的时间不会撑到1000那里,想要的:
<table>
<tr>
<td>name</td><td>data</td><td>meney</td>
</tr>
<tr>
<td>xiaoming</td><td>2014-02-23 14:59</td><td>1000</td>
</tr>
</table>
#最后用了http://cnodejs.org/topic/52479ddef29c7bbd3c950965 来解决,这真是一个好插件。
在Node.js中导出Excel文件时,可以使用一些优秀的库来实现这一功能。考虑到你提到的需求(生成.xls文件而不是.xlsx文件),我们可以使用exceljs
或xlsx-populate
等库。但因为.xls文件格式相对老旧,支持度较低,所以更推荐使用.xlsx格式。如果你确实需要生成.xls文件,可以考虑使用excel-export
库。
以下是一个使用exceljs
库导出.xlsx文件的简单示例:
安装依赖
首先,你需要安装exceljs
库:
npm install exceljs
示例代码
const ExcelJS = require('exceljs');
// 创建一个新的工作簿对象
const workbook = new ExcelJS.Workbook();
workbook.creator = 'Your Name';
workbook.created = new Date();
// 添加一个工作表
const worksheet = workbook.addWorksheet('Sheet 1');
// 添加表头
worksheet.columns = [
{ header: 'Name', key: 'name', width: 15 },
{ header: 'Date', key: 'date', width: 20 },
{ header: 'Money', key: 'money', width: 10 }
];
// 添加数据行
worksheet.addRow({ name: 'Xiaoming', date: '2014-02-23 14:59', money: 1000 });
// 将工作簿写入文件
workbook.xlsx.writeFile('output.xlsx')
.then(() => {
console.log('File saved!');
})
.catch(err => {
console.error(err);
});
解释
- 创建工作簿:使用
ExcelJS.Workbook()
创建一个新的工作簿。 - 添加工作表:通过
addWorksheet
方法添加一个新的工作表。 - 设置列宽和标题:通过
columns
属性设置列宽和表头。 - 添加数据行:使用
addRow
方法向工作表中添加数据行。 - 保存文件:使用
writeFile
方法将工作簿保存为.xlsx文件。
这种方法能够确保数据正确对齐,并且支持中文字符。如果你确实需要生成.xls文件,可以尝试使用其他库如excel-export
,但请注意其兼容性和维护状态。
csv 文件没有格式问题,“能不能data的时间不会撑到1000那里”是把csv又用excel打开了?
本来就是要用excel打开,我的目的也是要生成xls。
最简单的是 每一行的每一列用 “\t” 分隔 文件保存.xls 然后excel 可以打开。
这个stackoverflow上看过
https://github.com/vxtindia/excel-parser ?
这个…不过这个是用node 上面包了一层python 接口…不过excel 支持方面倒是妥妥的
能写就行,python也不怕。反正是linux,应该都有的吧。如果能搞,就不用php。
你确定这个能生成xls,我怎么看它是读xls的
用我的吧,如果是要导出复杂格式的Excel,我的最好了 http://cnodejs.org/topic/52479ddef29c7bbd3c950965
一直Forbidden是什恶魔情况啊。 导出的话很无语的用blob可以的吧。
你的这个不错啊。我看了一下,好像是替换文字。晚点再加你QQ问一下。
根据你的需求,使用 Node.js 导出 Excel 文件(尤其是 .xls
文件),可以考虑使用一些流行的库,比如 exceljs
或 xlsx
。虽然你提到更倾向于使用 .xls
格式,但需要注意的是 .xlsx
是更现代和广泛支持的格式。这里我将提供一个使用 exceljs
库导出 .xlsx
文件的示例代码,并且会说明如何避免出现中文乱码和列宽自动撑开的问题。
使用 exceljs 导出 Excel
安装 exceljs
首先需要安装 exceljs
库,可以通过 npm 进行安装:
npm install exceljs
示例代码
以下是一个简单的例子,展示如何创建一个 Excel 表格并写入数据:
const ExcelJS = require('exceljs');
// 创建一个新的工作簿
const workbook = new ExcelJS.Workbook();
// 添加新的工作表
const worksheet = workbook.addWorksheet('Sheet 1');
// 设置列宽以避免中文或日期等字段导致的列宽自动撑开
worksheet.columns = [
{ header: '姓名', key: 'name', width: 15 },
{ header: '时间', key: 'date', width: 20 },
{ header: '金额', key: 'money', width: 10 }
];
// 添加一行数据
worksheet.addRow({ name: '小明', date: '2014-02-23 14:59', money: 1000 });
// 写入 Excel 文件
workbook.xlsx.writeFile('output.xlsx')
.then(() => {
console.log('Excel 文件已成功导出!');
})
.catch(err => {
console.error('导出 Excel 文件时发生错误:', err);
});
避免中文乱码
确保你的文本编码正确,通常情况下使用 UTF-8 编码不会出现问题。如果你的数据源是从其他地方获取的,记得检查其编码设置是否一致。
结论
通过上述示例,你可以创建一个包含中文、日期以及数值的 Excel 表格,同时避免了列宽自动撑开的问题。如果你确实需要 .xls
格式的文件,可以考虑使用 exceljs
的其他功能或尝试其他的库。