[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 went 于 2020-12-15 19:58 编辑

保存为bat,ANSI编码,拖动要处理的csv文件到bat文件上即可
  1. /*&cls&@echo off
  2. if "%~1"=="" echo.请拖动要处理的csv文件到本程序图标上&pause&exit
  3. if /i not "%~x1"==".csv" echo.非csv文件!&pause&exit
  4. cd /d "%~dp1"
  5. del "%~n1_new.xls" /f >nul 2>nul
  6. echo.%~1| cscript -E:javascript -Nologo "%~0" &pause&exit
  7. */
  8. //交换一行数据
  9. function swap(lineNum,maps,sheet){
  10. shell.Exec("cmd /c title 处理第" + lineNum +"行数据.");
  11. var array,tmpStr="",firstCol=null
  12. for(var key in maps){
  13. if(firstCol == null)
  14. firstCol = key;
  15. tmpStr+=sheet.Cells(lineNum,maps[key]).Text == "0" ? "" : sheet.Cells(lineNum,maps[key]).Text;
  16. tmpStr += ",";
  17. }
  18. for(var key in maps){
  19. sheet.Cells(lineNum,maps[key]).Value = tmpStr.split(",")[maps[key]-firstCol];
  20. }
  21. }
  22. //开始
  23. var csvFile = WSH.StdIn.ReadLine();
  24. var eObj = new ActiveXObject("Excel.Application");
  25. var fObj = new ActiveXObject("Scripting.FileSystemObject");
  26. var shell = new ActiveXObject("WScript.Shell");
  27. eObj.Visible = false;
  28. var excelA = eObj.Workbooks.Open(csvFile.replace(/\\/g,"\\\\"));
  29. //复制到xls
  30. WSH.Echo("正在复制csv数据到xls ...\n");
  31. excelA.ActiveSheet.Copy();
  32. excelB = eObj.Workbooks.Item(2);
  33. excelA.Close();
  34. //计算行列数
  35. var totalLine = 0;
  36. var totalCol = 0;
  37. var f = fObj.OpenTextFile(csvFile,1);
  38. while(!f.AtEndOfStream){
  39. var curCol = f.ReadLine().split(",").length;
  40. if(curCol > totalCol)totalCol = curCol;
  41. totalLine += 1;
  42. }
  43. //自定义数据
  44. //*************************************************
  45. var maps={4:4,5:9,6:7,7:6,8:5,9:8,10:10}; //列交换数据     [第几列:换到第几列]
  46. var leftTop = "B5",right = "L",bottom = totalLine; //加边框范围数据 [左上角,右边界,下边界]
  47. //*************************************************
  48. //添加边框
  49. WSH.Echo("正在添加边框 [" + leftTop+ ":" + right + bottom + "]    ...\n");
  50. var cells = eObj.Range(leftTop+ ":" + right + bottom);
  51. cells.Borders.LineStyle = 1;
  52. cells.Borders.Weight = 2;
  53. WSH.Echo("正在调整数据...\n");
  54. //交换名称
  55. swap(6,maps,excelB.ActiveSheet);
  56. //交换数字
  57. for(var i=8;i<totalLine;i++)
  58. swap(i,maps,excelB.ActiveSheet);
  59. //生成文件
  60. excelB.SaveAs(fObj.GetParentFolderName(csvFile)+"\\"+fObj.GetBaseName(csvFile)+"_new.xls");
  61. eObj.Quit();
  62. shell.Exec("cmd /c title 处理完成!");
  63. WSH.Echo("完成,输出文件: "+fObj.GetParentFolderName(csvFile)+"\\"+fObj.GetBaseName(csvFile)+"_new.xls");
复制代码

TOP

返回列表