js_将excel内容先存入数据库,再将数据显示到页面

<%--将excel数据显示到页面--%>
<script type="text/javascript">
    //原创来自 www.luofenming.com
    //首先监听input框的变动,选中一个新的文件会触发change事件
    document.querySelector("#testFile").addEventListener("change", function () {

        //获取到选中的文件
        var file = document.querySelector("#testFile").files[0];

        //判断文件大小
        //if (file.size > 1024 * 1024) {
        //    alert('当前文件大小:' + Math.floor(file.size / 1024) + 'KB,上传文件不能大于1024KB');
        //    return false;
        //}

        //判断文件类型
        var type = file.name.split('.');
        if (type[type.length - 1] !== 'xlsx' && type[type.length - 1] !== 'xls' && type[type.length - 1] !== 'XLS' && type[type.length - 1] !== 'XLSX') {
            alert('只能选择excel文件导入');
            return false;
        }

        //新建一个对象_读取文件
        const reader = new FileReader();

        //读取二进制字符串
        reader.readAsBinaryString(file);

        //文件读取完时触发一个方法
        reader.onload = function (e) {
            const data1 = e.target.result; //把读出来的二进制字符串赋值给data1变量
            const zzexcel = window.XLSX.read(data1, { //从XLS文件中读取
                type: 'binary',         //数据类型_二进制数据
                cellDates: true,        //将 12/13/22 变为 2022/12/13 追加无效  。。。重要、重要
                dateNF: 'yyyy/mm/dd'    //指定日期格式为四位数的年份  。。。重要、重要
            });

            //申明变量result
            const result = [];            

            //从EXCEL中取值,放入变量result
            for (let i = 0; i < zzexcel.SheetNames.length; i++) {
                const newData = window.XLSX.utils.sheet_to_json(zzexcel.Sheets[zzexcel.SheetNames[i]]); //xlsx.core.min.js插件 将excel数据取出
                
                //console.log(newData);           //F12 控制台中_确认
                result.push(...newData)
            }

            var data2 = JSON.stringify(result)   //用变量接收JSON数据,JSON.stringify(result)将对象变为字符串
            var excel_data = JSON.parse(data2); //JSON.parse()将字符串变为对象 。。。重要、重要
            //console.log(excel_data);           //F12 控制台中_确认

            jspreadsheet(document.getElementById('spreadsheet'), {
                //往jexcel中装入数据
                data: excel_data,
            });

            ////逐条提取数据
            for (var i = 0; i < result.length; i++) {
                //console.log(JSON.stringify(result[i]));   //EXCEL中每一行数据 F12的控制台中_确认
                var strJsonData = JSON.stringify(result[i]);
                //alert(strJsonData);      //弹窗_确认
                //}  


                //将excel_data传给后台,写入数据库 
                $.ajax({
                    url: "/jexcel_数据表_excel导入到页面.ashx",
                    datatype: "json",
                    data: { "RequestType": "inserted_excel_data", "excel_data": strJsonData },
                    success: function (data) {
                        //alert("excel导入成功")
                        document.getElementById('spreadsheet').jexcel.refresh(); //刷新表格
                    },
                    error: function (error) {
                        alert("excel导入不成功,格式、字段名与网页中的表格不一致");
                        //var falg = true;
                    }
                });

                //如果出现错误,马上停止????开启后只能处理一条数据
                //if (falg = true) {
                //    return;
                //}

            }

            //刷新表格  ????没成功???
            document.getElementById('spreadsheet').jexcel.refresh();
        }
    });

</script>

 

 
posted @ 2024-02-24 14:22  AutomationAnywhere  阅读(74)  评论(0)    收藏  举报