网页中导入本机Excel,并用bootstrap table 显示

@ [TOC](网页中导入本机Excel,并用bootstrap table 显示)

html

 <div class="table-box" style="margin: 5px">
        <div class="toolbar" style="width: 100%; margin-left: 20px; display: flex; flex-direction: row; flex-wrap: wrap; align-items: flex-center; justify-content: space-between;">
            <button id="new" class="btn btn-success"> New </button>
            <button id="remove" class="btn btn-danger" data-toggle="modal" data-target="#deleteModal" disabled>
                <i class="glyphicon glyphicon-remove"></i> Delete
            </button>
            <button id="getTableData" class="btn btn-primary" data-toggle="modal" data-target="#saveModal"> Save
            </button>
            
            <div>
                <ul class="navbar-nav">
                    <li class="nav-item dropdown">
                        <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink"
                            data-toggle="dropdown">导入Excel</a>
                        <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
                            <a class="dropdown-item" href="#">导入MRP_Calculation</a>
                            <input type="file" name="loadMRP" id="MRP-file">
                            <div class="dropdown-divider"></div>
                            <a class="dropdown-item" href="#">导入Parts</a>
                            <input type="file" name="loadParts" id="Parts-file">
                            <div class="dropdown-divider"></div>

                            <a class="dropdown-item" href="#">导入Spicke_Order</a>
                            <input type="file" name="loadSpicke" id="Spicke-file">
                            <div class="dropdown-divider"></div>

                            <a class="dropdown-item" href="#">导入NPI</a>
                            <input type="file" name="loadNPI" id="NPI-file">

                        </div>
                    </li>
                </ul>
            </div>

        </div>
    </div>

    <div class="container-fluid">
        <div class="row">
            <div class="col-md-12">
                <table id="table" class="table-striped " style="table-layout:auto; font-size:0.8rem;">

                </table>
            </div>
        </div>
    </div>
    </div>

引入的插件及CSS

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script src="Files/popper.min.js"></script>
    <script src="Files/xlsx.full.min.js"></script>
    <script type="text/javascript" src="xlsx.core.min.js"></script>

    <link href="https://cdn.bootcss.com/font-awesome/5.8.2/css/all.min.css" rel="stylesheet">
    <link rel="stylesheet" href="Files/bootstrap.min.css" crossorigin="anonymous">
    <link rel="stylesheet" href="Files/bootstrap-table.min.css" crossorigin="anonymous">

    <script type="text/javascript" src="Files/bootstrap.min.js"></script>
    <script type="text/javascript" src="Files/bootstrap-table.min.js"></script>
    <script src="Files/bootstrap-table-export.min.js"></script>
    <link href="Files/toastr.min.css" rel="stylesheet">
    <script src="Files/toastr.min.js"></script>

style

<style>
       .table .thead-blue th {
           color: #fff;
           background-color: #3195f1;
           border-color: #0d7adf;
           font-size: 0.6rem
       }

       .focusCell {
           border: 2px solid rgb(122, 124, 241) !important;
       }

       .dropdown-menu a {
           color: royalblue
       }
   </style>

