javascript - 如何使用 javascript 读取和处理 Open Document Spreadsheet (*.ods) 文件?
问题描述
我能够使用文件类型的输入元素和库 exceljs 读取和处理 *.xlsx 文件。另请参阅下面的示例代码。
不幸的是,exceljs 似乎不支持打开文档电子表格文件 *.ods。(worksheet
未定义)。
=> 如何使用 javascript 读取和处理 *.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;
}
有关的
解决方案
感谢 Brian 的评论,我设法使用 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);
}
}) ;
}
推荐阅读
- python - PyTorch中点操作导致的层权重
- python - 如何从python中的表中抓取url
- r - 让 R 打印一个 Stata 命令
- python - FPDF Emoji Star 问题
- wcf - System.Security.Cryptography.CryptographicException:使用配置的 WCF 客户端证书身份验证指定的提供程序类型无效
- c# - 如果它们以任何方式交叉,则比较两个 DateTime .TimeOfDay。ASP C#
- sqlalchemy - SQLAlchemy:根据列值有条件地在表中创建关系
- .htaccess - 如何在不禁止访问其文件的情况下使用 htaccess 禁用对文件夹的访问?
- javascript - 在 Javascript 中解析 Promise 数组
- linux - 将系统上所有 git 存储库的远程从 http 更改为 ssh