gis以外开发系列-01读取MDB并入库遇及遇到的问题

在二三维一体化系统里读取MDB并入库

昨天接到一个小任务:在之前的系统里添加读取MDB并入库。本来觉得是件很简单的事情,结果却遇到了难以逾越的问题。具体步骤如下:
1.安装access2019,但2019版本创建的是accdb类型,需要另存为MDB。附下载地址:Access2019
2.读取MDB。这里要吐槽下,access的操作真的很反人类…。代码结构如下:
2.1 创建一个file类型的input用来选择数据:

<input type="file" id="fileinput" style="float:left;width: 200px;height: 32px;" />

2.2 获取file类型的input并判断是否为MDB文件,如果是则跳转进处理MDB文件的代码,否则略过。

 var wb_import;//读取完成的数据
    var rABS_import = true; //是否将文件读取为二进制字符串
    $("#importPro").click(function () {
   
        var obj = $("#fileinput")[0];
        //console.log(obj.files[0].name);
        //$("#fileinput").attr("value", "G:\规划设计方案导入导入模板.xlsx");
        console.log($('#fileinput').val());
        debugger;
        import_projectExcel(obj);
    })
 function import_projectExcel(obj) {
   //导入


        if (!obj.files) {
   
            return;
        }
        var f = obj.files[0];
        var importFormat = f.name.split('.')[1];

        if (f.name.split('.')[1] == 'mdb') {
   
            // 存储方案信息
            var pipeInfo = '规划管线信息';
            var projName = '方案基础信息';
            loadDataLines(pipeInfo, totalPipeJson_import);
            loadDataInfo(projName, totalPipeJson_import);
            for (var i = 0; i < totalPipeJson_import.planPipelines.length; i++) {
   
                totalPipeJson_import.planPipelines[i].GUID = newGuid();
                totalPipeJson_import.planPipelines[i].OSTARTX = totalPipeJson_import.planPipelines[i].STARTX
                totalPipeJson_import.planPipelines[i].OSTARTY = totalPipeJson_import.planPipelines[i].STARTY
                totalPipeJson_import.planPipelines[i].OSPTELEV = totalPipeJson_import.planPipelines[i].SPTELEV
                totalPipeJson_import.planPipelines[i].OENDX = totalPipeJson_import.planPipelines[i].ENDX
                totalPipeJson_import.planPipelines[i].OENDY = totalPipeJson_import.planPipelines[i].ENDY
                totalPipeJson_import.planPipelines[i].OEPTELEV = totalPipeJson_import.planPipelines[i].EPTELEV

            }

            //3.提交信心为保存状态
            pipeLineCoordinateTrans(GIS.TwoWKID, GIS.ThreeWKID, totalPipeJson_import.planPipelines, function (pipeLineObjs) {
   //坐标转换

                totalPipeJson_import.planPipelines = pipeLineObjs;
                addPlan(totalPipeJson_import.planInfo.PLANNAME, JSON.stringify(totalPipeJson_import), 0);
            });
            return;
        }
        var reader = new FileReader();
        reader.onload = function (e) {
   
            var data = e.target.result;
            if (rABS_import) {
   
                wb_import = XLSX.read(btoa(fixdata(data)), {
   //手动转化
                    type: 'base64'
                });
            } else {
   
                wb_import = XLSX.read(data, {
   
                    type: 'binary'
                });
            }
            //wb.SheetNames[0]是获取Sheets中第一个Sheet的名字
            //wb.Sheets[Sheet名]获取第一个Sheet的数据

            //jsonResult = JSON.stringify(XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]));
            //1.存储方案信息
            //储存方案信息
            totalPipeJson_import.planInfo = XLSX.utils.sheet_to_json(wb_import.Sheets[wb_import.SheetNames[0]])[1];
            totalPipeJson_import.planInfo.CREATETIME = new Date().toLocaleString();
            console.log(totalPipeJson_import.planInfo);


            //2.存储管线信息
            var temp = wb_import.Sheets[wb_import.SheetNames[1]];
            var Pipelines = XLSX.utils.sheet_to_json(wb_import.Sheets[wb_import.SheetNames[1]]);
            Pipelines.splice(0, 1);
            console.log(Pipelines);
            totalPipeJson_import.planPipelines = Pipelines;
            for (var i = 0; i < totalPipeJson_import.planPipelines.length; i++) {
   
                totalPipeJson_import.planPipelines[i].GUID = newGuid();
                totalPipeJson_import.planPipelines[i].OSTARTX = totalPipeJson_import.planPipelines[i]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值