Wie lese und verarbeite ich Open Document Spreadsheet (* .ods) -Dateien mit Javascript?
Ich kann * .xlsx-Dateien mit einem Eingabeelement vom Typ file und der Bibliothek exceljs lesen und verarbeiten. Siehe auch Beispielcode unten.
Leider scheint exceljs offene Dokumenttabellen * .ods nicht zu unterstützen. (Das worksheetist undefiniert).
=> Wie kann ich * .ods-Dateien mit Javascript lesen und verarbeiten?
https://github.com/exceljs/exceljs
https://github.com/exceljs/exceljs/issues/716
static async readFile(file){
await this.__initializeExcel();
const workbook = new Excel.Workbook();
await workbook.xlsx.load(file);
const worksheet = workbook.worksheets[0];
var data = [];
const numberOfRows = worksheet.rowCount;
for (let rowIndex = 1; rowIndex <= numberOfRows; rowIndex++) {
const row = worksheet.getRow(rowIndex);
const rowValues = row.values;
data.push(rowValues);
rowValues.shift();
}
return data;
}
verbunden
- https://github.com/webodf/WebODF
- https://www.npmjs.com/package/simple-odf
Antworten
Dank des Kommentars von DigitalDrifter konnte ich * .ods-Dateien mit sheetjs / xlsx lesen und verarbeiten:
https://github.com/SheetJS/sheetjs
npm install xlsx --save
Wenn Sie Script - Tags fro Import verwenden, stellen Sie sicher importieren xlsx.full.min.jsstatt xlsx.min.js. Andernfalls wird eine Fehlermeldung angezeigt Cannot find file [Content_Types].xml in zip.
static async readOdsFile(file){
await this.__initializeXlsx(); //imports xlsx.full.min.js by script tag
return new Promise((resolve, reject)=>{
var reader = new FileReader();
reader.onload = event => {
try{
var result = reader.result;
var dataArray = new Uint8Array(result);
var workbook = Xlsx.read(dataArray, {type: 'array'});
const firstSheetName = workbook.SheetNames[0];
const worksheet = workbook.Sheets[firstSheetName];
const data = Xlsx.utils.sheet_to_json(worksheet,{header:1});
resolve(data);
} catch(error){
reject(error);
}
};
try{
reader.readAsArrayBuffer(file);
} catch (error){
reject(error);
}
}) ;
}