前端解析Excel文件js-xlsx与bootstrapTable

前端解析Excel文件js-xlsx与bootstrapTable

1.引入xlsx.js

<script src="https://cdn.bootcss.com/xlsx/0.11.5/xlsx.core.min.js"></script>

2.上传Excel按钮

<input type="button" value="上传Excel" onclick="$('#fileOne').click()" class="btn btn-primary" style="margin-right: -3px;">
<input type="text" id="showFileNameByExcel" disabled="disabled" readonly style="border: none; background-color: #F5F5F5;">
<input type="file" id="fileOne" name="fileOne" onchange="getFileNameByExcel(this.files)" class="form-input" style="display: none;margin-left: 15px"accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"/>
<button class="pull-left" type="button" class="btn btn-info" style="display: inline-block;margin-left: -35px" onclick="destroy();">重置</button>

上传Excel按钮
上传Excel按钮

3.读取Excel文件

var excel = [];

function getFileNameByExcel(files) {
    excel = [];
    //table销毁,否则会保留上次加载的内容
    $('#exampleTable').bootstrapTable('destroy');
    //处理文件名称,防止文件名过长
    var name = $("#fileOne").val().split("\\");
    name = name[name.length - 1];
    if (strlen(name) > 15) {
        name = name.substring(0,8)+"..."+name.split(".")[1]
        $("#showFileNameByExcel").val(name);
    } else {
        $("#showFileNameByExcel").val(name);
    }
    
    if (files.length) {
        var file = files[0];
        var reader = new FileReader();
        //读取Excel文件
        reader.onload = function (e) {
            var data = e.target.result;
            var workbook = XLSX.read(data, {type: 'binary'});
            var worksheet = workbook.Sheets[workbook.SheetNames[0]];
            jsonData = XLSX.utils.sheet_to_json(worksheet);
            tempNo = jsonData[1].__EMPTY;
            jsonData.splice(0, 3);
            $.each(jsonData, function (name, value) {
                var excelInfo = {};
                excelInfo["realname"] = value.结佣模板;
                excelInfo["idCard"] = value.__EMPTY;
                excelInfo["openBank"] = value.__EMPTY_1;
                excelInfo["bankAccount"] = value.__EMPTY_2;
                excelInfo["phone"] = value.__EMPTY_3;
                excelInfo["settleAmount"] = value.__EMPTY_4;
                excelInfo["packageAmount"] = value.__EMPTY_5;
                excel.push(excelInfo);
            });
            json();
        };
        reader.readAsBinaryString(file);
    }
}

//将读取的ExcelJson显示到表格
function json() {
    $('#exampleTable').bootstrapTable({
        data: excel,
        columns: [{
            field: 'no',
            align: 'center',
            title: '序号',
            formatter: function (value, row, index) {
                return index + 1;
            }
        }, {
            field: 'realname',
            align: 'center',
            title: '收款人姓名',
        }, {
            field: 'idCard',
            align: 'center',
            title: '收款人身份证',
        }, {
            field: 'openBank',
            align: 'center',
            title: '开户行',
        }, {
            field: 'bankAccount',
            align: 'center',
            title: '银行账号',
        }, {
            field: 'settleAmount',
            align: 'center',
            title: '结算金额',
        },{
            field: 'packageAmount',
            align: 'center',
            title: '含服务费金额',
        },]
    });
}

//获取文件名称长度,对汉字与字母数字处理
function strlen(str) {
    var len = 0;
    for (var i = 0; i < str.length; i++) {
        var c = str.charCodeAt(i);
        if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {
            len++;
        } else {
            len += 2;
        }
    }
    return len;
}

/**
 *重置excel
 **/
function uploadExcel() {
    var fileOne = document.getElementById("fileOne");
    fileOne.outerHTML = fileOne.outerHTML;
    $('#showFileNameByExcel').val("");
    $('#exampleTable').bootstrapTable('destroy');
}

4.结果

最终结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是一个利用 js-xlsx 实现 Excel 文件导入导出功能的示例: 首先在 HTML 文件中引入 js-xlsx 库: ```html <script src="https://cdn.jsdelivr.net/npm/xlsx/dist/xlsx.full.min.js"></script> ``` 然后在 JavaScript 文件中编写以下代码: ```javascript // 导出 Excel 文件 function exportExcel(data, filename) { const ws = XLSX.utils.json_to_sheet(data); const wb = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(wb, ws, 'Sheet1'); XLSX.writeFile(wb, `${filename}.xlsx`); } // 导入 Excel 文件 function importExcel(file, callback) { const reader = new FileReader(); reader.readAsArrayBuffer(file); 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 result = XLSX.utils.sheet_to_json(worksheet, { header: 1 }); callback(result); }; } ``` 其中,exportExcel 函数用于将数据导出为 Excel 文件,参数 data 为要导出的数据,filename 为导出的文件名。 importExcel 函数用于导入 Excel 文件,参数 file 为要导入的文件,callback 为导入成功后的回调函数,回调函数的参数 result 为导入的数据。 示例代码中使用了 FileReader 对象读取文件内容,然后使用 js-xlsx解析 Excel 文件并将数据转化为 JSON 格式。 使用示例: ```javascript const data = [ { name: '张三', age: 20, gender: '男' }, { name: '李四', age: 22, gender: '女' }, { name: '王五', age: 25, gender: '男' }, ]; exportExcel(data, 'test'); // 导出 Excel 文件文件名为 test.xlsx const inputElement = document.getElementById('input-file'); inputElement.addEventListener('change', (e) => { const file = e.target.files[0]; importExcel(file, (result) => { console.log(result); // 输出导入的数据 }); }); ``` 在 HTML 文件中添加一个文件选择框: ```html <input type="file" id="input-file"> ``` 用户选择一个 Excel 文件后,调用 importExcel 函数导入数据,并在回调函数中处理导入的数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值