找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 1065|回复: 2

[文本处理] 求助:一个文件中所有doc或docx的数据转换为一个csv

[复制链接]
发表于 2026-1-2 16:06:32 | 显示全部楼层 |阅读模式
将一个文件夹中所有的doc或docx文件里表格的数据提取保存到一个csv文件中,具体情况如图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2026-1-2 19:04:00 | 显示全部楼层
只考虑第一张表大概:
  1. #ANSI字符编码&cls&powershell -Version 5.1 -NoLogo -NoProfile -Command "gc -Encoding Oem -ReadCount 0 -LiteralPath '%~f0'|out-string|iex"&pause&exit/b
  2. $wps = New-Object -ComObject Kwps.Application
  3. $et = New-Object -ComObject Ket.Application
  4. $wb = $et.Workbooks.Add()
  5. $s = $wb.Sheets.Item(1)
  6. dir *.doc? | %{
  7.     $d = $wps.Documents.Open($_.FullName)
  8.     $d.Tables.Item(1).Select()
  9.     $wps.Selection.Copy()
  10.     $s.UsedRange.ClearContents()
  11.     $s.Range("A1").PasteSpecial()
  12.     $s.SaveAs(($_.FullName -replace "docx?$", "csv"), 6)
  13.     $d.Close()
  14. }

  15. $wps.Quit()
  16. $wb.Close(0)
  17. $et.Quit()
复制代码
应该对所有表再循环一重
发表于 2026-1-2 23:38:03 | 显示全部楼层
本帖最后由 aloha20200628 于 2026-1-2 23:45 编辑

回复 1# 霖僡

以下代码存为 test.bat 运行,运行结果会在当前目录中生成 all.csv 文件,其中包含当前目录及其子目录下 *.doc,*.docx 文件中的全部表格数据,每个表格中的数据行与 all.csv 文件行依序对应...

  1. 2>1/* ::
  2. @echo off & dir /b/s/a-d *.docx *.doc|cscript /nologo /e:jscript "%~f0" "%cd%\all.csv"
  3. pause&exit/b */
  4. ws=WSH.stdin, fso=WSH.createObject('Scripting.FileSystemObject');       
  5. v=WSH.arguments, cF=fso.CreateTextFile(v(0), 2, true);
  6. wa=WSH.createObject('word.application'), wa.visible=false, wa.displayAlerts=0;
  7. while (!ws.atendofstream) {
  8.   f=ws.readline(), doc=wa.documents.open(f);
  9.   for (t=1,tc=doc.tables.count; t<=tc; t++)
  10.     for (r=1,rc=doc.tables(t).rows.count; r<=rc; r++) {
  11.       line=[];
  12.       for (c=1,cc=doc.tables(t).rows(r).cells.count; c<=cc; c++) {
  13.         v=doc.tables(t).rows(r).cells(c).range.text;
  14.         line.push(v.replace(/\x07|\r|\n/g, '')); }
  15.       cF.writeLine(line.join(',')); }
  16.   doc.close(false); }
  17. cF.close(), wa.quit(), WSH.quit();
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:06 , Processed in 0.017188 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表