[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 14# Andalye


    csv转xlsx.bat
  1. set csvfile="R:\old.csv"
  2. set xlsxfile="R:\new.xlsx"
  3. mshta vbscript:execute("With CreateObject(""Excel.Application"").Workbooks.Open("%csvfile%"):.SaveAs "%xlsxfile%",51:.Parent.Quit:End With")(close)
复制代码

TOP

回复 4# Andalye


    建议更新顶楼帖子,把网盘文件地址放上去,方便他人查看。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 9# Andalye


试试换成下面的吧,感觉之前的容易超过长度限制
bat代码文件保存为ansi或gbk编码的文件
生成的csv的编码为gbk,分割符为英文逗号,因此文件名中最好不要有英文逗号 和特殊字符
还有应该可以用excel直接打开csv文件,然后另存为xlsx格式的文件的
  1. @echo off&pause&chcp 936 >nul
  2. rem 将bat代码文件保存为gbk编码的文件
  3. rem 生成的csv的编码为gbk,分割符为英文逗号,因此文件名中最好不要有英文逗号和特殊字符
  4. rem 循环初始值
  5. set iii=10000
  6. rem 数据列最大初始值
  7. set max=10000
  8. rem 文件数量初始值
  9. set m=10000
  10. echo,
  11. rem 递归枚举当前目录下的.lvm文件并提取数据
  12. for /R %%a in ("*.lvm") do (
  13. set n=10000
  14. set file=%%a
  15. echo 开始提取文件"%%a"数据列
  16. call :aaa
  17. echo 提取完成&echo.
  18. set /a m+=1
  19. )
  20. set /a m-=1
  21. echo 开始生成csv文件...&echo,
  22. echo 创建文件 ______a.csv
  23. cd.>______a.csv
  24. for /l %%a in (%iii%,1,%m%) do (
  25. set lll=0
  26. rem 获取变量值并分割,重定向数据到csv文件
  27. for /f "tokens=1* delims==" %%b in ('set array%%a_') do (
  28. if defined lll (
  29. set /p="%%c"<nul
  30. set lll=
  31. ) else set /p=,%%c<nul
  32. )
  33. echo,
  34. )>>______a.csv
  35. echo 已生成csv文件&echo.
  36. echo 创建文件 ______b.csv
  37. cd.>______b.csv
  38. setlocal enabledelayedexpansion
  39. rem 重定向数据到csv文件,分隔符为英文逗号,不足最大数据列的用nil填充
  40. (for /l %%y in (%iii%,1,%max%) do (
  41. set lll=0
  42. for /l %%z in (%iii%,1,%m%) do (
  43. if !lll! == 0 (
  44. if "!array%%z_%%y!" neq "" (set/p=!array%%z_%%y!<nul) else set/p=nil<nul
  45. set /a lll+=1
  46. ) else (
  47. if "!array%%z_%%y!" neq "" (set/p=,!array%%z_%%y!<nul) else set/p=,nil<nul
  48. ))
  49. echo,
  50. ))>>______b.csv
  51. echo 已生成csv文件&echo.
  52. endlocal
  53. pause&exit/b
  54. rem 提取文件数据过程
  55. :aaa
  56. set "array%m%_%n%=%file%"
  57. rem 读取文件并提取数据
  58. for /f "tokens=3" %%b in ('findstr /b "[-0-9][0-9]*\." "%file%"') do (
  59. set /a n+=1
  60. setlocal enabledelayedexpansion
  61. for %%c in (!m!_!n!) do endlocal&set array%%c=%%b
  62. )
  63. rem 重设最大数据列值
  64. if %n% gtr %max% set max=%n%
  65. goto :eof
复制代码
1

评分人数

    • Andalye: 感谢给帖子标题标注[已解决]字样技术 + 1

TOP

返回列表