在二三维一体化系统里读取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]