是否有一种简单的方法可以从单个Excel工作表创建多个电子表格?
例如,如果我有以下格式的excel文件:
是否可以使用批处理文件为列表中的每个Number创建单独的文件?每个文件都包含该Number的所有行,并使用带有Number周围文本的格式命名,如“Number_123_rows.xls”。
答案 0 :(得分:0)
这应该做,你想要什么。
它适用于逗号分隔的csv文件,但您可以根据需要进行更改(delims=
):
@echo off
for /F "tokens=1* delims=," %%i in (file.csv) do (
echo %%i,%%j >>%%i.csv
)
(您可能想要删除“Number.csv”)
要将XLS转换为CSV,这可能会有所帮助(我没试过): file
修改强> 如果“数字”在另一列中 一行由几个“标记”组成,由一个或多个分隔符(在本例中为逗号)分隔 您可以使用令牌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
当您需要重新排列订单时,可以将其扩展为“令牌= 1,2,3,4,5,6,7”等。
<强> EDIT2 强>: 对于标题,只需在“for”-line之前添加一行:
echo Number,Title,Third Column >file.csv
Thee >
创建一个新文件(删除现有文件),而>>
附加到文件
答案 1 :(得分:0)
(避免更多混淆的新答案 - 显然我应该避免在深夜工作)
这假设您只有您的起始“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”)