Sapui5 文件上传器-上传excel文件并将其转换为JSON并绑定到表
在sapui5中的Sapui5 文件上传器-上传excel文件并将其转换为JSON并绑定到表,sapui5,Sapui5,在sapui5中的file uploader控件上上载excel文件后,使用以下代码将excel文件转换为JSON handleExcelUpload : function(e) { this._import(e.getParameter("files") && e.getParameter("files")[0]); }, _import : function(file) { if (file && window.F
file uploader
控件上上载excel文件后,使用以下代码将excel文件转换为JSON
handleExcelUpload : function(e) {
this._import(e.getParameter("files")
&& e.getParameter("files")[0]);
},
_import : function(file) {
if (file && window.FileReader) {
var reader = new FileReader();
that = this;
result = {};
var data;
reader.onload = function(e) {
var data = e.target.result;
var wb = XLSX.read(data, {
type : 'binary'
});
wb.SheetNames
.forEach(function(sheetName) {
var roa = XLSX.utils
.sheet_to_row_object_array(wb.Sheets[sheetName]);
if (roa.length > 0) {
result[sheetName] = roa;
}
});
};
reader.readAsBinaryString(file);
};
},
注意:我使用了jszip.js
和xlsx.js
库将excel转换为JSON
现在,在result
变量中,我得到了JSON格式的数据,这些数据已经绑定到表中
问题是,JSON-binding
与table
在Chrome、Firefox
最新浏览器中运行良好,但在ie11
浏览器中不起作用,或者在表中只显示无数据
是否有任何其他文件读取器
方法支持IE11?是的,我得到了答案。。我在Javascript中找到了readAsArrayBuffer
方法,它与所有最新浏览器兼容,即使在IE11
这是我的工作代码。
XML代码:
<FileUploader id="fileUploader" name="myFileUpload"
class="sapUiSmallMarginEnd" uploadUrl="upload/" width="400px"
tooltip="Upload your file to the local server" uploadComplete="handleUploadComplete"
change="handleExcelUpload" placeholder="Please Select File" />
在不使用外部库的情况下尝试以下操作:
/*在“按下”功能中*/
var file=oFileUploader.getFocusDomRef().files[0];
if(文件和窗口.FileReader){
var reader=new FileReader();
var=这个;
reader.onload=函数(e){
var strCSV=e.target.result;
var arrCSV=strCSV.replace(/['”,]/g',).split(/[↵\n] +/).join(“;”).split(“;”);
var noOfCols=11;//11列
var hdrRow=arrcv.拼接(0,noOfCols);
var oData=[];
而(arrcv.length>0){
var obj={};
变量行=arrcvs.拼接(0,noOfCols)
如果(行长度>1){
对于(var i=0;i
问候。检查我的要点中的代码
将其放在控制器中,使用JS客户端解析文件
var fU = this.getView().byId("idfileUploader");
var domRef = fU.getFocusDomRef();
var file = domRef.files[0];
var reader = new FileReader();
var params = "ItemsJson=";
reader.onload = function(oEvent) {
var strCSV = oEvent.target.result;
var arrCSV = strCSV.match(/[\w .]+(?=,?)/g);
var noOfCols = 3;
var headerRow = arrCSV.splice(0, noOfCols);
var data = [];
while (arrCSV.length > 0) {
var obj = {};
var row = arrCSV.splice(0, noOfCols);
for (var i = 0; i < row.length; i++) {
obj[headerRow[i]] = row[i].trim();
}
data.push(obj);
}
data.reverse();
var json = JSON.stringify(data); // send to the backend
var fU=this.getView().byId(“idfileUploader”);
var domRef=fU.getFocusDomRef();
var file=domRef.files[0];
var reader=new FileReader();
var params=“ItemsJson=”;
reader.onload=函数(oEvent){
var strCSV=oEvent.target.result;
var arrCSV=strCSV.match(/[\w.]+(?=,?)/g);
var noOfCols=3;
var headerRow=Arrcv.拼接(0,noOfCols);
var数据=[];
而(arrcv.length>0){
var obj={};
var row=arrcv.拼接(0,noOfCols);
对于(变量i=0;i
如果我没有回答你,请告诉我
var Base64 = {}; // Base64 namespace
Base64.code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
Base64.encode = function(str, utf8encode) {
utf8encode = (typeof utf8encode == 'undefined') ? false : utf8encode;
var o1, o2, o3, bits, h1, h2, h3, h4, e=[], pad = '', c, plain, coded;
var b64 = Base64.code;
plain = utf8encode ? Utf8.encode(str) : str;
c = plain.length % 3;
if (c > 0) { while (c++ < 3) { pad += '='; plain += '\0'; } }
for (c=0; c<plain.length; c+=3) {
o1 = plain.charCodeAt(c);
o2 = plain.charCodeAt(c+1);
o3 = plain.charCodeAt(c+2);
bits = o1<<16 | o2<<8 | o3;
h1 = bits>>18 & 0x3f;
h2 = bits>>12 & 0x3f;
h3 = bits>>6 & 0x3f;
h4 = bits & 0x3f;
e[c/3] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
}
coded = e.join('');
coded = coded.slice(0, coded.length-pad.length) + pad;
return coded;
}
Base64.decode = function(str, utf8decode) {
utf8decode = (typeof utf8decode == 'undefined') ? false : utf8decode;
var o1, o2, o3, h1, h2, h3, h4, bits, d=[], plain, coded;
var b64 = Base64.code;
coded = utf8decode ? Utf8.decode(str) : str;
for (var c=0; c<coded.length; c+=4) {
h1 = b64.indexOf(coded.charAt(c));
h2 = b64.indexOf(coded.charAt(c+1));
h3 = b64.indexOf(coded.charAt(c+2));
h4 = b64.indexOf(coded.charAt(c+3));
bits = h1<<18 | h2<<12 | h3<<6 | h4;
o1 = bits>>>16 & 0xff;
o2 = bits>>>8 & 0xff;
o3 = bits & 0xff;
d[c/4] = String.fromCharCode(o1, o2, o3);
// check for padding
if (h4 == 0x40) d[c/4] = String.fromCharCode(o1, o2);
if (h3 == 0x40) d[c/4] = String.fromCharCode(o1);
}
plain = d.join(''); // join() is far faster than repeated string concatenation in IE
return utf8decode ? Utf8.decode(plain) : plain;
}
var file = oFileUploader.getFocusDomRef().files[0];
if (file && window.FileReader) {
var reader = new FileReader();
var that = this;
reader.onload = function(e) {
var strCSV = e.target.result;
var arrCSV = strCSV.replace(/['",]/g, '').split(/[↵\n]+/).join(';').split(';');
var noOfCols = 11; // 11 Columns
var hdrRow = arrCSV.splice(0, noOfCols);
var oData = [];
while (arrCSV.length > 0) {
var obj = {};
var row = arrCSV.splice(0, noOfCols)
if (row.length > 1) {
for (var i = 0; i < row.length; i++) obj[hdrRow[i].replace(/\r/g, "")] = row[i].trim();
oData.push(obj) // Data Json
}
}
oTable.setModel(new sap.ui.model.json.JSONModel(oData)); // Binding model
};
reader.readAsText(file, 'ISO-8859-1');
}
var fU = this.getView().byId("idfileUploader");
var domRef = fU.getFocusDomRef();
var file = domRef.files[0];
var reader = new FileReader();
var params = "ItemsJson=";
reader.onload = function(oEvent) {
var strCSV = oEvent.target.result;
var arrCSV = strCSV.match(/[\w .]+(?=,?)/g);
var noOfCols = 3;
var headerRow = arrCSV.splice(0, noOfCols);
var data = [];
while (arrCSV.length > 0) {
var obj = {};
var row = arrCSV.splice(0, noOfCols);
for (var i = 0; i < row.length; i++) {
obj[headerRow[i]] = row[i].trim();
}
data.push(obj);
}
data.reverse();
var json = JSON.stringify(data); // send to the backend