使用xlsx.full.min.js获取excel表格数据,生成table表格在线浏览

<input type="button" value="预览数据" onclick="previewExcel()"> 


<script src="{% static 'js//xlsx.full.min.js'%}"></script>
        <script>
            function previewExcel() {
                const fileInput = document.getElementById('id_file');//插入要改的id
                const file = fileInput.files[0];

                if (!file) {
                    alert('请先选择一个Excel文件!');
                    return;
                }

                const reader = new FileReader();
                reader.onload = (event) => {
                    const data = event.target.result;
                    const workbook = XLSX.read(data, { type: 'binary' });

                    // 获取第一个工作表的数据
                    const sheetName = workbook.SheetNames[0];
                    const worksheet = workbook.Sheets[sheetName];
                    const parsedData = XLSX.utils.sheet_to_json(worksheet);

                    // 渲染数据到预览区域
                    renderPreviewTable(parsedData);
                };

                reader.onerror = () => {
                    alert('无法读取选定的文件,请确保这是一个有效的Excel文件!');
                };

                reader.readAsBinaryString(file);
            }

            // 渲染数据为表格形式
            function renderPreviewTable(data) {
                const previewTable = document.getElementById('previewTable');
                if (!previewTable) {
                    console.error('找不到预览表格元素,请确保ID为"previewTable"的元素存在。');
                    return;
                }

                let tableHtml = '<table class="layui-table layui-form" border="1">'; 

                // 获取表头并构建表头行
                const headerRow = Object.keys(data[0]); 
                tableHtml += '<thead><tr>';
                headerRow.forEach(header => {
                    tableHtml += `<th>${header}</th>`;
                });
                tableHtml += '</tr></thead><tbody>';

                // 遍历数据,排除每一行的最后一列的内容
                for (const row of data) {
                    tableHtml += '<tr>';
                    Object.values(row).forEach(value => { 
                        tableHtml += `<td>${value}</td>`;
                    });
                    tableHtml += '</tr>';
                }

                tableHtml += '</tbody></table>';
                previewTable.innerHTML = tableHtml;
            }

        </script>

input是django服务后端生成也可以用

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值