Translate QExcell shared formulas on import

This commit is contained in:
Курнат Андрей
2026-06-01 08:09:23 +03:00
parent 9ad29a184b
commit 66406c2c0c
3 changed files with 92 additions and 8 deletions
+31
View File
@@ -28,6 +28,37 @@ describe("excellOffice OOXML helpers", () => {
expect(xlsxCellToText({ r: "C2", f: { "#text": "A2*2" }, v: "8" }, [])).toBe("=A2*2");
});
it("сдвигает относительные ссылки XLSX shared formulas при импорте", () => {
const cells = worksheetXmlToCells(
{
worksheet: {
sheetData: {
row: [
{
r: "1",
c: [{ r: "C1", f: { t: "shared", si: "0", ref: "C1:D2", "#text": "A1+B$1+$A1+$B$2+'A1 Sheet'!A1&\"A1\"" }, v: "0" }]
},
{
r: "2",
c: [
{ r: "C2", f: { t: "shared", si: "0" }, v: "0" },
{ r: "D2", f: { t: "shared", si: "0" }, v: "0" }
]
}
]
}
}
},
[]
);
expect(cells).toEqual({
C1: "=A1+B$1+$A1+$B$2+'A1 Sheet'!A1&\"A1\"",
C2: "=A2+B$1+$A2+$B$2+'A1 Sheet'!A2&\"A1\"",
D2: "=B2+C$1+$A2+$B$2+'A1 Sheet'!B2&\"A1\""
});
});
it("читает shared string, inline string, число и boolean", () => {
expect(xlsxCellToText({ r: "A1", t: "s", v: "1" }, ["Первый", "Второй"])).toBe("Второй");
expect(xlsxCellToText({ r: "A2", t: "inlineStr", is: { t: "Текст" } }, [])).toBe("Текст");