1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939 |
- //chrome brower need F12-> Network->disable cache
- // *************************重要:
- //1. eval(fun + "('不是数字!')");小心使用,会把字符串参数,转为数学运算,如参数为:"2022-01-01",转为2022-1-1=2020,所以,无论是什么类型的参数,都加上双引号或单引号,不让其认为是计算公式;
- //2. window[fun]( txt );在vue中使用,存在兼容问题
- var str2=null;
- function import_excel_to_json(file){
- return new Promise(function (resolve, reject) {
- let jsonData = {};
- let reader = new FileReader();
- reader.readAsBinaryString(file);
- reader.onload = function () {
- let data = reader.result
- let workbook = XLSX.read(data, {
- type: 'binary'
- })
- resolve(workbook);
- }
- })
- };
-
- // 读取本地excel文件
- function readWorkbookFromLocalFile(file, callback) {
- var reader = new FileReader();
- reader.onload = function (e) {
- var data = e.target.result;
- var workbook = XLSX.read(data, { type: 'binary' });
- if (callback) callback(workbook);
- };
- reader.readAsBinaryString(file);
- //reader.readAsArrayBuffer(file);
- }
-
- //sheet数
- function SheetAmount(workbook){
- if (workbook.SheetNames.length >= 15) {
- return true;
- } else {
- return "少于15个表,不是正确日报文件!";
- }
- }
- //sheet是否存在
- function HaveSheets(workbook){
- var arraySheetNames = ["B1","B2","B3","B4","B6","B7","B8","B9","B10","B11","B12","B13","B14","B15","C"];
- let arrStr = new Array(arraySheetNames.length).fill("");
- var sheetNames = workbook.SheetNames; // 工作表名称集合
- for (let i = 0; i < arraySheetNames.length; i++) {
- for (let index = 0; index < sheetNames.length; index++) {
- if (arraySheetNames[i] === sheetNames[index]) {
- arrStr[i]=arraySheetNames[i];
- }
- }
- }
- var flag = true;
- var str ="不存在的表: ";
- for (let n = 0; n < arrStr.length; n++) {
- if (arrStr[n] === "") {
- flag = false;
- str += arraySheetNames[n] + " ";
- }
- }
- if (flag === true) {
- return true;
- } else {
- return str;
- }
- }//sheet是否存在
- //是否为空表,2022-4-20停用,新函数为HaveData3Para
- /* function HaveDatas(workbook){
- var worksheet = workbook.Sheets["C"];
- if (worksheet["C16"] === undefined) {
- return "单元格: C16 " + " -> 空值!" + '\n';
- } else {
- if (worksheet["C16"].v > 0){
- return true;
- }else{
- return "表C单元格C16 " + " 等于或小于 0,无需上报!" + '\n';
- }
- }
- }*/
- function 项目号(str) {
- if (str.length != 10){
- return "所填:"+ str +",不是10字符!";
- }else if(str.substr(0,1)!="U" || !myIsNaN(str.substr(1,4)) || str.substr(5,1)!="P" || !myIsNaN(str.substr(6,4)) ){
- return "所填:"+ str +",格式有误!";
- }else{
- return true;
- };
- };
- // 检验日报excel文件
- function readWorkbook(workbook,logID,strDate,userID,unitID,projectID) {
-
- var arraySheetNames = ["B1","B2","B3","B4","B6","B7","B8","B9","B10","B11","B12","B13","B14","B15"];
- var arrayFunNames=[
- ["必填","站归类B1","区域归类","经度","纬度","文字","日期","上传人","单元号","项目号","受阻归类","通过"],
- ["必填","站归类B2","区域归类","经度","纬度","文字","日期","上传人","单元号","项目号","通过"],
- ["必填","段归类","区域归类","文字","数值","日期","上传人","单元号","项目号","通过"],
- ["必填","段归类","区域归类","文字","数值","数值","日期","上传人","单元号","项目号","通过"],
- ["必填","日期","上传人","单元号","项目号","数值","通过"],
- ["必填","室分归类B7","经度","纬度","文字","数值","日期","上传人","单元号","项目号","通过"],
- ["必填","室分归类B8","经度","纬度","文字","数值","数值","数值","日期","上传人","单元号","项目号","通过"],
- ["必填","室分归类B9","经度","纬度","文字","数值","数值","日期","上传人","单元号","项目号","通过"],
- ["必填","经度","纬度","文字","数值","数值","日期","上传人","单元号","项目号","通过"],
- ["必填","经度","纬度","文字","数值","数值","日期","上传人","单元号","项目号","通过"],
- ["必填","经度","纬度","文字","数值","日期","上传人","单元号","项目号","通过"],
- ["必填","经度","纬度","文字","数值","日期","上传人","单元号","项目号","通过"],
- ["日期","文字","文字","上传人","单元号","项目号","交通归类","用车归类","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","文字","通过"],
- ["日期","单元号","项目号","上传人","文字","文字","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","通过"]
- ];
- var stc = workbook.Sheets["C"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=i+2;
- if (stc["C"+stid].v > 0 ) {// 只检查有数据行的sheet
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["C"+stid].v
- var cell_ref;
- var index;
-
- for (var R = 2; R <= rows+1; ++R) {//loop row
- index = 0;
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
-
- //xlsx.full.min.js 里面没有Cell对象,要访问Cell值,只能通worksheet对象,可以从workbook object的内部结构看出来
- //如果单元格为空,控制台会提示错误,运行停止,下面是解决办法!
- if (worksheet[cell_ref] === undefined) {
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + " 空值!" + '\n';
- index++;
- // alert(index);
- } else {
- // alert(index);
- if (arrayFunNames[i][index]==="日期") {
- //alert(window[arrayFunNames[i][index]](worksheet[cell_ref].v,strDate));
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") != true){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") + '\n';
- }else if (formatExcelDate(worksheet[cell_ref].v,"-") != strDate) {
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + "所填:"+ formatExcelDate(worksheet[cell_ref].v,"-") +",不等于所选:" + strDate + '\n';
- };
- } else if (arrayFunNames[i][index]==="上传人") {
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") != true ){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") + '\n';
- };
- }else if (arrayFunNames[i][index]==="单元号") {
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") != true){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") + '\n';
- }else if (worksheet[cell_ref].v != unitID) {
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + "所填:"+ worksheet[cell_ref].v +",不等于用户归属:" + unitID + '\n';
- };
- }else if (arrayFunNames[i][index]==="项目号") {
- var strs= new Array();
- var bHaveMoreID=false
- if (projectID.includes(',') && !projectID.includes(',')) {
- strs = projectID.split(',')
- bHaveMoreID=true
- } else if (projectID.includes(',') && !projectID.includes(',') ) {
- strs = projectID.split(',')
- bHaveMoreID=true
- }else if (projectID.includes(',') && projectID.includes(',') ) {
- document.getElementById(logID).innerHTML += "所填:"+ projectID +",同时包含中英文豆号!"+ '\n';
- }
-
- if (bHaveMoreID) {
- for (let index = 0; index < strs.length; index++) {
- if (项目号(strs[index]) != true) {
- document.getElementById(logID).innerHTML += 项目号(strs[index])+ '\n';
- }
- }
- var bEqual=false
- for (let index = 0; index < strs.length; index++) {
- if (worksheet[cell_ref].v == strs[index]) {
- bEqual = true
- }
-
- }
- if (bEqual != true ) {
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + "所填:"+ worksheet[cell_ref].v +",不含于:" + projectID + '\n';
- }
- } else {
- if (worksheet[cell_ref].v != projectID) {
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + "所填:"+ worksheet[cell_ref].v +",不等于:" + projectID + '\n';
- };
- }
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") != true){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") + '\n';
- }
- }else{
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") != true ){
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") + '\n';
- };
- };
-
- index++;
-
- };//cell is not blank
-
- };//loop col
-
- };//loop row
- };// 只检查有数据行的sheet
- };//loop sheet
- };//// 检验日报excel文件
-
- //自定义单元格核验函数/////////////////////////////////////////////////////////////////////////////////////////////////////
- function 必填(str) {
- //要求非空字符,非0
- if(str.toString()==="0"){
- return "所填为0!";
- }else if(myTrim(str)===""){
- return "所填为空!";
- }else{
- return true;
- };
- };
- function 站归类B1(str) {
- var arrStr = ["新址","共址","维护","微站"];
- if(!myMatch(arrStr,str)){
- return "所填:"+ str +",不是其一:新址|共址|维护|微站 !";
- }else{
- return true;
- };
- };
-
- function 站归类B2(str) {
- var arrStr = ["新址","共址","维护","微站","存满","软扩"];
- if(!myMatch(arrStr,str)){
- return "所填:"+ str +",不是其一:新址|共址|维护|微站|存满|软扩 !";
- }else{
- return true;
- };
- };
- function 区域归类(str) {
- var arrStr = ["城区","非城区"];
- if(!myMatch(arrStr,str)){
- return "所填:"+ str +",不是其一:城区|非城区 !";
- }else{
- return true;
- };
- };
- function 经度(str) {
- if (!myIsNaN(str)){
- return "所填:"+ str +",不是数值!";
- }else if(str>140||str<60){
- return "所填:"+ str +",不在区间60-140!";
- }else{
- return true;
- };
- };
-
- function 纬度(str) {
- if (!myIsNaN(str)){
- return "所填:"+ str +",不是数值!";
- }else if(str>125||str<1){
- return "所填:"+ str +",不在区间1-125!";
- }else{
- return true;
- };
- };
- function 文字(str) {
- if (myIsNaN(str)){
- return "所填:"+ str +",是数值!";
- }else if(myTrim(str)===""){
- return "所填为空!";
- }else{
- return true;
- };
- };
- function 日期(strX) {
- var str=formatExcelDate(strX,"-")
- if(isNaN(str) && !isNaN(Date.parse(str))) {
- return true;
- }else{
- return "所填:"+ str +",不是日期格式!";
- };
- };
-
-
- function 上传人(str,userID) {
- if (str != userID) {
- return "所填:"+ str +",和用户名:"+ userID +",不相等!";
- }else{
- return true;
- };
- };
- //2022-4-21停用,使用只有1个参数的新版
- /*function 单元号(str,unitID) {
- if (str != unitID) {
- return "所填:"+ str +",和用户单元号:"+ unitID +",不相等!";
- }else{
- return true;
- };
- };*/
- //2022-4-22停用,使用只有1个参数的新版
- /*function 项目号(str,projectID) {
- if (str != projectID) {
- return "所填:"+ str +",和所选项目号:"+ projectID +",不相等!";
- }else{
- return true;
- };
- };*/
- function myMatch(arrClass,str) {
- var b=false
- for (let index = 0; index < arrClass.length; index++) {
- if (arrClass[index]===str) {
- b=true
- }
- }
- return b;
- };
- function 受阻归类(str) {
- var arrStr = ["成功","部分","失败"];
- if(!myMatch(arrStr,str)){
- return "所填:"+ str +",不是其一:成功|部分|失败 !";
- }else{
- return true;
- };
- };
- function 段归类(str) {
- var arrStr = ["新建管道","干线","城域","家集客"];
- if(!myMatch(arrStr,str)){
- return "所填:"+ str +",不是其一:新建管道|干线|城域|家集客 !";
- }else{
- return true;
- };
- };
- function 数值(str) {
- if (!myIsNaN(str)){
- return "所填:"+ str +",不是数值!";
- }else{
- return true;
- };
- };
-
- function 室分归类B7(str) {
- var arrStr = ["信源改造","传统分布","新型分布"];
- if(!myMatch(arrStr,str)){
- return "所填:"+ str +",不是其一:信源改造|传统分布|新型分布 !";
- }else{
- return true;
- };
- };
-
- function 室分归类B8(str) {
- var arrStr = ["传统分布","新型分布"];
- if(!myMatch(arrStr,str)){
- return "所填:"+ str +",不是其一:传统分布|新型分布 !";
- }else{
- return true;
- };
- };
- function 室分归类B9(str) {
- if(str != "仅信源"){
- return "所填:"+ str +",不是:仅信源 !";
- }else{
- return true;
- };
- };
- function 交通归类(str) {
- var arrStr = ["租公司车","租个人车","打车","网约车","公交地铁","步行","他方出车","按出图包干"];
- if(!myMatch(arrStr,str)){
- return "所填:"+ str +",不是其一:租公司车|租个人车|打车|网约车|公交地铁|步行|他方出车|按出图包干 !";
- }else{
- return true;
- };
- };
- function 用车归类(str) {
- var arrStr = ["普通车","越野车","其他"];
- if(!myMatch(arrStr,str)){
- return "所填:"+ str +",不是其一:普通车|越野车|其他 !";
- }else{
- return true;
- };
- };
- function myTrim(x) {
- var x2 = String(x);
- return x2.replace(/^\s+|\s+$/gm,'');
- };
-
- function myIsNaN(value) {
- let numX = Number(value);
- return typeof numX === 'number' && !isNaN(numX);
- };
- function isNumber(val){
- var regPos = /^\d+(\.\d+)?$/;
- var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/;
- if(regPos.test(val) && regNeg.test(val)){
- return true;
- }else{
- return false;
- }
- }
-
- function CheckFile(obj) {
- alert( typeof obj);
- alert(obj.value);
- console.log(obj);
- var array = new Array('xlsx'); //可以上传的文件类型'gif', 'jpeg', 'png', 'jpg'
- if (obj.value == '') {
- alert("选择要上传的xlsx文件!");
- return false;
- }
- else {
- var fileContentType = obj.value.match(/^(.*)(\.)(.{1,8})$/)[3]; //这个文件类型正则很有用:)
- var isExists = false;
- for (var i in array) {
- if (fileContentType.toLowerCase() == array[i].toLowerCase()) {
- isExists = true;
-
- //can next sub
- readWorkbookFromLocalFile(obj, function(workbook) {
- readWorkbook(workbook);
- });
- return true;
- }
- }
- if (isExists == false) {
- obj.value = null;
- alert("文件类型不是xlsx!");
- return false;
- }
- return false;
- }
- };
-
- /**
- * 格式化excel传递的时间
- * @param numb 需转化的时间 43853
- * @param format 分隔符 "-"
- * @returns {string} 2020-1-22
- */
- function formatExcelDate(numb, format) {
- const old = numb - 1;
- const t = Math.round((old - Math.floor(old)) * 24 * 60 * 60);
- const time = new Date(1900, 0, old, 0, 0, t)
- const year = time.getFullYear() ;
- const month = time.getMonth() + 1 ;
- const date = time.getDate() ;
- return year + format + (month < 10 ? '0' + month : month) + format + (date < 10 ? '0' + date : date)
- };
- //数字列转字母列
- str2="";//全局变量,用之前str2="",用完了要手工str2=null;
- function number2alphabet(number){
- // number要大于0
- var str1="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
- if (number <= 26 ) {
- //var num1 = parseInt(number / 26);
- var num2 = number % 26
- if (num2 === 0) {
- str2 += "Z";
- } else {
- str2 += str1.charAt(num2-1);//charAt从0开始的
- };
-
- } else {
- var num1=parseInt(number / 26);
- var num2= number % 26;
- if (num1 >= 2 && num2 === 0) {
- num1 -= 1 ;
- }
- number2alphabet(num1);
- if (num2 === 0) {
- str2 += "Z";
- } else {
- str2 += str1.charAt(num2-1);//charAt从0开始的
- };
-
- };
- return str2;
- };
- //generate json string from workbook
- function makeJSONstring(workbook){
- var arraySheetNames = ["B1","B2","B3","B4","B6","B7","B8","B9","B10","B11","B12","B13","B14","B15"];
- var arrayFunNames=[
- ["必填","站归类B1","区域归类","经度","纬度","文字","日期","上传人","单元号","项目号","受阻归类","通过"],
- ["必填","站归类B2","区域归类","经度","纬度","文字","日期","上传人","单元号","项目号","通过"],
- ["必填","段归类","区域归类","文字","数值","日期","上传人","单元号","项目号","通过"],
- ["必填","段归类","区域归类","文字","数值","数值","日期","上传人","单元号","项目号","通过"],
- ["必填","日期","上传人","单元号","项目号","数值","通过"],
- ["必填","室分归类B7","经度","纬度","文字","数值","日期","上传人","单元号","项目号","通过"],
- ["必填","室分归类B8","经度","纬度","文字","数值","数值","数值","日期","上传人","单元号","项目号","通过"],
- ["必填","室分归类B9","经度","纬度","文字","数值","数值","日期","上传人","单元号","项目号","通过"],
- ["必填","经度","纬度","文字","数值","数值","日期","上传人","单元号","项目号","通过"],
- ["必填","经度","纬度","文字","数值","数值","日期","上传人","单元号","项目号","通过"],
- ["必填","经度","纬度","文字","数值","日期","上传人","单元号","项目号","通过"],
- ["必填","经度","纬度","文字","数值","日期","上传人","单元号","项目号","通过"],
- ["日期","文字","文字","上传人","单元号","项目号","交通归类","用车归类","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","文字","通过"],
- ["日期","单元号","项目号","上传人","文字","文字","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","通过"]
- ];
-
- var strB="";
- var stc = workbook.Sheets["C"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=i+2;
- if (stc["C"+stid].v > 0 ) {// 只检查有数据行的sheet
-
- strB += '\"'+arraySheetNames[i]+'\"' +":\"[";
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["C"+stid].v
-
- var cell_ref;
- for (var R = 2; R <= rows+1; ++R) {//loop row
- if (R===2) {
- strB +="[";
- }else{
- strB +="▓[";
- };
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
-
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
-
- if (C===(arrayFunNames[i].length+2)) {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") ;
- }else{
- strB += worksheet[cell_ref].v;
- };
- } else {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") + "∮";
- }else{
- strB += worksheet[cell_ref].v + "∮";
- };
- };
-
- };//loop col
- strB +="]";
- };//loop row
- strB +="]\"∮";
- };// 只检查有数据行的sheet
- };//loop sheet
-
- return "{"+strB+"}";
- };
- ///////////////////under this line special for income xlsx file //////////////////////////////////
- function 年月(str) {
- var str1 = str.substr(0,4);
- var str2 = str.substr(4,2);
- if(isNaN(str1+"-"+str2+"-01") && !isNaN(Date.parse(str1+"-"+str2+"-01"))) {
- return true;
- }else{
- return "所填:"+ str +",不是年月!";
- };
- };
- function 是否(str) {
- var arrStr = ["是","否"];
- if(!myMatch(arrStr,str)){
- return "所填:"+ str +",不是其一:是|否 !";
- }else{
- return true;
- };
- };
- function 收入凭证(str) {
- var arrStr = ["无","邮件","聊天截图","签证图片","其他"];
- if(!myMatch(arrStr,str)){
- return "所填:"+ str +",不是其一:无|邮件|聊天截图|签证图片|其他 !";
- }else{
- return true;
- };
- };
- function 结算模式(str) {
- var arrStr = ["比例","计件","人天","比例计件","比例人天","计件人天","比例计件人天"];
- if(!myMatch(arrStr,str)){
- return "所填:"+ str +",不是其一:比例|计件|人天|比例计件|比例人天|计件人天|比例计件人天 !";
- }else{
- return true;
- };
- };
- function 通过(str) {
- return true;
- };
- //Single sheet是否存在
- function HaveSingleSheetName(workbook,sheetname){
- var flag = false;
- var sheetNames = workbook.SheetNames; // 工作表名称集合
- for (let index = 0; index < sheetNames.length; index++) {
- if (sheetname === sheetNames[index]) {
- flag = true;
- }
- }
- if (flag === true) {
- return true;
- } else {
- return sheetname + ",表不存在!";
- }
- } ; //Single sheet是否存在
- //是否为空表3参数通用版
- function HaveData3Para(workbook,sheetname,cellname){
- var worksheet = workbook.Sheets[sheetname];
- if (worksheet[cellname] === undefined) {
- var worksheet = workbook.Sheets[sheetname];
- return "表"+ sheetname +"单元格" + cellname + " 为空!" + '\n';
- } else {
- if (worksheet[cellname].v > 0){
- return true;
- }else{
- return "表"+ sheetname +"单元格" + cellname + " 等于或小于 0,无需上报!" + '\n';
- }
- }
- };
- // 检验收入excel文件
- function checkIncomeFile(workbook,logID,strYYYYMM,userID,unitID) {
- var arraySheetNames = ["SR"];
- var arrayFunNames=[
- ["年月","单元号","上传人","文字","文字","文字","文字","日期","日期","是否","数值","数值","收入凭证","结算模式","文字","文字","通过","通过"]
- ];
- var stc = workbook.Sheets["SR"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=1;
- if (stc["T"+stid].v > 0 ) {// 只检查有数据行的sheet
-
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["T"+stid].v
-
- var cell_ref;
- var index;
-
- for (var R = 2; R <= rows+1; ++R) {//loop row
- index = 0;
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
-
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
-
- //xlsx.full.min.js 里面没有Cell对象,要访问Cell值,只能通worksheet对象,可以从workbook object的内部结构看出来
- //如果单元格为空,控制台会提示错误,运行停止,下面是解决办法!
- if (worksheet[cell_ref] === undefined) {
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + " 空值!" + '\n';
- index++;
- // alert(index);
-
- } else {
- // alert(index);
- if (arrayFunNames[i][index]==="年月") {
- //alert(window[arrayFunNames[i][index]](worksheet[cell_ref].v,strDate));
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") != true){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") + '\n';
- }else if (worksheet[cell_ref].v != strYYYYMM) {
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + "所填:"+ worksheet[cell_ref].v +",不等于所选:" + strYYYYMM + '\n';
- };
-
- } else if (arrayFunNames[i][index]==="上传人") {
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") != true ){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") + '\n';
- };
-
- }else if (arrayFunNames[i][index]==="单元号") {
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") != true){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") + '\n';
- }else if (worksheet[cell_ref].v != unitID) {
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + "所填:"+ worksheet[cell_ref].v +",不等于用户归属:" + unitID + '\n';
- };
-
- }else{
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") != true ){
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") + '\n';
- };
- };
-
- index++;
-
- };//cell is not blank
-
- };//loop col
-
- };//loop row
-
- };// 只检查有数据行的sheet
- };//loop sheet
- };//// 检验收入excel文件
- //generate income data to json string from workbook
- function makeIncomeJSONstring(workbook){
- var arraySheetNames = ["SR"];
- var arrayFunNames=[
- ["年月","单元号","上传人","文字","文字","文字","文字","日期","日期","是否","数值","数值","收入凭证","结算模式","文字","文字","通过","通过"]
- ];
-
- var strB="";
- var stc = workbook.Sheets["SR"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=1;
- if (stc["T"+stid].v > 0 ) {// 只检查有数据行的sheet
-
- //strB +=","+ arraySheetNames[i] +":[";
- strB += '\"'+arraySheetNames[i]+'\"' +":\"[";
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["T"+stid].v
-
- var cell_ref;
- for (var R = 2; R <= rows+1; ++R) {//loop row
- if (R===2) {
- strB +="[";
- }else{
- strB +="▓[";
- };
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
-
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
-
- if (C===(arrayFunNames[i].length+1)) {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") ;
- }else{
- strB += worksheet[cell_ref].v;
- };
- } else {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") + "∮";
- }else{
- strB += worksheet[cell_ref].v + "∮";
- };
- };
-
- };//loop col
- strB +="]";
- };//loop row
- strB +="]\"∮";
- };// 只检查有数据行的sheet
- };//loop sheet
-
- return "{"+strB+"}";
- };//generate income data to json string from workbook
- ///////////////////under this line start for balance xlsx file //////////////////////////////////
- function 单元号(str) {
- if (str.length != 5){
- return "所填:"+ str +",不是5字符!";
- }else if(str.substr(0,1)!="U" || !myIsNaN(str.substr(1,4))){
- return "所填:"+ str +",格式有误!";
- }else{
- return true;
- };
- };
- function 住宿归类(str) {
- var arrStr = ["宾馆","宿舍"];
- if(!myMatch(arrStr,str)){
- return "所填:"+ str +",不是其一:宾馆|宿舍 !";
- }else{
- return true;
- };
- };
- // 检验 支援 excel文件
- function checkBalanceFile(workbook,logID,strStartDate,strEndDate,userID) {
- var arraySheetNames = ["GRZY","JJZY"];
- var arrayFunNames=[
- ["文字","单元号","单元号","日期","住宿归类","数值","上传人","通过"],
- ["文字","单元号","单元号","日期","文字","文字","文字","数值","数值","数值","上传人","通过"]
- ];
- var stc = workbook.Sheets["C"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=i+2;
- if (stc["C"+stid].v > 0 ) {// 只检查有数据行的sheet
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["C"+stid].v
- var cell_ref;
- var index;
- for (var R = 2; R <= rows+1; ++R) {//loop row
- index = 0;
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
- //xlsx.full.min.js 里面没有Cell对象,要访问Cell值,只能通worksheet对象,可以从workbook object的内部结构看出来
- //如果单元格为空,控制台会提示错误,运行停止,下面是解决办法!
- if (worksheet[cell_ref] === undefined) {
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + " 空值!" + '\n';
- index++;
- // alert(index);
- } else {
- // alert(index);
- if (arrayFunNames[i][index]==="日期") {
- //alert(window[arrayFunNames[i][index]](worksheet[cell_ref].v,strDate));
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") != true){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") + '\n';
- }else {
- var objStartDate = new Date(strStartDate);
- var objEndDate = new Date(strEndDate);
- var objTableDate = new Date(formatExcelDate(worksheet[cell_ref].v,"-"));
- if (objTableDate.getTime()<objStartDate.getTime() || objTableDate.getTime()>objEndDate.getTime() ){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + "所填:"+ formatExcelDate(worksheet[cell_ref].v,"-") +",不在界面日期区间内!" + '\n';
- }
- };
- } else if (arrayFunNames[i][index]==="上传人") {
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") != true ){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") + '\n';
- };
- }else{
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") != true ){
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") + '\n';
- };
- };
-
- index++;
- };//cell is not blank
- };//loop col
-
- };//loop row
- };// 只检查有数据行的sheet
- };//loop sheet
- }; // 检验 支援 excel文件
- //generate balance data to json string from workbook
- function makeBalanceJSONstring(workbook){
- var arraySheetNames = ["GRZY","JJZY"];
- var arrayFunNames=[
- ["文字","单元号","单元号","日期","住宿归类","数值","上传人","通过"],
- ["文字","单元号","单元号","日期","文字","文字","文字","数值","数值","数值","上传人","通过"]
- ];
-
- var strB="";
- var stc = workbook.Sheets["C"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=i+2;
- if (stc["C"+stid].v > 0 ) {// 只检查有数据行的sheet
-
- //strB +=","+ arraySheetNames[i] +":[";
- strB += '\"'+arraySheetNames[i]+'\"' +":\"[";
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["C"+stid].v
-
- var cell_ref;
- for (var R = 2; R <= rows+1; ++R) {//loop row
- if (R===2) {
- strB +="[";
- }else{
- strB +="▓[";
- };
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
-
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
-
- if (C===(arrayFunNames[i].length+1)) {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") ;
- }else{
- strB += worksheet[cell_ref].v;
- };
- } else {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") + "∮";
- }else{
- strB += worksheet[cell_ref].v + "∮";
- };
- };
-
- };//loop col
- strB +="]";
- };//loop row
- strB +="]\"∮";
- };// 只检查有数据行的sheet
- };//loop sheet
-
- return "{"+strB+"}";
- };//generate balance data to json string from workbook
- ///////////////////under this line start for invoice xlsx file //////////////////////////////////
- // 检验 开票 excel文件
- function checkInvoiceFile(workbook,logID,userID) {
- var arraySheetNames = ["KP"];
- var arrayFunNames=[
- ["通过","通过","通过","通过","文字","数值","数值","数值","文字","数值","数值","日期","结算模式","文字","文字","是否","项目号","通过","文字","上传人","通过"]
- ];
- var stc = workbook.Sheets["KP"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=1;
- if (stc["W"+stid].v > 0 ) {// 只检查有数据行的sheet
-
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["W"+stid].v
-
- var cell_ref;
- var index;
-
- for (var R = 2; R <= rows+1; ++R) {//loop row
- index = 0;
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
-
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
-
- //xlsx.full.min.js 里面没有Cell对象,要访问Cell值,只能通worksheet对象,可以从workbook object的内部结构看出来
- //如果单元格为空,控制台会提示错误,运行停止,下面是解决办法!
- if (worksheet[cell_ref] === undefined) {
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + " 空值!" + '\n';
- index++;
-
- } else {
- // alert(index);
- if (arrayFunNames[i][index]==="上传人") {
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") != true ){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") + '\n';
- };
- }else if(arrayFunNames[i][index]==="项目号"){
- str2="";
- var cell_ref2 = number2alphabet(C-1) + R;
- str2=null;
- if (worksheet[cell_ref2].v=== "是" ){
- //worksheet[cell_ref].v = "见拆分";
- }else{
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") != true ){
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") + '\n';
- };
- };
- }else{
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") != true ){
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") + '\n';
- };
- };
-
- index++;
-
- };//cell is not blank
- };//loop col
- };//loop row
- };// 只检查有数据行的sheet
- };//loop sheet
- };//// 检验 开票 excel文件
- //generate invoice data to json string from workbook
- function makeInvoiceJSONstring(workbook){
- var arraySheetNames = ["KP"];
- var arrayFunNames=[
- ["通过","通过","通过","通过","文字","数值","数值","数值","文字","数值","数值","日期","结算模式","文字","文字","是否","项目号","通过","文字","上传人","通过"]
- ];
-
- var strB="";
- var stc = workbook.Sheets["KP"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=1;
- if (stc["W"+stid].v > 0 ) {// 只检查有数据行的sheet
-
- //strB +=","+ arraySheetNames[i] +":[";
- strB += '\"'+arraySheetNames[i]+'\"' +":\"[";
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["W"+stid].v
-
- var cell_ref;
- for (var R = 2; R <= rows+1; ++R) {//loop row
- if (R===2) {
- strB +="[";
- }else{
- strB +="▓[";
- };
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
-
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
-
- if (C===(arrayFunNames[i].length+1)) {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") ;
- }else{
- strB += worksheet[cell_ref].v;
- };
- } else {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") + "∮";
- }else{
- strB += worksheet[cell_ref].v + "∮";
- };
- };
-
- };//loop col
- strB +="]";
- };//loop row
- strB +="]\"∮";
- };// 只检查有数据行的sheet
- };//loop sheet
-
- return "{"+strB+"}";
- };//generate invoice data to json string from workbook
- ///////////////////under this line start for invoice_split xlsx file //////////////////////////////////
- // 检验 开票拆分 excel文件
- function checkInvoiceSplitFile(workbook,logID,userID) {
- var arraySheetNames = ["KPCF"];
- var arrayFunNames=[
- ["数值","数值","项目号","通过","文字","上传人"]
- ];
- var stc = workbook.Sheets["KPCF"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=1;
- if (stc["H"+stid].v > 0 ) {// 只检查有数据行的sheet
-
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["H"+stid].v
-
- var cell_ref;
- var index;
-
- for (var R = 2; R <= rows+1; ++R) {//loop row
- index = 0;
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
-
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
-
- //xlsx.full.min.js 里面没有Cell对象,要访问Cell值,只能通worksheet对象,可以从workbook object的内部结构看出来
- //如果单元格为空,控制台会提示错误,运行停止,下面是解决办法!
- if (worksheet[cell_ref] === undefined) {
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + " 空值!" + '\n';
- index++;
-
- } else {
- // alert(index);
- if (arrayFunNames[i][index]==="上传人") {
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") != true ){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") + '\n';
- };
- }else{
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") != true ){
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") + '\n';
- };
- };
-
- index++;
-
- };//cell is not blank
- };//loop col
- };//loop row
- };// 只检查有数据行的sheet
- };//loop sheet
- };//// 检验 开票 excel文件
- //generate invoice-split data to json string from workbook
- function makeInvoiceSplitJSONstring(workbook){
- var arraySheetNames = ["KPCF"];
- var arrayFunNames=[
- ["数值","数值","项目号","通过","文字","上传人"]
- ];
-
- var strB="";
- var stc = workbook.Sheets["KPCF"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=1;
- if (stc["H"+stid].v > 0 ) {// 只检查有数据行的sheet
-
- //strB +=","+ arraySheetNames[i] +":[";
- strB += '\"'+arraySheetNames[i]+'\"' +":\"[";
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["H"+stid].v
-
- var cell_ref;
- for (var R = 2; R <= rows+1; ++R) {//loop row
- if (R===2) {
- strB +="[";
- }else{
- strB +="▓[";
- };
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
-
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
-
- if (C===(arrayFunNames[i].length+1)) {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") ;
- }else{
- strB += worksheet[cell_ref].v;
- };
- } else {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") + "∮";
- }else{
- strB += worksheet[cell_ref].v + "∮";
- };
- };
-
- };//loop col
- strB +="]";
- };//loop row
- strB +="]\"∮";
- };// 只检查有数据行的sheet
- };//loop sheet
-
- return "{"+strB+"}";
- };//generate invoice data to json string from workbook
- ///////////////////under this line start for salary xlsx file //////////////////////////////////
- // 检验 工资 excel文件
- function checkSalaryFile(workbook,logID,strYYYYMM,userID) {
- var arraySheetNames = ["CGZ","CQT","CJT"];
- var arrayFunNames=[
- ["单元号","年月","文字","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","通过","通过","数值","数值","上传人"],
- ["单元号","年月","数值","数值","数值","数值","通过","上传人"],
- ["单元号","年月","文字","文字","数值","通过","上传人"]
- ];
- var stc = workbook.Sheets["C"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=i+2;
- if (stc["C"+stid].v > 0 ) {// 只检查有数据行的sheet
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["C"+stid].v
- var cell_ref;
- var index;
- for (var R = 2; R <= rows+1; ++R) {//loop row
- index = 0;
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
- //xlsx.full.min.js 里面没有Cell对象,要访问Cell值,只能通worksheet对象,可以从workbook object的内部结构看出来
- //如果单元格为空,控制台会提示错误,运行停止,下面是解决办法!
- if (worksheet[cell_ref] === undefined) {
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + " 空值!" + '\n';
- index++;
- // alert(index);
- } else {
- if (arrayFunNames[i][index]==="年月") {
- //alert(window[arrayFunNames[i][index]](worksheet[cell_ref].v,strDate));
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") != true){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") + '\n';
- }else if (worksheet[cell_ref].v != strYYYYMM) {
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + "所填:"+ worksheet[cell_ref].v +",不等于所选:" + strYYYYMM + '\n';
- };
- } else if (arrayFunNames[i][index]==="上传人") {
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") != true ){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") + '\n';
- };
- }else{
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") != true ){
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") + '\n';
- };
- };
-
- index++;
- };//cell is not blank
- };//loop col
-
- };//loop row
- };// 只检查有数据行的sheet
- };//loop sheet
- }; // 检验 支援 excel文件
- //generate salary data to json string from workbook
- function makeSalaryJSONstring(workbook){
- var arraySheetNames = ["CGZ","CQT","CJT"];
- var arrayFunNames=[
- ["单元号","年月","文字","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","通过","通过","数值","数值","上传人"],
- ["单元号","年月","数值","数值","数值","数值","通过","上传人"],
- ["单元号","年月","文字","文字","数值","通过","上传人"]
- ];
-
- var strB="";
- var stc = workbook.Sheets["C"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=i+2;
- if (stc["C"+stid].v > 0 ) {// 只检查有数据行的sheet
-
- //strB +=","+ arraySheetNames[i] +":[";
- strB += '\"'+arraySheetNames[i]+'\"' +":\"[";
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["C"+stid].v
-
- var cell_ref;
- for (var R = 2; R <= rows+1; ++R) {//loop row
- if (R===2) {
- strB +="[";
- }else{
- strB +="▓[";
- };
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
-
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
-
- if (C===(arrayFunNames[i].length+1)) {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") ;
- }else{
- strB += worksheet[cell_ref].v;
- };
- } else {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") + "∮";
- }else{
- strB += worksheet[cell_ref].v + "∮";
- };
- };
-
- };//loop col
- strB +="]";
- };//loop row
- strB +="]\"∮";
- };// 只检查有数据行的sheet
- };//loop sheet
-
- return "{"+strB+"}";
- };//generate salary data to json string from workbook
- ///////////////////under this line start for cash_in xlsx file //////////////////////////////////
- // 检验 到款 excel文件
- function checkCashInFile(workbook,logID,strStartDate,strEndDate,userID) {
- var arraySheetNames = ["DK"];
- var arrayFunNames=[
- ["日期","数值","数值","项目号","文字","通过","上传人"]
- ];
- var stc = workbook.Sheets["DK"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=1;
- if (stc["I"+stid].v > 0 ) {// 只检查有数据行的sheet
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["I"+stid].v
- var cell_ref;
- var index;
- for (var R = 2; R <= rows+1; ++R) {//loop row
- index = 0;
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
- //xlsx.full.min.js 里面没有Cell对象,要访问Cell值,只能通worksheet对象,可以从workbook object的内部结构看出来
- //如果单元格为空,控制台会提示错误,运行停止,下面是解决办法!
- if (worksheet[cell_ref] === undefined) {
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + " 空值!" + '\n';
- index++;
- // alert(index);
- } else {
- // alert(index);
- if (arrayFunNames[i][index]==="日期") {
- //alert(window[arrayFunNames[i][index]](worksheet[cell_ref].v,strDate));
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") != true){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") + '\n';
- }else {
- var objStartDate = new Date(strStartDate);
- var objEndDate = new Date(strEndDate);
- var objTableDate = new Date(formatExcelDate(worksheet[cell_ref].v,"-"));
- if (objTableDate.getTime()<objStartDate.getTime() || objTableDate.getTime()>objEndDate.getTime() ){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + "所填:"+ formatExcelDate(worksheet[cell_ref].v,"-") +",不在界面日期区间内!" + '\n';
- }
- };
- } else if (arrayFunNames[i][index]==="上传人") {
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") != true ){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") + '\n';
- };
- }else{
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") != true ){
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") + '\n';
- };
- };
-
- index++;
- };//cell is not blank
- };//loop col
-
- };//loop row
- };// 只检查有数据行的sheet
- };//loop sheet
- }; // 检验 到款 excel文件
- //generate cashin data to json string from workbook
- function makeCashInJSONstring(workbook){
- var arraySheetNames = ["DK"];
- var arrayFunNames=[
- ["日期","数值","数值","项目号","文字","通过","上传人"]
- ];
-
- var strB="";
- var stc = workbook.Sheets["DK"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=1;
- if (stc["I"+stid].v > 0 ) {// 只检查有数据行的sheet
-
- //strB +=","+ arraySheetNames[i] +":[";
- strB += '\"'+arraySheetNames[i]+'\"' +":\"[";
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["I"+stid].v
-
- var cell_ref;
- for (var R = 2; R <= rows+1; ++R) {//loop row
- if (R===2) {
- strB +="[";
- }else{
- strB +="▓[";
- };
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
-
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
-
- if (C===(arrayFunNames[i].length+1)) {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") ;
- }else{
- strB += worksheet[cell_ref].v;
- };
- } else {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") + "∮";
- }else{
- strB += worksheet[cell_ref].v + "∮";
- };
- };
-
- };//loop col
- strB +="]";
- };//loop row
- strB +="]\"∮";
- };// 只检查有数据行的sheet
- };//loop sheet
-
- return "{"+strB+"}";
- };//generate cashin data to json string from workbook
- ///////////////////under this line start for cash_out xlsx file //////////////////////////////////
- // 检验 付款 excel文件
- function checkCashOutFile(workbook,logID,strStartDate,strEndDate,userID) {
- var arraySheetNames = ["FK"];
- var arrayFunNames=[
- ["日期","数值","通过","项目号","通过","上传人"]
- ];
- var stc = workbook.Sheets["FK"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=1;
- if (stc["H"+stid].v > 0 ) {// 只检查有数据行的sheet
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["H"+stid].v
- var cell_ref;
- var index;
- for (var R = 2; R <= rows+1; ++R) {//loop row
- index = 0;
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
- //xlsx.full.min.js 里面没有Cell对象,要访问Cell值,只能通worksheet对象,可以从workbook object的内部结构看出来
- //如果单元格为空,控制台会提示错误,运行停止,下面是解决办法!
- if (worksheet[cell_ref] === undefined) {
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + " 空值!" + '\n';
- index++;
- // alert(index);
- } else {
- // alert(index);
- if (arrayFunNames[i][index]==="日期") {
- //alert(window[arrayFunNames[i][index]](worksheet[cell_ref].v,strDate));
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") != true){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") + '\n';
- }else {
- var objStartDate = new Date(strStartDate);
- var objEndDate = new Date(strEndDate);
- var objTableDate = new Date(formatExcelDate(worksheet[cell_ref].v,"-"));
- if (objTableDate.getTime()<objStartDate.getTime() || objTableDate.getTime()>objEndDate.getTime() ){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + "所填:"+ formatExcelDate(worksheet[cell_ref].v,"-") +",不在界面日期区间内!" + '\n';
- }
- };
- } else if (arrayFunNames[i][index]==="上传人") {
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") != true ){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") + '\n';
- };
- }else{
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") != true ){
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") + '\n';
- };
- };
-
- index++;
- };//cell is not blank
- };//loop col
-
- };//loop row
- };// 只检查有数据行的sheet
- };//loop sheet
- }; // 检验 付款 excel文件
- //generate cashout data to json string from workbook
- function makeCashOutJSONstring(workbook){
- var arraySheetNames = ["FK"];
- var arrayFunNames=[
- ["日期","数值","通过","项目号","通过","上传人"]
- ];
-
- var strB="";
- var stc = workbook.Sheets["FK"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=1;
- if (stc["H"+stid].v > 0 ) {// 只检查有数据行的sheet
-
- //strB +=","+ arraySheetNames[i] +":[";
- strB += '\"'+arraySheetNames[i]+'\"' +":\"[";
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["H"+stid].v
-
- var cell_ref;
- for (var R = 2; R <= rows+1; ++R) {//loop row
- if (R===2) {
- strB +="[";
- }else{
- strB +="▓[";
- };
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
-
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
-
- if (C===(arrayFunNames[i].length+1)) {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") ;
- }else{
- strB += worksheet[cell_ref].v;
- };
- } else {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") + "∮";
- }else{
- strB += worksheet[cell_ref].v + "∮";
- };
- };
-
- };//loop col
- strB +="]";
- };//loop row
- strB +="]\"∮";
- };// 只检查有数据行的sheet
- };//loop sheet
-
- return "{"+strB+"}";
- };//generate cashout data to json string from workbook
-
- ///////////////////under this line start for b14c xlsx file //////////////////////////////////
- // 检验 B14C excel文件
- function checkB14CFile(workbook,logID,userID) {
- var arraySheetNames = ["B14C"];
- var arrayFunNames=[
- ["日期","文字","文字","文字","单元号","项目号","交通归类","用车归类","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","通过","通过","文字","日期","通过","通过","通过","通过","通过","数值","通过","通过","通过","通过","通过","通过","数值","数值","数值","数值","通过","通过","日期","文字","上传人"]
- ];
- var stc = workbook.Sheets["C"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=2;
- if (stc["C"+stid].v > 0 ) {// 只检查有数据行的sheet
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["C"+stid].v
- var cell_ref;
- var index;
- for (var R = 2; R <= rows+1; ++R) {//loop row
- index = 0;
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
- //xlsx.full.min.js 里面没有Cell对象,要访问Cell值,只能通worksheet对象,可以从workbook object的内部结构看出来
- //如果单元格为空,控制台会提示错误,运行停止,下面是解决办法!
- if (worksheet[cell_ref] === undefined) {
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + " 空值!" + '\n';
- index++;
- // alert(index);
- } else {
- if (arrayFunNames[i][index]==="上传人") {
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") != true ){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") + '\n';
- };
- }else{
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") != true ){
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") + '\n';
- };
- };
-
- index++;
- };//cell is not blank
- };//loop col
-
- };//loop row
- };// 只检查有数据行的sheet
- };//loop sheet
- }; // 检验 B14C excel文件
- //generate b14c data to json string from workbook
- function makeB14CJSONstring(workbook){
- var arraySheetNames = ["B14C"];
- var arrayFunNames=[
- ["日期","文字","文字","文字","单元号","项目号","交通归类","用车归类","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","通过","通过","文字","日期","通过","通过","通过","通过","通过","数值","通过","通过","通过","通过","通过","通过","数值","数值","数值","数值","通过","通过","日期","文字","上传人"]
- ];
-
- var strB="";
- var stc = workbook.Sheets["C"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=2;
- if (stc["C"+stid].v > 0 ) {// 只检查有数据行的sheet
-
- //strB +=","+ arraySheetNames[i] +":[";
- strB += '\"'+arraySheetNames[i]+'\"' +":\"[";
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["C"+stid].v
-
- var cell_ref;
- for (var R = 2; R <= rows+1; ++R) {//loop row
- if (R===2) {
- strB +="[";
- }else{
- strB +="▓[";
- };
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
-
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
-
- if (C===(arrayFunNames[i].length+1)) {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") ;
- }else{
- strB += worksheet[cell_ref].v;
- };
- } else {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") + "∮";
- }else{
- strB += worksheet[cell_ref].v + "∮";
- };
- };
-
- };//loop col
- strB +="]";
- };//loop row
- strB +="]\"∮";
- };// 只检查有数据行的sheet
- };//loop sheet
-
- return "{"+strB+"}";
- };//generate b14c data to json string from workbook
- ///////////////////under this line start for b15c xlsx file //////////////////////////////////
- // 检验 B15C excel文件
- function checkB15CFile(workbook,logID,userID) {
- var arraySheetNames = ["B15C"];
- var arrayFunNames=[
- ["日期","单元号","项目号","文字","通过","通过","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","通过","文字","通过","文字","通过","通过","通过","通过","数值","数值","数值","数值","数值","通过","数值","数值","数值","通过","通过","通过","文字","通过","通过","通过","通过","通过","通过","上传人"]
- ];
- var stc = workbook.Sheets["C"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=2;
- if (stc["C"+stid].v > 0 ) {// 只检查有数据行的sheet
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["C"+stid].v
- var cell_ref;
- var index;
- for (var R = 2; R <= rows+1; ++R) {//loop row
- index = 0;
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
- //xlsx.full.min.js 里面没有Cell对象,要访问Cell值,只能通worksheet对象,可以从workbook object的内部结构看出来
- //如果单元格为空,控制台会提示错误,运行停止,下面是解决办法!
- if (worksheet[cell_ref] === undefined) {
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + " 空值!" + '\n';
- index++;
- // alert(index);
- } else {
- if (arrayFunNames[i][index]==="上传人") {
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") != true ){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") + '\n';
- };
- }else{
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") != true ){
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") + '\n';
- };
- };
-
- index++;
- };//cell is not blank
- };//loop col
-
- };//loop row
- };// 只检查有数据行的sheet
- };//loop sheet
- }; // 检验 B15C excel文件
- //generate b15c data to json string from workbook
- function makeB15CJSONstring(workbook){
- var arraySheetNames = ["B15C"];
- var arrayFunNames=[
- ["日期","单元号","项目号","文字","通过","通过","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","通过","文字","日期","文字","通过","通过","通过","通过","数值","数值","数值","数值","数值","通过","数值","数值","数值","通过","通过","日期","文字","通过","通过","通过","通过","通过","通过","上传人"]
- ];
-
- var strB="";
- var stc = workbook.Sheets["C"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=2;
- if (stc["C"+stid].v > 0 ) {// 只检查有数据行的sheet
-
- //strB +=","+ arraySheetNames[i] +":[";
- strB += '\"'+arraySheetNames[i]+'\"' +":\"[";
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["C"+stid].v
-
- var cell_ref;
- for (var R = 2; R <= rows+1; ++R) {//loop row
- if (R===2) {
- strB +="[";
- }else{
- strB +="▓[";
- };
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
-
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
-
- if (C===(arrayFunNames[i].length+1)) {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") ;
- }else{
- strB += worksheet[cell_ref].v;
- };
- } else {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") + "∮";
- }else{
- strB += worksheet[cell_ref].v + "∮";
- };
- };
-
- };//loop col
- strB +="]";
- };//loop row
- strB +="]\"∮";
- };// 只检查有数据行的sheet
- };//loop sheet
-
- return "{"+strB+"}";
- };//generate b15c data to json string from workbook
- ///////////////////under this line start for b16-b19 xlsx file //////////////////////////////////
- // 检验 b16-b19 excel文件
- function checkB16toB19File(workbook,logID,userID) {
- var arraySheetNames = ["B16","B17","B18","B19"];
- var arrayFunNames=[
- ["日期","单元号","项目号","文字","通过","通过","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","数值","通过","文字","日期","文字","通过","通过","通过","通过","数值","数值","数值","数值","数值","通过","数值","数值","数值","通过","通过","日期","文字","通过","通过","通过","通过","通过","通过","上传人"]
- ];
- var stc = workbook.Sheets["C"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=i+2;
- if (stc["C"+stid].v > 0 ) {// 只检查有数据行的sheet
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["C"+stid].v
- var cell_ref;
- var index;
- for (var R = 2; R <= rows+1; ++R) {//loop row
- index = 0;
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
- //xlsx.full.min.js 里面没有Cell对象,要访问Cell值,只能通worksheet对象,可以从workbook object的内部结构看出来
- //如果单元格为空,控制台会提示错误,运行停止,下面是解决办法!
- if (worksheet[cell_ref] === undefined) {
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + " 空值!" + '\n';
- index++;
- // alert(index);
- } else {
- if (arrayFunNames[i][index]==="上传人") {
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") != true ){
- document.getElementById(logID).innerHTML += "表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"','"+userID+"')") + '\n';
- };
- }else{
- if (eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") != true ){
- document.getElementById(logID).innerHTML +="表" + arraySheetNames[i] + "单元格" + cell_ref + eval(arrayFunNames[i][index]+"('"+worksheet[cell_ref].v+"')") + '\n';
- };
- };
-
- index++;
- };//cell is not blank
- };//loop col
-
- };//loop row
- };// 只检查有数据行的sheet
- };//loop sheet
- }; // 检验 b16-b19 excel文件
- //generate b16-b19 data to json string from workbook
- function makeB16toB19JSONstring(workbook){
- var arraySheetNames = ["B16","B17","B18","B19"];
- var arrayFunNames=[
- ["通过","日期","文字","单元号","日期","文字","文字","文字","数值","文字","上传人"],
- ["通过","日期","文字","单元号","日期","文字","文字","数值","数值","文字","上传人"],
- ["通过","日期","文字","单元号","日期","文字","文字","文字","数值","文字","上传人"],
- ["通过","日期","文字","单元号","文字","数值","文字","上传人"]
- ];
-
- var strB="";
- var stc = workbook.Sheets["C"];
- for (let i = 0; i < arraySheetNames.length; i++) {//loop sheet
- var stid=i+2;
- if (stc["C"+stid].v > 0 ) {// 只检查有数据行的sheet
-
- //strB +=","+ arraySheetNames[i] +":[";
- strB += '\"'+arraySheetNames[i]+'\"' +":\"[";
-
- var worksheet = workbook.Sheets[arraySheetNames[i]]; // 这里我们只读取每个sheet
- //var strRange = worksheet['!ref'];// 取已使用区域,格式为:A1:U3,包含很多空的行,不能使用这个方式了,从C表中,取真实的数据行数
- var rows = stc["C"+stid].v
-
- var cell_ref;
- for (var R = 2; R <= rows+1; ++R) {//loop row
- if (R===2) {
- strB +="[";
- }else{
- strB +="▓[";
- };
- for (var C = 2; C <= arrayFunNames[i].length+1; ++C) {//loop col
-
- str2="";
- cell_ref = number2alphabet(C) + R;
- str2=null;
-
- if (C===(arrayFunNames[i].length+1)) {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") ;
- }else{
- strB += worksheet[cell_ref].v;
- };
- } else {
- if (arrayFunNames[i][C-2]==="日期") {
- strB += formatExcelDate(worksheet[cell_ref].v,"-") + "∮";
- }else{
- strB += worksheet[cell_ref].v + "∮";
- };
- };
-
- };//loop col
- strB +="]";
- };//loop row
- strB +="]\"∮";
- };// 只检查有数据行的sheet
- };//loop sheet
-
- return "{"+strB+"}";
- };//generate b16-b19 data to json string from workbook
- /*
- export{import_excel_to_json,readWorkbookFromLocalFile,SheetAmount,HaveSheets,HaveData3Para,readWorkbook,makeJSONstring}
- export{HaveSingleSheetName,makeIncomeJSONstring,checkIncomeFile}
- export{ checkBalanceFile,makeBalanceJSONstring }
- export{ makeInvoiceJSONstring,checkInvoiceFile }
- export{ checkInvoiceSplitFile,makeInvoiceSplitJSONstring }
- export { checkSalaryFile,makeSalaryJSONstring }
- export { checkCashInFile,makeCashInJSONstring }
- export { checkCashOutFile,makeCashOutJSONstring }
- export { checkB14CFile,makeB14CJSONstring }
- export { checkB15CFile,makeB15CJSONstring }
- export { checkB16toB19File,makeB16toB19JSONstring }
- */
|