gpt4 book ai didi

javascript - 如何在SAPUI5中上传Excel文件?

转载 作者:行者123 更新时间:2023-12-03 03:36:47 25 4
gpt4 key购买 nike

所以我有这个应用程序,我使用 FileUploader 上传 csv 文件。但是现在我的要求是还允许 Excel 文件。问题是 FileUploader 不支持 Excel,因为它读取垃圾。这是我尝试根据此示例解析Excel文件http://oss.sheetjs.com/js-xlsx/

代码:

        var fileUpload = this.getView().byId("fileUploader");
var domRef = fileUpload.getFocusDomRef();
var file = domRef.files[0];
var XLSX = new ExcelPlus();
XLSX.createFile(["CT_MAIN"]);

var reader = new FileReader();

reader.onload = function(e) {
var strCSV = e.target.result;
var arr = String.fromCharCode.apply(null, new
Uint8Array(strCSV));

// var arr = fixData(strCSV);

console.log('data');
console.log(arr);

var workbook = XLSX.read(arr, {type : 'base64'});
console.log('output');
console.log(workbook);

//var output = toCsv(workbook);
//each one of the rows in the csv file
//var rows = arr;//strCSV.split("\n");
var rows = arr.split("\n");
.....

};

//reader.readAsText(file);
reader.readAsArrayBuffer(file);
//reader.readAsBinaryString(file);

如果我使用此代码上传 csv 文件,一切正常。如果我使用 Excel 文件,我会得到以下内容

[1][Content_Types].xml ¢ [1]( [1]-”ËNË0E÷HüCä-Jܲ@5í‚Ç Q>Àä“ƪc[žiiÿž‰ûB¡ j7± ÏÜ{2ñÍh²nm¶‚ ˆÆ»R´ÈÀU^7/ÅÇì%¿'rZYï @1__f›∼q·àR4DáAJØh >€ãÚÇV ßƹªZ´9ÈÛÁàNVÞ 8Ê©ÓãÑ Ôji){^óã-I´"{Üv^¥P!XS)bR¹rú—K¸s(¸3Õ`c[1]Þ0†½ÝÎß»⁄7 M4²©ŠôªZÆk+¿|\|z¿(Ž´ôPúº6 h_-[ž@!‚ÒØPk´Ø2nÏ}ä? £LËð Ýû%á äßdºždN"m,à¥ÇžDO97‚~§ Èɸ8ÀOíc |nϑä Eøÿ ö éºóÀBÉÀ!$}‡íàÈé;{ìÐå[fîñ–é2þÿÿ

我做错了什么,或者我在这里错过了什么?

编辑:执行 var workbook = XLSX.read(arr, {type : 'base64'}); 后对于这两种文件类型,我都得到 null。上面的垃圾日志来自console.log(arr);

最佳答案

由于您是从 domRef 获取文件,因此不需要 ExcelPlus。您只需使用 xlsx 将文件作为二进制字符串读取即可。您必须在脚本中包含 xlsx.full.min.js。

var fileUpload = this.getView().byId("fileUploader");
var domRef = fileUpload.getFocusDomRef();
var file = domRef.files[0];
//var XLSX = new ExcelPlus();
//XLSX.createFile(["CT_MAIN"]);

var reader = new FileReader();
var name = file.name;

reader.onload = function (e) {
var data = e.target.result;
var workbook = XLSX.read(data, { type: 'binary' });

var result = {};
workbook.SheetNames.forEach(function (sheetName) {
var rObjArr = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
if (rObjArr.length > 0) {
result[sheetName] = rObjArr;
}
});
var output = JSON.stringify(result, 2, 2);

console.log('output');
console.log(output);
};

reader.readAsBinaryString(file);

关于javascript - 如何在SAPUI5中上传Excel文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45820761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com