Исправлена обработка ошибок при загрузке Excel файлов
This commit is contained in:
parent
cd32645377
commit
3cd599f56b
@ -295,6 +295,23 @@
|
||||
</footer>
|
||||
|
||||
<script src="https://cdn.sheetjs.com/xlsx-0.20.1/package/dist/xlsx.full.min.js"></script>
|
||||
<script>
|
||||
// Проверка загрузки библиотеки
|
||||
window.addEventListener('DOMContentLoaded', function() {
|
||||
console.log('DOM загружен');
|
||||
if (window.XLSX) {
|
||||
console.log('SheetJS версии:', XLSX.version);
|
||||
} else {
|
||||
console.error('SheetJS НЕ загружен!');
|
||||
document.getElementById('upload-section').innerHTML =
|
||||
'<div class="kt-ai-card" style="padding: var(--kt-ai-space-5); text-align: center; background: var(--kt-ai-danger-bg);">' +
|
||||
'<h3>Ошибка загрузки библиотеки</h3>' +
|
||||
'<p>Не удалось загрузить библиотеку для работы с Excel.</p>' +
|
||||
'<p>Проверьте подключение к интернету или обновите страницу.</p>' +
|
||||
'</div>';
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<script src="excel-editor.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@ -1,16 +1,26 @@
|
||||
const XLSX = window.XLSX;
|
||||
|
||||
let mainData = null;
|
||||
let templateData = null;
|
||||
let mainFileName = '';
|
||||
let templateFileName = '';
|
||||
let mappedResult = null;
|
||||
|
||||
// Проверка загрузки XLSX
|
||||
function getXLSX() {
|
||||
if (window.XLSX) return window.XLSX;
|
||||
alert('Библиотека для работы с Excel ещё не загрузилась. Подождите секунду...');
|
||||
return null;
|
||||
}
|
||||
|
||||
// Обработка выбора файла
|
||||
function handleFileSelect(event, type) {
|
||||
const XLSX = getXLSX();
|
||||
if (!XLSX) return;
|
||||
|
||||
const file = event.target.files[0];
|
||||
if (!file) return;
|
||||
|
||||
console.log('Файл выбран:', type, file.name, file.size);
|
||||
|
||||
const zone = document.getElementById(type + '-upload');
|
||||
const info = document.getElementById(type + '-file-info');
|
||||
|
||||
@ -20,14 +30,22 @@ function handleFileSelect(event, type) {
|
||||
if (type === 'main') {
|
||||
mainFileName = file.name;
|
||||
readExcel(file, (data) => {
|
||||
console.log('Основной файл прочитан, строк:', data.length);
|
||||
mainData = data;
|
||||
checkFilesReady();
|
||||
}, (error) => {
|
||||
console.error('Ошибка чтения основного файла:', error);
|
||||
alert('Ошибка чтения файла: ' + error.message);
|
||||
});
|
||||
} else {
|
||||
templateFileName = file.name;
|
||||
readExcel(file, (data) => {
|
||||
console.log('Шаблон прочитан, строк:', data.length);
|
||||
templateData = data;
|
||||
checkFilesReady();
|
||||
}, (error) => {
|
||||
console.error('Ошибка чтения шаблона:', error);
|
||||
alert('Ошибка чтения файла: ' + error.message);
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -38,15 +56,36 @@ function formatFileSize(bytes) {
|
||||
return (bytes / (1024 * 1024)).toFixed(1) + ' МБ';
|
||||
}
|
||||
|
||||
function readExcel(file, callback) {
|
||||
function readExcel(file, callback, errorCallback) {
|
||||
const XLSX = window.XLSX;
|
||||
if (!XLSX) {
|
||||
if (errorCallback) errorCallback(new Error('Библиотека XLSX не загружена'));
|
||||
return;
|
||||
}
|
||||
|
||||
console.log('Чтение файла:', file.name);
|
||||
const reader = new FileReader();
|
||||
reader.onload = (e) => {
|
||||
const data = new Uint8Array(e.target.result);
|
||||
const workbook = XLSX.read(data, { type: 'array' });
|
||||
const sheetName = workbook.SheetNames[0];
|
||||
const worksheet = workbook.Sheets[sheetName];
|
||||
const json = XLSX.utils.sheet_to_json(worksheet);
|
||||
callback(json);
|
||||
try {
|
||||
const data = new Uint8Array(e.target.result);
|
||||
console.log('Файл загружен в память, байт:', data.length);
|
||||
const workbook = XLSX.read(data, { type: 'array' });
|
||||
console.log('Workbook прочитан, листов:', workbook.SheetNames.length);
|
||||
const sheetName = workbook.SheetNames[0];
|
||||
const worksheet = workbook.Sheets[sheetName];
|
||||
const json = XLSX.utils.sheet_to_json(worksheet);
|
||||
console.log('Данные конвертированы в JSON, строк:', json.length);
|
||||
callback(json);
|
||||
} catch (error) {
|
||||
console.error('Ошибка при чтении Excel:', error);
|
||||
if (errorCallback) errorCallback(error);
|
||||
else alert('Ошибка при чтении файла: ' + error.message);
|
||||
}
|
||||
};
|
||||
reader.onerror = () => {
|
||||
const error = new Error('Не удалось прочитать файл');
|
||||
if (errorCallback) errorCallback(error);
|
||||
else alert(error.message);
|
||||
};
|
||||
reader.readAsArrayBuffer(file);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user