本帖最后由 went 于 2020-12-15 19:58 编辑
保存为bat,ANSI编码,拖动要处理的csv文件到bat文件上即可 | | | | | | | | | | | | | | | | | function swap(lineNum,maps,sheet){ | | shell.Exec("cmd /c title 处理第" + lineNum +"行数据."); | | var array,tmpStr="",firstCol=null | | for(var key in maps){ | | if(firstCol == null) | | firstCol = key; | | tmpStr+=sheet.Cells(lineNum,maps[key]).Text == "0" ? "" : sheet.Cells(lineNum,maps[key]).Text; | | tmpStr += ","; | | } | | for(var key in maps){ | | sheet.Cells(lineNum,maps[key]).Value = tmpStr.split(",")[maps[key]-firstCol]; | | } | | } | | | | var csvFile = WSH.StdIn.ReadLine(); | | var eObj = new ActiveXObject("Excel.Application"); | | var fObj = new ActiveXObject("Scripting.FileSystemObject"); | | var shell = new ActiveXObject("WScript.Shell"); | | eObj.Visible = false; | | var excelA = eObj.Workbooks.Open(csvFile.replace(/\\/g,"\\\\")); | | | | WSH.Echo("正在复制csv数据到xls ...\n"); | | excelA.ActiveSheet.Copy(); | | excelB = eObj.Workbooks.Item(2); | | excelA.Close(); | | | | var totalLine = 0; | | var totalCol = 0; | | var f = fObj.OpenTextFile(csvFile,1); | | while(!f.AtEndOfStream){ | | var curCol = f.ReadLine().split(",").length; | | if(curCol > totalCol)totalCol = curCol; | | totalLine += 1; | | } | | | | | | var maps={4:4,5:9,6:7,7:6,8:5,9:8,10:10}; | | var leftTop = "B5",right = "L",bottom = totalLine; | | | | | | WSH.Echo("正在添加边框 [" + leftTop+ ":" + right + bottom + "] ...\n"); | | var cells = eObj.Range(leftTop+ ":" + right + bottom); | | cells.Borders.LineStyle = 1; | | cells.Borders.Weight = 2; | | WSH.Echo("正在调整数据...\n"); | | | | swap(6,maps,excelB.ActiveSheet); | | | | for(var i=8;i<totalLine;i++) | | swap(i,maps,excelB.ActiveSheet); | | | | excelB.SaveAs(fObj.GetParentFolderName(csvFile)+"\\"+fObj.GetBaseName(csvFile)+"_new.xls"); | | eObj.Quit(); | | shell.Exec("cmd /c title 处理完成!"); | | WSH.Echo("完成,输出文件: "+fObj.GetParentFolderName(csvFile)+"\\"+fObj.GetBaseName(csvFile)+"_new.xls");COPY |
|