javascript - 在一个工作簿中创建 3 个工作表(Excel-JS)问题
问题描述
我需要创建一个包含 3 个工作表的 excel 文件。现在我写了一个创建工作表和工作簿的函数。我有问题,因为我需要在一些执行的异步函数中将数据写入工作表。也许一些代码会描述我必须做什么。
var Excel = require('exceljs');
const workbook = new Excel.Workbook({
useStyles: true
})
const headers = [
{ header: 'Plik', key: 'path', width: 40 },
{ header: 'Zwierze', key: 'name', width: 12 },
{ header: 'Prawdopodobienstwo(%)', key: 'confidence', width: 24 },
{ header: 'Czas odpowiedzi(s)', key: 'responseTime', width: 20 }
];
workbook.xlsx.writeFile("./excel/Wyniki.xlsx");
setWorkSheet = (name, responses, filename) => {
workbook.xlsx.readFile(filename)
.then(function () {
const worksheet = workbook.addWorksheet(name);
worksheet.columns = headers;
for (let i = 0; i < responses.length; i++) {
worksheet.addRow(responses[i]);
}
worksheet.getRow(1).style.font = { size: 12, name: 'Bahnschrift SemiBold SemiConden' }
worksheet.getRow(1).eachCell((cell) => {
cell.fill = {
type: 'pattern',
pattern: 'solid',
fgColor: { argb: '993399' }
},
cell.style.font = {
color: {
argb: 'ffffff'
},
size: 14,
}
})
worksheet.eachRow((Row, rowNumber) => {
Row.alignment = {
horizontal: 'center',
}
Row.eachCell((Cell, cellNumber) => {
Cell.alignment = {
vertical: 'middle',
horizontal: 'center'
},
Cell.border = {
top: { style: 'double', color: { argb: 'black' } },
left: { style: 'double', color: { argb: 'black' } },
bottom: { style: 'double', color: { argb: 'black' } },
right: { style: 'double', color: { argb: 'black' } }
}
})
})
worksheet.views = [
{ state: 'frozen', xSplit: 1, ySplit: 1, activeCell: 'B2' },
];
return workbook.xlsx.writeFile(`${filename}`)
})
.then(function () {
console.log("Done");
})
.catch(function (err) {
console.log(err)
});
}
这个函数现在创建一个具有特殊定义名称工作表的新文件。我需要执行此功能 3 次,在此操作之后,我需要有一个文件和 3 个工作表。以下是我执行此功能的地方:
async function Cognitive() {
let tab = [];
for (let i = 0; i < arrayOfFiles.length; i++) {
let x = await cognitive.cognitiveDetectLabels(arrayOfFiles[i]);
tab.push(x)
}
setWorkSheet('Cognitive', tab, "./excel/Wyniki.xlsx");
}
exports.Cognitive = Cognitive;
async function Rekognition() {
let tab = [];
const path = "./csv/Rekognition.csv";
for (let i = 0; i < arrayOfFiles.length; i++) {
let x = await rekognitionFile.callaws(arrayOfFiles[i]);
tab.push(x)
}
setWorkSheet("Rekognition", tab, "./excel/Wyniki.xlsx");
}
exports.Rekognition = Rekognition;
async function Vision() {
let tab = [];
for (let i = 0; i < arrayOfFiles.length; i++) {
let x = await vision.callVision(arrayOfFiles[i]);
tab.push(x)
}
setWorkSheet("Vision", tab, "./excel/Wyniki.xlsx");
}
exports.Vision = Vision;
当我执行此异步功能之一时。带有工作表的文件总是被覆盖。但是,我需要将工作表添加到一个文件(3 张)。有人对这个问题有一些想法吗?谢谢
解决方案
推荐阅读
- swiftui - 在 SwiftUI 中绘制折线图
- apache-spark-mllib - XGBoost4J-Spark Training Performance with vector Assembler 和自定义密集向量导致两个完全不同的训练模型文件
- c# - Hangfire 中的 JobActivator 不会为 RecurringJob 的每次运行实例化 DataContext
- html - 我如何构建可以生成 HTML 并且搜索引擎可以抓取该 html 的 SEO 友好的 Ionic 5 网站
- deno - deno upgrade 显示错误“无法解析模块升级”
- javascript - 根据用户输入重定向页面
- postgresql - 备份大型 postgresql 数据库
- shell - 如何在保留标题的同时使用 grep 过滤 gz 文件
- python - 在 numpy dnarray 中处理 NaN / Inf
- keras - 拟合期间的 tensorflow.keras - 无效的参数 重塑的输入是具有 983040 值的张量,但请求的形状具有 1966080