背景:
前端vue项目中,基于exceljs进行excel文件的导出,发现生成的excel文件公式求和值不能直接显示,需手动点击之后生成。
代码示例
const exportTemplate = () => { // 创建工作簿 const workbook = new ExcelJS.Workbook(); const worksheet = workbook.addWorksheet('sheet1'); // 定义列 worksheet.columns = [ { header: 'Id11111111111111111111', key: 'id', width: 20 }, { header: 'Name233', key: 'name', width: 20 }, { header: 'D.O.B999', key: 'dob', width: 20 } ]; // 添加二级表头 worksheet.addRow(['二级表头A', '二级表头B', '二级表头C']); // 填充数据 const columnData = [ { id: 15, name: 99, dob: '2024-04-16' }, { id: 50, name: 101, dob: '2024-04-17' } ]; columnData.forEach(item => { worksheet.addRow(item); }); // 添加求和公式到A5单元格 worksheet.getCell('A5').value = { formula: 'SUM(A3:A4)', result: null // ExcelJS会自动计算结果,无需显式设置result为null }; // 写入Excel文件 workbook.xlsx.writeBuffer().then((buffer) => { const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); saveAs(blob, 'ExcelJS.xlsx'); }).catch((error) => { console.error('Error exporting Excel file:', error); }); };
进行统计求和设置时,相关代码如下:
// 添加求和公式到A5单元格 worksheet.getCell('A5').value = { formula: 'SUM(A3:A4)', result: null // ExcelJS会自动计算结果,无需显式设置result为null };
下载excel
// 写入Excel文件 workbook.xlsx.writeBuffer().then((buffer) => { const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); saveAs(blob, 'ExcelJS.xlsx'); }).catch((error) => { console.error('Error exporting Excel file:', error); });
下载的excel文件A5单元格显示为0,要手动点击A5单元格之后,才显示公式计算值。
你没有提供saveAs函数怎么写的,所以我是这样写的导出方法:
workbook.xlsx.writeBuffer().then(buffer => { const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); const url = window.URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'result.xlsx'; a.click(); window.URL.revokeObjectURL(url);});
结果是这样的:
没有出现你说的要点击A5才显示计算值的情况,另外我用的是WPS,使用word的话应该可以在设置里设置计算模式为自动吧
问题内容: 我有一个带有id(guid)列的sql表。如何强制数据库为每条新记录自动生成新的Guid? 问题答案: 添加。
为了重现我的问题,可以简单地使用这个最小的生成器: 我的项目回购是:(工作区是一个空文件) 生成文件是 声明的输出“My lib/file.cpp”不是由GenRule创建的。这可能是因为genrule实际上没有创建此输出,或者因为输出是一个目录,并且genrule是远程运行的(注意,只有声明的文件输出的内容是从远程运行的genrules复制的) 问题(B),处理cc_library()部分 我不
突然间得到了所有这些错误所有构建错误“在Android Studio中存在多个错误的清单合并失败” 当我没有得到这个建议的时候,我就用android studio提出了替换建议 "清单合并失败:属性application@appComponentFactoryvalue=(android.support.v4.app.CoreComponentFactory)from[com.android.su
我有一个简单的服务描述文件open-api.json: 我在我的Spring webflux项目中使用springdoc openapi webflux ui: 是否可以显示现有文件而不是生成的文件?任何帮助,谢谢!
请教一下这样写为什么浏览器解析不了值 width直接没有了
我使用iTextPDF生成PDF,从一些文本输入中获取数据。 当我运行应用程序并创建第一个PDF时,它会按预期生成。 然后我改变一些值并生成另一个值,这就是问题所在。第一个PDF上显示的最后一个条目被打印在第二个生成的PDF的第一个条目的顶部。 不知道为什么会这样?它是保存到缓冲区还是什么的,不是很确定。 下面是生成PDF的代码: 输出请见附件图像,第一个显示第一个文件生成,第二个显示第二个文件生