자바 스크립트로 Open Document Spreadsheet (*. ods) 파일을 읽고 처리하는 방법은 무엇입니까?
Nov 15 2020
파일 유형의 입력 요소와 라이브러리 exceljs를 사용하여 * .xlsx 파일을 읽고 처리 할 수 있습니다. 아래 예제 코드도 참조하십시오.
불행히도 exceljs는 열린 문서 스프레드 시트 파일 * .ods를 지원하지 않는 것 같습니다. ( worksheet
정의되지 않음).
=> 자바 스크립트로 * .ods 파일을 읽고 처리하려면 어떻게해야합니까?
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;
}
관련
- https://github.com/webodf/WebODF
- https://www.npmjs.com/package/simple-odf
답변
Stefan Nov 15 2020 at 10:03
DigitalDrifter의 의견 덕분에 sheetjs / xlsx로 * .ods 파일을 읽고 처리 할 수있었습니다.
https://github.com/SheetJS/sheetjs
npm install xlsx --save
당신은 스크립트 태그 이리저리 가져 오기를 사용하는 경우, 반드시 가져 주시기 바랍니다 xlsx.full.min.js
대신 xlsx.min.js
. 그렇지 않으면 오류가 발생 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);
}
}) ;
}