如何修复未捕获的异常:Header 签名
How to fix uncaught exception: Header Signature
我想上传一份 excel 文档,阅读该文档并以 table 格式将 excel 文档内容写入 jquery 我已经通过示例实现了这一点来自 here. firstly thanks to that reference but here i was uploading my excel document from the system local storage it was showing error called "uncaught exception: Header Signature: Expected d0cf11e0a1b11ae1 saw 504b030414000600". If i was uploading the document which i had downloaded from here 的引用正在生成结果 successfully.I 我没有得到发生的错误是什么 我最近 2 天因这个错误而受苦
谁能告诉我如何解决这个问题
这是我的HTML代码
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/jszip.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/xlsx.js"></script>
<script src=" https://cdnjs.cloudflare.com/ajax/libs/xls/0.7.4-a/xls.js"></script>
<title>Test Excel</title>
</head>
<body onload="load_excel();">
<input type="file" id="my_file_input"/>
<div id='my_file_output'></div>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
</body>
</html>
这是我的JS代码:
function load_excel(){
var oFileIn;
oFileIn = document.getElementById('my_file_input');
if(oFileIn.addEventListener) {
oFileIn.addEventListener('change', filePicked, false);
}
}
function filePicked(oEvent){
alert('Function trigggered');
// Get The File From The Input
var oFile = oEvent.target.files[0];
var sFilename = oFile.name;
// Create A File Reader HTML5
var reader = new FileReader();
// Ready The Event For When A File Gets Selected
reader.onload = function(e) {
var data = e.target.result;
var cfb = XLS.CFB.read(data, {type: 'binary'});
var wb = XLS.parse_xlscfb(cfb);
// Loop Over Each Sheet
wb.SheetNames.forEach(function(sheetName) {
// Obtain The Current Row As CSV
var sCSV = XLS.utils.make_csv(wb.Sheets[sheetName]);
var data = XLS.utils.sheet_to_json(wb.Sheets[sheetName], {header:1});
$.each(data, function( indexR, valueR ) {
var sRow = "<tr>";
$.each(data[indexR], function( indexC, valueC ) {
sRow = sRow + "<td>" + valueC + "</td>";
});
sRow = sRow + "</tr>";
$("#my_file_output").append(sRow);
});
});
};
// Tell JS To Start Reading The File.. You could delay this if desired
reader.readAsBinaryString(oFile);
}
您可以对其进行编码,使其同时接受 xlsx 和 xls。根据您的问题和 SheetJS/js-xlsx 的文档,我建议如下:
function filePicked(oEvent) {
// Get The File From The Input
var oFile = oEvent.target.files[0];
var sFilename = oFile.name;
// Create A File Reader HTML5
var reader = new FileReader();
// Ready The Event For When A File Gets Selected
reader.onload = function(e) {
var data = e.target.result;
var cfb = XLSX.read(data, {type: 'binary'});
console.log(cfb)
cfb.SheetNames.forEach(function(sheetName) {
// Obtain The Current Row As CSV
var sCSV = XLS.utils.make_csv(cfb.Sheets[sheetName]);
var oJS = XLS.utils.sheet_to_json(cfb.Sheets[sheetName]);
$("#my_file_output").html(sCSV);
console.log(oJS)
$scope.oJS = oJS
});
};
// Tell JS To Start Reading The File.. You could delay this if desired
reader.readAsBinaryString(oFile);}
我试过了,效果很好。如果我能为您提供任何帮助,请告诉我。
我想上传一份 excel 文档,阅读该文档并以 table 格式将 excel 文档内容写入 jquery 我已经通过示例实现了这一点来自 here. firstly thanks to that reference but here i was uploading my excel document from the system local storage it was showing error called "uncaught exception: Header Signature: Expected d0cf11e0a1b11ae1 saw 504b030414000600". If i was uploading the document which i had downloaded from here 的引用正在生成结果 successfully.I 我没有得到发生的错误是什么 我最近 2 天因这个错误而受苦 谁能告诉我如何解决这个问题
这是我的HTML代码
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/jszip.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/xlsx.js"></script>
<script src=" https://cdnjs.cloudflare.com/ajax/libs/xls/0.7.4-a/xls.js"></script>
<title>Test Excel</title>
</head>
<body onload="load_excel();">
<input type="file" id="my_file_input"/>
<div id='my_file_output'></div>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
</body>
</html>
这是我的JS代码:
function load_excel(){
var oFileIn;
oFileIn = document.getElementById('my_file_input');
if(oFileIn.addEventListener) {
oFileIn.addEventListener('change', filePicked, false);
}
}
function filePicked(oEvent){
alert('Function trigggered');
// Get The File From The Input
var oFile = oEvent.target.files[0];
var sFilename = oFile.name;
// Create A File Reader HTML5
var reader = new FileReader();
// Ready The Event For When A File Gets Selected
reader.onload = function(e) {
var data = e.target.result;
var cfb = XLS.CFB.read(data, {type: 'binary'});
var wb = XLS.parse_xlscfb(cfb);
// Loop Over Each Sheet
wb.SheetNames.forEach(function(sheetName) {
// Obtain The Current Row As CSV
var sCSV = XLS.utils.make_csv(wb.Sheets[sheetName]);
var data = XLS.utils.sheet_to_json(wb.Sheets[sheetName], {header:1});
$.each(data, function( indexR, valueR ) {
var sRow = "<tr>";
$.each(data[indexR], function( indexC, valueC ) {
sRow = sRow + "<td>" + valueC + "</td>";
});
sRow = sRow + "</tr>";
$("#my_file_output").append(sRow);
});
});
};
// Tell JS To Start Reading The File.. You could delay this if desired
reader.readAsBinaryString(oFile);
}
您可以对其进行编码,使其同时接受 xlsx 和 xls。根据您的问题和 SheetJS/js-xlsx 的文档,我建议如下:
function filePicked(oEvent) {
// Get The File From The Input
var oFile = oEvent.target.files[0];
var sFilename = oFile.name;
// Create A File Reader HTML5
var reader = new FileReader();
// Ready The Event For When A File Gets Selected
reader.onload = function(e) {
var data = e.target.result;
var cfb = XLSX.read(data, {type: 'binary'});
console.log(cfb)
cfb.SheetNames.forEach(function(sheetName) {
// Obtain The Current Row As CSV
var sCSV = XLS.utils.make_csv(cfb.Sheets[sheetName]);
var oJS = XLS.utils.sheet_to_json(cfb.Sheets[sheetName]);
$("#my_file_output").html(sCSV);
console.log(oJS)
$scope.oJS = oJS
});
};
// Tell JS To Start Reading The File.. You could delay this if desired
reader.readAsBinaryString(oFile);}
我试过了,效果很好。如果我能为您提供任何帮助,请告诉我。