basic loading

This commit is contained in:
Gabriele Cannata 2023-08-04 17:38:02 +02:00
parent 44aa707d3a
commit fff586950b
4 changed files with 1459 additions and 71 deletions

1466
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -29,6 +29,7 @@
},
"dependencies": {
"esbuild-plugin-less": "^1.2.1",
"exceljs": "^4.3.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.0/xlsx-0.20.0.tgz"

View file

@ -1,6 +1,7 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
// import * as React from "react";
// import { createRoot } from "react-dom/client";
// https://github.com/exceljs/exceljs#reading-xlsx
import {
MarkdownPostProcessorContext,
MarkdownView,
@ -16,7 +17,9 @@ import Spreadsheet from "x-data-spreadsheet";
// import * as path from "path"
import * as XLSX from "xlsx";
import * as ExcelJS from "exceljs";
import { stox, xtos } from "../utils/xlsxpread";
import { toSpreadsheet } from "src/utils/excelConverter";
const saveIcon =
"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTc3MTc3MDkyOTg4IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjI2NzgiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTIxMy4zMzMzMzMgMTI4aDU5Ny4zMzMzMzRhODUuMzMzMzMzIDg1LjMzMzMzMyAwIDAgMSA4NS4zMzMzMzMgODUuMzMzMzMzdjU5Ny4zMzMzMzRhODUuMzMzMzMzIDg1LjMzMzMzMyAwIDAgMS04NS4zMzMzMzMgODUuMzMzMzMzSDIxMy4zMzMzMzNhODUuMzMzMzMzIDg1LjMzMzMzMyAwIDAgMS04NS4zMzMzMzMtODUuMzMzMzMzVjIxMy4zMzMzMzNhODUuMzMzMzMzIDg1LjMzMzMzMyAwIDAgMSA4NS4zMzMzMzMtODUuMzMzMzMzeiBtMzY2LjkzMzMzNCAxMjhoMzQuMTMzMzMzYTI1LjYgMjUuNiAwIDAgMSAyNS42IDI1LjZ2MTE5LjQ2NjY2N2EyNS42IDI1LjYgMCAwIDEtMjUuNiAyNS42aC0zNC4xMzMzMzNhMjUuNiAyNS42IDAgMCAxLTI1LjYtMjUuNlYyODEuNmEyNS42IDI1LjYgMCAwIDEgMjUuNi0yNS42ek0yMTMuMzMzMzMzIDIxMy4zMzMzMzN2NTk3LjMzMzMzNGg1OTcuMzMzMzM0VjIxMy4zMzMzMzNIMjEzLjMzMzMzM3ogbTEyOCAwdjI1NmgzNDEuMzMzMzM0VjIxMy4zMzMzMzNoODUuMzMzMzMzdjI5OC42NjY2NjdhNDIuNjY2NjY3IDQyLjY2NjY2NyAwIDAgMS00Mi42NjY2NjcgNDIuNjY2NjY3SDI5OC42NjY2NjdhNDIuNjY2NjY3IDQyLjY2NjY2NyAwIDAgMS00Mi42NjY2NjctNDIuNjY2NjY3VjIxMy4zMzMzMzNoODUuMzMzMzMzek0yNTYgMjEzLjMzMzMzM2g4NS4zMzMzMzMtODUuMzMzMzMzeiBtNDI2LjY2NjY2NyAwaDg1LjMzMzMzMy04NS4zMzMzMzN6IG0wIDU5Ny4zMzMzMzR2LTEyOEgzNDEuMzMzMzMzdjEyOEgyNTZ2LTE3MC42NjY2NjdhNDIuNjY2NjY3IDQyLjY2NjY2NyAwIDAgMSA0Mi42NjY2NjctNDIuNjY2NjY3aDQyNi42NjY2NjZhNDIuNjY2NjY3IDQyLjY2NjY2NyAwIDAgMSA0Mi42NjY2NjcgNDIuNjY2NjY3djE3MC42NjY2NjdoLTg1LjMzMzMzM3ogbTg1LjMzMzMzMyAwaC04NS4zMzMzMzMgODUuMzMzMzMzek0zNDEuMzMzMzMzIDgxMC42NjY2NjdIMjU2aDg1LjMzMzMzM3oiIHAtaWQ9IjI2NzkiIGZpbGw9IiMyYzJjMmMiPjwvcGF0aD48L3N2Zz4=";
@ -161,12 +164,18 @@ export function processCodeBlock(
cellStyles: true,
sheetStubs: true // >
});
const workbook = new ExcelJS.Workbook();
const excelWorkbook = await workbook.xlsx.load(fileContent)
const data2 = toSpreadsheet(excelWorkbook);
const data = stox(xlsx);
(ctx as any).spreadsheet = createSpreadSheet(
container,
spreadsheet_options,
{ ...options, data },
{ ...options, data: data2 },
ctx
);
// .loadData();

View file

@ -0,0 +1,52 @@
import { Workbook } from "exceljs";
export function toSpreadsheet(wb: Workbook) {
const out = wb.worksheets.map(ws=>{
const ows = {
name: ws.name,
rows: {} as any,
merges: [] as string[],
styles: [] as any[],
// freezes:
}
ws.eachRow((row, rowNumber)=>{
const rowId = String(row.number-1)
const rowob:any = {
cells: {}
};
ows.rows[rowId] = rowob;
const cells = row.eachCell((cell,cellNumber)=>{
const cellOb = {
text: cell.text,
merge: [] as number[]
}
if(cell.formula) cellOb.text = "=" + cell.formula;
if(!cell.isMerged || !cell.model.master){
rowob.cells[Number(cell.col)-1] = cellOb;
if(cell.isMerged){
const merge = (ws as any)._merges[cell.address];
// console.log(merge);
cellOb.merge = [
merge.bottom-merge.top as number,
merge.right-merge.left as number
]
}
} else {
//
}
})
})
// merges
const merges = [];
for(let m in (ws as any)._merges){
const merge = (ws as any)._merges[m];
const range = merge.range
merges.push(range);
}
ows.merges = merges;
return ows;
});
return out;
}