Я использую Excel Eddin, используя Excel JS API. У меня нет бэкэнд логи c. Все логи c запускаются на клиенте. Я использую версию сообщества Sheet JS для загрузки существующих файлов .xlsx или .csv. Но Addin аварийно завершает работу, например, он перестает отвечать на запросы и автоматически перезапускается, как только я пытаюсь загрузить файл .xlsx с более чем 20К строк или файл .csv с более чем 97К строк. Я ожидаю входные файлы до 100К строк. Я использую следующее на моей html странице
Функция, которая читает данные, является следующей
function excelToJson(file) {
return new Promise(function (resolve, reject) {
var reader = new FileReader();
reader.onload = function (e) {
let fileData = null;
if (!e) {
fileData = reader.content;
}
else {
fileData = e.target.result;
}
var workbook = XLSX.read(fileData, {
type: 'binary'
});
resolve(workbook);
};
reader.onerror = function () {
reject(error);
};
// the following is for Internet Explorer Support
if (!FileReader.prototype.readAsBinaryString) {
FileReader.prototype.readAsBinaryString = function (fileData) {
var binary = "";
var pt = this;
var reader = new FileReader();
reader.onload = function (e) {
var bytes = new Uint8Array(reader.result);
var length = bytes.byteLength;
for (var i = 0; i < length; i++) {
binary += String.fromCharCode(bytes[i]);
}
//pt.result - readonly so assign binary
pt.content = binary;
$(pt).trigger('onload');
};
reader.readAsArrayBuffer(fileData);
};
}
reader.readAsBinaryString(file);
});
и здесь сработала предыдущая функция
$('input[type="file"]').change(function (e) {
let file = e.target.files[0];
let fileName = file.name;
excelToJson(file).then(function (data) {
excelFileData = data;
})
});
Кажется, что она неплохо справляется с CSV-файлами, но, как только я попробую xlsx, произойдет сбой. Я попытался использовать некоторые параметры синтаксического анализа библиотеки Sheet JS в методе read () (https://github.com/sheetjs/sheetjs#parsing -options ), но безуспешно. Мне нужно получить все данные, так как я затем их обрабатываю и добавляю в текущую рабочую книгу. Есть идеи?