Board logo

标题: [文本处理] [已解决]将xls表格文件每一行内容输出到以首列/第一列的内容命名的txt文本里 [打印本页]

作者: 997666    时间: 2017-3-31 16:58     标题: [已解决]将xls表格文件每一行内容输出到以首列/第一列的内容命名的txt文本里

本帖最后由 pcl_test 于 2017-4-17 13:00 编辑

我有一个xls文件,需要把逐行内容批量导出txt文件,且每行第一列单元格内容作为txt文件名称,谢谢!

不用宏,仅用批处理bat文件,请教可否达成?
作者: 老刘1号    时间: 2017-3-31 18:46

哈哈,我见过的最大的笑话
你需要一个第三方转为纯文本
或者VBS直接处理
作者: pcl_test    时间: 2017-3-31 22:03

本帖最后由 pcl_test 于 2017-4-8 13:19 编辑
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. Set objExcel= CreateObject("Excel.Application")
  3. file = fso.GetFolder(".").Path & "\测试.xls"
  4. Set objBook = objExcel.Workbooks.Open(file)
  5. objBook.WorkSheets(1).activate
  6. Set objSheet = objBook.activeSheet
  7. rows = objSheet.UsedRange.Rows.count
  8. columns = objSheet.UsedRange.Columns.Count
  9. Dim arr()
  10. For i=1 To rows
  11.     For j=0 To columns-2
  12.         ReDim Preserve arr(j)
  13.         arr(j)=objSheet.Cells(i, j+2)
  14.     Next
  15.     line = Join(arr, "  ")
  16.     'fso.CreateTextFile(objSheet.Cells(i, 1) & ".txt", 2).Write(line)
  17.     s = s & line & " --> " & objSheet.Cells(i, 1) & ".txt" & vbCrLf
  18.     Erase arr
  19. Next
  20. WSH.echo s
  21. objBook.Close
  22. objExcel.Quit
复制代码

作者: 997666    时间: 2017-4-1 09:15

回复 2# 老刘1号


   

新手,请见谅

那我自行将xls转换为txt,请问可以用批处理将txt文本每行批量导出,首行单元格内容作为单个txt命名吗?
作者: 997666    时间: 2017-4-1 09:18

回复 3# pcl_test


    感谢版主无私的共享精神,请教下,我是新手,现在才知道xls文件无法达成,那如果转为txt文本,可以用批处理来执行吗?谢谢了。
作者: pcl_test    时间: 2017-4-1 09:35

回复 5# 997666

可以
作者: 997666    时间: 2017-4-1 10:27

本帖最后由 997666 于 2017-4-1 10:28 编辑

回复 6# pcl_test


    感谢版主的辛苦努力,我这边用win7及win10平台的电脑均试了一下,你帮忙编写的代码可以完美的读取xls文件,且弹窗能够显示逐行导出的txt文件,但是当前目录下均没有txt文件,我搜索了全盘,也没有发现文件(会不会没有生成txt文件?),可否帮我检查一下,看是我什么地方需要更改一下?谢谢了。
作者: pcl_test    时间: 2017-4-1 10:36

本帖最后由 pcl_test 于 2017-4-1 10:37 编辑

回复 7# 997666
只是在代码中注释了,改动下即可
作者: 997666    时间: 2017-4-1 11:35

本帖最后由 997666 于 2017-4-5 17:21 编辑

感谢各位的帮助,因为我是新手,自己又研究了一下批处理写法,其实很简单,拿出来分享一下,在xls文件里,自行添加>文本名即可。对应内容列及文件名列,但此方法比较土,不知道各位还有没有更简洁、高效的批处理写法?
作者: 老刘1号    时间: 2017-4-1 12:15

本帖最后由 老刘1号 于 2017-4-6 19:53 编辑
  1. for /f "tokens=1,*" %%a in (a.txt) do Echo %%b>%%~a.txt
复制代码

作者: 997666    时间: 2017-4-1 16:01

本帖最后由 pcl_test 于 2017-4-1 16:15 编辑

回复 10# 老刘1号


   朋友你好,谢谢你热心的指导,我试验了一下,未成功,是不是代码还需要更改一下?新手总是问些很简单问题,能得到你不厌其烦的回复,很感谢!
作者: 老刘1号    时间: 2017-4-1 18:55

回复 11# 997666


    文本是什么样子的呢?
文本.txt更改为你的文本的名字
作者: 997666    时间: 2017-4-5 17:29

回复 12# 老刘1号


    我的文本(a.txt)就是5行5列,分别是a b c d e(用excel转存的txt文本文件,中间分隔符应为空格),第二行是a2 b2 c2 d2 e2(以此类推)

使用你的代码后,无任何反应,也未生成新文本文件,是不是我这边还需要改下代码?
作者: 老刘1号    时间: 2017-4-5 21:22

回复 13# 997666


    代码确实有点问题,试试修改过的~
作者: 997666    时间: 2017-4-6 16:34

回复 14# 老刘1号

谢谢你的指导,目前已经可以正常的输出每行了,并且以a列内容命名文件名,但是还是有点瑕疵,就是只能把b列的内容输出到文本,后面c、d、e列均无法输出,帮忙看下是什么问题,谢谢了。
作者: 老刘1号    时间: 2017-4-6 19:54

回复 15# 997666


    已修改,再试试~
作者: 997666    时间: 2017-4-7 15:59

回复 16# 老刘1号


    谢谢,已解决




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2