JS

 <script>
        $(function () {

            var $table = $('#table')
            var loadData = []
            var tableColumns = []
            var unvisibleColumn = ['WK1_QTY', 'WK1_BALANCE', 'WK2_QTY', 'WK2_BALANCE', 'WK3_QTY', 'WK3_BALANCE', 'WK4_QTY', 'WK4_BALANCE',
                'WK5_QTY', 'WK5_BALANCE', 'WK6_QTY', 'WK6_BALANCE', 'WK7_QTY', 'WK7_BALANCE', 'WK8_QTY', 'WK8_BALANCE', 'WK9_QTY',
                'WK9_BALANCE', 'WK10_QTY', 'WK10_BALANCE', 'WK11_QTY', 'WK11_BALANCE', 'WK12_QTY', 'WK12_BALANCE', 'WK13_QTY', 'WK13_BALANCE']
            function Columns_Data(excelData) {
                var oneBuyerData = []

                var keys = tHead(excelData[0]);

                addColumnStyle = function (value, row, index, field) {
                    return { css: { "color": "blue" } }
                }

                tableColumns.push({ checkbox: true })
                $.each(keys, function (i, key) {
                    var column = {};
                    if ((key.substr(0, 2) == "WK") && (key.substr(key.length - 3, 3) == "QTY")) {
                        var addColumn = {}
                        addColumn['field'] = key.substr(0, key.length - 3) + "PO"
                        addColumn['title'] = key.substr(0, key.length - 3) + "PO"
                        addColumn['cellStyle'] = 'addColumnStyle'
                        addColumn['sortable'] = true;
                        addColumn['align'] = 'center';
                        tableColumns.push(addColumn)
                    }
                    if (unvisibleColumn.indexOf(key) >= 0) {
                        column['visible'] = false
                    }
                    column['field'] = key;
                    column['title'] = key;
                    column['sortable'] = true;
                    column['align'] = 'center';
                    if (key == 'SUPPLIER') {
                        // column['width'] = '100px';
                        column['align'] = 'left';
                    }
                    tableColumns.push(column)
                })

                $.each(excelData, function (i, item) {
                    if ($.trim(item.BUYER_NAME) == $.trim($("#buyer").text())) {
                        oneBuyerData.push(item)
                    }
                })

                $table.bootstrapTable('refreshOptions', {
                    columns: tableColumns,
                    data: oneBuyerData
                })
            }

            // $table.on('all.bs.table', function (e, name, args) {
            //     console.log(name, args)
            // })

            $table.on('post-header.bs.table', function () {
                $("#table td").attr('contenteditable', true);
            })

            // $table.on('click-cell.bs.table', function (obj, field, value, row, $element) {
            //     $element.css('border', '1px solid redred')
            // })

            $('#table').on('click', 'td', function () {
                $(this).addClass('focusCell')
            })

            $('#table').on('blur', 'td', function () {
                $(this).removeClass('focusCell')
            })

            $table.bootstrapTable({
                // url: "json/data1.json",
                data: loadData,
                toolbar: ".toolbar",
                locale: "en-US",
                clickEdit: true,
                showRefresh: true,
                showColumns: true,
                search: true,
                pagination: true,       //显示分页条
                paginationVAlign: "top",
                showPaginationSwitch: true,     //显示切换分页按钮
                clickToSelect: true,  //点击row选中radio或CheckBox
                showExport: true,
                pageSize: 100,//每页默认条数
                pageNumber: 1,//默认打开y页面
                showExport: true,
                contentEditable: true,
                stickyHeader: true,
                theadClasses: "thead-blue",//设置thead-blue为表头样式
                columns: tableColumns,
                height: screen.availHeight - 110
            })

            $('#MRP-file').change(function (e) {
                var files = e.target.files;
                var fileReader = new FileReader();
                fileReader.onload = function (ev) {
                    try {
                        var data = ev.target.result
                        workbook = XLSX.read(data, {
                            type: 'binary'
                        }) // 以二进制流方式读取得到整份excel表格对象
                        persons = []; // 存储获取到的数据
                    } catch (e) {
                        console.log('文件类型不正确');
                        return;
                    }
                    // 表格的表格范围,可用于判断表头是否数量是否正确
                    var fromTo = '';
                    // 遍历每张表读取
                    for (var sheet in workbook.Sheets) {
                        if (workbook.Sheets.hasOwnProperty(sheet)) {
                            fromTo = workbook.Sheets[sheet]['!ref'];
                            console.log(fromTo);
                            persons = persons.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet]));
                            // break; // 如果只取第一张表,就取消注释这行
                        }
                    }
                    loadData = persons;
                    // console.log(loadData)
                    Columns_Data(loadData)
                    console.log(tableColumns)

                };
                // 以二进制方式打开文件
                fileReader.readAsBinaryString(files[0]);
            });

            function tHead(data) {      //------------获得Excel数据的表头
                var h = new Array();
                var ii = 0;
                $.each(data, function (i, item) {
                    h[ii] = i;
                    ii = ii + 1;
                })
                return h;
            }

        })
    </script>

效果

最终效果新手上路,不喜勿喷。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值