luckysheet导入Excel
来源:华佗健康网
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/css/pluginsCss.css' />
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/plugins.css' />
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/css/luckysheet.css' />
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/assets/iconfont/iconfont.css' />
<script src="https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/js/plugin.js"></script>
<script src="https://cdn.jsdelivr.net/npm/luckysheet/dist/luckysheet.umd.js"></script>
<script src="https://unpkg.com/xlsx-populate/browser/xlsx-populate.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.0/papaparse.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
$("#upload").click(() => {
document.getElementById('fileInput').click();
})
const fileInput = document.getElementById('fileInput');
// 监听文件是否上传
fileInput.addEventListener('change', function (event) {
const file = event.target.files[0];
// Check the file extension
const fileName = file.name;
const fileExtension = fileName.substring(fileName.lastIndexOf('.') +1).toLowerCase();
if (fileExtension === 'xls' || fileExtension === 'xlsx' || fileExtension === 'csv') {
handleFileImport(file);
} else {
alert('文件不合法');
}
}, false);
// 处理文件导入的函数
function handleFileImport(file) {
const fileReader = new FileReader();
fileReader.onload = function (e) {
const data = new Uint8Array(e.target.result);
if (file.name.endsWith('.csv')) {
Papa.parse(data, {
complete: function (parsedData) {
// 更新Luckysheet的数据
options.data[0].data = parsedData.data;
// 渲染更新后的Luckysheet
luckysheet.create(options);
},
header: false,
skipEmptyLines: true
});
} else {
var luckysheetData = convertToLuckysheet(data);
// 从导入的工作表中获取数据
const importedData = luckysheetData[0].data;
var parseArrayToLuckysheetData1 = parseArrayToLuckysheetData(importedData);
// 更新Luckysheet的数据
options.data[0].data = parseArrayToLuckysheetData1;
// 渲染更新后的Luckysheet
luckysheet.create(options);
}
};
fileReader.readAsArrayBuffer(file);
}
function parseArrayToLuckysheetData(array) {
let empty = []
const sheetsData = Array(60).fill(empty);
// 假设数组中的每个元素都是一个工作表的数据
array.forEach((sheetData, index) => {
let hang = [];
for (let i = 0; i <60; i++) {
const sheet = {
bg: null,
bl: 1,
ct: {fa: 'General', t: 'g'},
fc: "rgb(0, 0, 0)",
ff: 0,
fs: 13,
ht: 0,
it: 0,
vt: 0,
};
hang.push(sheet)
}
if (sheetData !== null){
sheetData.forEach((data,index) => {
const sheet = {
bg: null,
bl: 1,
ct: {fa: 'General', t: 'g'},
fc: "rgb(0, 0, 0)",
ff: 0,
fs: 13,
ht: 0,
it: 0,
m: data,
v: data,
vt: 0,
};
hang[index] = sheet;
})
}
sheetsData[index] = hang
});
return sheetsData;
}
function convertToLuckysheet(uint8Array) {
const data = new Uint8Array(uint8Array);
const workbook = XLSX.read(data, { type: 'array' });
const luckysheetData = [];
workbook.SheetNames.forEach(sheetName => {
const worksheet = workbook.Sheets[sheetName];
const sheetData = XLSX.utils.sheet_to_json(worksheet, { header: 1 });
luckysheetData.push({
name: sheetName,
data: sheetData
});
});
return luckysheetData;
}
因篇幅问题不能全部显示,请点此查看更多更全内容