您的当前位置:首页正文

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;
    }

因篇幅问题不能全部显示,请点此查看更多更全内容