48 lines
2.1 KiB
JavaScript
48 lines
2.1 KiB
JavaScript
import fs from "node:fs/promises";
|
|
import { FileBlob, SpreadsheetFile } from "@oai/artifact-tool";
|
|
|
|
const sourcePath = "C:/Users/milu/OneDrive - Exxeta/Dokumente/Assessor Zeiterfassung/ASSESSOR_Zeiterfassung_Sep2026_Jul2027_Form_wie_vorher.xlsx";
|
|
const outputPath = "C:/Users/milu/OneDrive - Exxeta/Dokumente/VS CODE/ASSESSOR-2-5/outputs/01a089e9-f688-7f21-87c9-db223e98841f/ASSESSOR_Zeiterfassung_Aug2026_Jul2027_aktualisiert.xlsx";
|
|
const outputDir = "C:/Users/milu/OneDrive - Exxeta/Dokumente/VS CODE/ASSESSOR-2-5/outputs/01a089e9-f688-7f21-87c9-db223e98841f";
|
|
|
|
const source = await SpreadsheetFile.importXlsx(await FileBlob.load(sourcePath));
|
|
const result = await SpreadsheetFile.importXlsx(await FileBlob.load(outputPath));
|
|
|
|
const unchanged = [];
|
|
for (const sheet of source.worksheets.items) {
|
|
if (sheet.name === "September 2026") continue;
|
|
const sourceUsed = sheet.getUsedRange();
|
|
const resultSheet = result.worksheets.getItem(sheet.name);
|
|
const resultUsed = resultSheet.getUsedRange();
|
|
unchanged.push({
|
|
sheet: sheet.name,
|
|
address: sourceUsed?.address ?? null,
|
|
sameAddress: sourceUsed?.address === resultUsed?.address,
|
|
sameValues: JSON.stringify(sourceUsed?.values ?? []) === JSON.stringify(resultUsed?.values ?? []),
|
|
sameFormulas: JSON.stringify(sourceUsed?.formulas ?? []) === JSON.stringify(resultUsed?.formulas ?? []),
|
|
});
|
|
}
|
|
console.log(JSON.stringify({ unchanged }, null, 2));
|
|
|
|
const summary = await result.inspect({
|
|
kind: "sheet,table,formula",
|
|
maxChars: 14000,
|
|
tableMaxRows: 5,
|
|
tableMaxCols: 40,
|
|
options: { maxResults: 100 },
|
|
});
|
|
console.log(summary.ndjson);
|
|
|
|
const errors = await result.inspect({
|
|
kind: "match",
|
|
searchTerm: "#REF!|#DIV/0!|#VALUE!|#NAME\\?|#N/A|#NUM!|#NULL!|#SPILL!|#CALC!",
|
|
options: { useRegex: true, maxResults: 300 },
|
|
summary: "saved-file formula error scan",
|
|
});
|
|
console.log(errors.ndjson);
|
|
|
|
for (const sheetName of ["August 2026", "September 2026"]) {
|
|
const preview = await result.render({ sheetName, autoCrop: "all", scale: 1, format: "png" });
|
|
await fs.writeFile(`${outputDir}/saved_${sheetName.replace(/[^a-z0-9_-]+/gi, "_")}.png`, new Uint8Array(await preview.arrayBuffer()));
|
|
}
|