@ayocore/exceljs (英语)
轻量级节点.js-只叉 特长 用于服务器侧 XLSX 报告生成.
这是什么?
一个被剥去,安全加固的ExcelJS叉被优化后端使用. 在Node.js 20+上读取,操纵并写入XLSX电子表格.
上游的精英有什么变化?
删除
- 浏览器支持 -- 没有浏览器捆绑, 没有多填装, 没有 UMD 包装
- CSV 支持 - 说吧
workbook.csv完全删除( e)fast-csv抚养关系消失) - 构建步骤 - 没有格伦特,没有巴别尔,没有浏览器,没有建筑,没有terser。 代码运行在 20+ 节点上
readable-stream多边填充 - 替换为本地require('stream')dayjs-- 未使用,已删除core-js, (中文(简体) ),regenerator-runtime- 现代节点不需要.js
升级
archiver5 -- > 7 -- -- 已删除glob@7财务报告和审定财务报表inflight从中转道岔unzipper0.10 - > 0.12 -- -- 已删除fstream财务报告和审定财务报表rimraf@2从中转道岔- 流线读取器修正 -- 固定共享字符串种族条件, 当工作表条目在zip中共享字符串到达之前( 补发 # 1328)
警卫
| 度量衡 | 上游优势 4.4.0 | @ayocore/exceljs 5.0.2 (中文(简体) ) |
|---|---|---|
npm audit 共计 | 第48条 | 3(只保留mocha) |
| 关键 | 3个 | 0 个 |
| 高级 | 29个 | 2 (只保留) |
| 运行时间 vulns | 1个 | 0 个 |
更轻
| 度量衡 | 上游优势 4.4.0 | @ayocore/exceljs 5.0.2 (中文(简体) ) |
|---|---|---|
| 运行时间依赖关系 | 第9条 | 6个 |
| 软件包大小 | ~2.5 甲基溴 | ~1 MB 键 |
| 节点-模块树 | 1320个包裹 | ~600 个包 |
运行时间依赖关系
archiver, (中文(简体) ), jszip, (中文(简体) ), saxes, (中文(简体) ), tmp, (中文(简体) ), unzipper, (中文(简体) ), uuid
所需资源
- 节点.js 20
- 仅限服务器侧. 不供浏览器使用 .
安装
npm install @ayocore/exceljs
快开始
const ExcelJS = require('@ayocore/exceljs');
// Create a workbook
const wb = new ExcelJS.Workbook();
wb.creator = 'My Server';
// Add a worksheet
const ws = wb.addWorksheet('Report');
ws.columns = [
{header: 'ID', key: 'id', width: 8},
{header: 'Name', key: 'name', width: 25},
{header: 'Amount', key: 'amount', width: 15},
];
ws.getRow(1).font = {bold: true};
ws.addRow({id: 1, name: 'Item A', amount: 100});
ws.addRow({id: 2, name: 'Item B', amount: 250});
ws.getColumn('amount').numFmt = '$#,##0.00';
// Write to file
await wb.xlsx.writeFile('/tmp/report.xlsx');
// Or write to buffer
const buffer = await wb.xlsx.writeBuffer();
流线
const ExcelJS = require('@ayocore/exceljs');
// Streaming writer (low memory)
const wb = new ExcelJS.stream.xlsx.WorkbookWriter({
filename: '/tmp/large-report.xlsx',
});
const ws = wb.addWorksheet('Data');
ws.columns = [{header: 'Row', key: 'row'}];
for (let i = 0; i < 1_000_000; i++) {
ws.addRow({row: i}).commit();
}
ws.commit();
await wb.commit();
API 密码
API 和 特长 但下列情况除外:
workbook.csv-- 删除( 需要时使用专用 CSV 库)- 浏览器特性 -- -- 删除
- ES5/dist 建筑 -- -- 已拆除
API文件全文见 上游文档。 。 。 .
端口上游修正
此分叉包括来自原始 open PR 的错误修正和改进 特长 上游尚未合并的仓库.
错误修正
| 公关 | 说明 | 作者 |
|---|---|---|
| 2915号 | 修正工作簿阅读器种族条件——单元格值读取为共享结构索引而不是实际值 | @ 阿内查斯 |
| 2807号 | 修复页面设置 Pr/outlinePr 命令在工作表Pr 中——破损的 xlsx 输出 | @strelok372 (英语) |
| 2851号 | 修补布尔属性解析 - <strike val="0"/> 被读作真实 | @Jason33汪 |
| #2803 (英语) | 在溪流刻录器中将有条件格式化和超链接合并时修复已损坏的文件 | @ TheAsda (英语) |
| 2956号 | 固定日期 Toexcel () 返回非数字值的 NaN | @ davepuchyr (英语) |
| 2737号 | 不要渲染出空的丰富文本下字符串——Excel无法打开文件 | @ 布莱克霍尔3 |
| #2781号 | 修复单元格样式变异——在一个单元格上设置样式不再腐蚀其他共享样式对象 | @gmahomarf (英语) |
| #2973号 | 用动态Filter节点解析 Excel 表格时修复崩溃 | @johnyushika (英语) |
| 2996号 | 将 XML 特殊字符和空值固定在关键表格中 | @ protobi-pieter (原始内容存档于2019-09-21) (英语) |
| 2962号 | 处理缺失 r 属性在行/单元格元素中——改善与非标准Excel生成器的兼容性 | @迪卢卡 |
| 2920号 | 优化合并单元格重叠检查 — O( N) 扫描替换为每个单元格 isMerged检查 | @ 3ximus (中文(简体) ) |
| 2894号 | 修复 SAX 解析器, 突破块边界的多字节 UTF-8 字符( 中文、 emoji等) | @maoxian-1 (英语) |
| 2874号 | 修补种族条件和溪流循环中的内存泄漏 | @StevenGee3398 (英语) |
改进
| 公关 | 说明 | 作者 |
|---|---|---|
| 2867号 | 样式缓存模式( E)FAST_MAP, (中文(简体) ), JSON_MAP()——最多3x写作性能与 useStyles | @brunoargolo (英语) |
| 2998号 | 修补 getTable().addRow() 用于从文件装入的表格 — refs, autoFilter, 和工作表绑定 | @ protobi-pieter (原始内容存档于2019-09-21) (英语) |
| 2995号 | 支持每个工作簿+固定的多条支点表 .splice() 数据突变错误 | @ protobi-pieter (原始内容存档于2019-09-21) (英语) |
感谢所有原作者对卓越生态系统的贡献.