有没有一种简单的方法可以从一张 Excel 表格创建多个电子表格?
例如,如果我有以下格式的 excel 文件:
可以使用批处理文件为列表中的每个数字创建单独的文件吗?每个文件将包含该数字的所有行,并使用数字周围带有文本的格式命名,例如“Number_123_rows.xls”。
有没有一种简单的方法可以从一张 Excel 表格创建多个电子表格?
例如,如果我有以下格式的 excel 文件:
可以使用批处理文件为列表中的每个数字创建单独的文件吗?每个文件将包含该数字的所有行,并使用数字周围带有文本的格式命名,例如“Number_123_rows.xls”。
这应该做,你想要什么。它适用于逗号分隔的 csv 文件,但您可以根据需要进行更改 ( delims=
):
@echo off
for /F "tokens=1* delims=," %%i in (file.csv) do (
echo %%i,%%j >>%%i.csv
)
(您可能要删除“Number.csv”)
对于将 XLS 转换为 CSV,这可能会有所帮助(我没有尝试过): 文件
编辑 如果“数字”在另一列中,一行由几个“标记”组成,由一个或多个分隔符分隔(在本例中为逗号)您可以使用标记 1、标记 2、标记 3 等。“*”表示“该行的其余部分”因此,如果 Numbers 在第 2 列中,请写
for /F "tokens=1,2,* delims=," %%a in (file.csv) do (echo %%a,%%b,%%c >>%%b.csv )
(注意它写入文件 %%b.csv (数字是第 2 列)
或者如果您想更改订单:
for /F "tokens=1,2,* delims=," %%a in (file.csv) do echo %%b,%%a,%%c
(注意 a、b 和 c 的顺序)如果您使用 26 个标记,它们将被命名为 %%a 到 %%z
当您需要重新排列订单时,您可以将其扩展为“tokens=1,2,3,4,5,6,7”等。
Edit2:对于标题,只需在“for”行之前添加一行:
echo Number,Title,Third Column >file.csv
你>
创建一个新文件(删除现有文件),同时>>
追加到文件
(避免更多混乱的新答案 - 显然我应该避免在深夜工作)
这假设,您只有起始“file.csv”,用于新文件名的列是第 2 列,并且您希望将“a,b,c,d,,e,...”重新排序为“b ,a,d,c,e,..."
它检查所需的文件(例如“123.csv”)是否已经存在,如果不存在,则使用所需的标题创建它(而不是首先创建文件,然后添加标题后缀)。
@echo off
set "header=Title,Number,Whatever,Something,Anotherthing"
for /F "tokens=1-4* delims=," %%a in (file.csv) do (
if not exist "%%b.csv" (
rem when the file does not exist, create a new one with the header:
echo %header% >"%%b.csv"
)
rem append next line:
echo %%b,%%a,%%d,%%c,%%e >>%%i.csv
)
(您可能要删除“Number.csv”)