Board logo

标题: [文本处理] 【已解决】如何用批处理将特定文字内容分两列写入excel文件? [打印本页]

作者: Lumiere    时间: 2013-8-28 01:59     标题: 【已解决】如何用批处理将特定文字内容分两列写入excel文件?

本帖最后由 Lumiere 于 2013-8-28 23:24 编辑

我有一个文本,内容很有规律,写在一个名为1.txt的文本文件中,内容如下:
……………………………………
……………………………………
耔晶取向 seed orientation
籽晶生长 seeded growth
均质核化 homogeneous nucleation
异质核化 heterogeneous nucleation
均匀化热处理 homogenization heat treatment
……………………………………
……………………………………
……………………………………

基本都是这样的专业术语,如果我想用批处理把他们分成两列对应写入一个名为1.xlsx的excel文件的话,纯批处理能做到吗?不能的话应该借助什么其他脚本呢?如果可能,请在其他脚本的代码处给出相应的注释,谢谢!
作者: Batcher    时间: 2013-8-28 11:09

  1. @echo off
  2. (for /f "tokens=1*" %%i in (1.txt) do (
  3.     echo %%i,%%j
  4. ))>1.csv
复制代码

作者: Lumiere    时间: 2013-8-28 12:04

回复 2# Batcher


    我想再问下,如果两列之间没有空格,就是英文和中文直接链接在一起的,比如从“中文english”这样的格式,怎么能方便的用代码实现分离,并且做成那样的excel文件?有没有简单的命令能区分中文和英文字符然后把字符串截断的命令?
作者: tmplinshi    时间: 2013-8-28 15:01

本帖最后由 tmplinshi 于 2013-8-28 15:02 编辑

回复 3# Lumiere
  1. @echo off
  2. call :txt2csv "1.txt" >1.csv
  3. exit /b
  4. :txt2csv <InputFile>
  5. SetLocal EnableDelayedExpansion
  6. for /f "usebackq tokens=*" %%i in ("%~1") do (
  7. set str_full=%%i
  8. for /f "delims=abcdefghijklmnopqrstuvwxyz" %%a in ("%%i") do (
  9. echo %%~nxa,!str_full:*%%a=!
  10. )
  11. )
  12. EndLocal
  13. goto :eof
复制代码

作者: Lumiere    时间: 2013-8-28 20:29

回复 4# tmplinshi


经测试完美运行,非常感谢。代码基本都懂,但是还有三个点需要帮忙解疑:
1. csv文件是excel类型文件,为什么能用批处理写入内容形成这种文件却不能写成xlsx文件?
2. 为什么在两部分内容之间加入逗号“,”就可以实现将两部分写在同一行相邻的两个单元格?可以用其他的字符代替么?
3. for结构里最后一条为什么是%%~nxa,这个不是扩展成一个文件名和扩展名的意思吗?不是直接用%%a就可以了吗?
作者: tmplinshi    时间: 2013-8-28 20:46

回复 5# Lumiere

1. csv文件是excel类型文件,为什么能用批处理写入内容形成这种文件却不能写成xlsx文件?

因为批处理只能输出纯文本,而 xlsx 其实是 zip 压缩文件。

2. 为什么在两部分内容之间加入逗号“,”就可以实现将两部分写在同一行相邻的两个单元格?可以用其他的字符代替么?

因为 csv 的格式就是这样——用逗号分隔。可以用 Tab 符号代替,但是文件格式要保存为 UTF-16 LE。

3. for结构里最后一条为什么是%%~nxa,这个不是扩展成一个文件名和扩展名的意思吗?不是直接用%%a就可以了吗?

%%~nxa 可以去掉末尾的空格
作者: Lumiere    时间: 2013-8-28 21:35

回复 6# tmplinshi


    谢谢耐心的回复,这个%%~nxa既然说扩展为文件名和扩展名,这个不是跟文件相关的概念么,怎么用在字符串上了,是巧用吗?还有其他的用途么?我先把帖子结了。
作者: tmplinshi    时间: 2013-8-28 21:41

是的,巧用。
作者: Lumiere    时间: 2013-8-28 23:25

回复 8# tmplinshi

谢谢,无疑问了,多谢解答,结贴了。




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