从单个excel文件创建多个电子表格

从单个excel文件创建多个电子表格,excel,batch-file,Excel,Batch File,有没有一种简单的方法可以从一张excel表格创建多个电子表格 例如,如果我有以下格式的excel文件: 是否可以使用批处理文件为列表中的每个数字创建单独的文件?每个文件将包含该数字的所有行,并使用围绕数字的文本格式命名,如“Number_123_rows.xls”。这应该是您想要的。 它适用于逗号分隔的csv文件,但您可以根据需要更改它(delims=): (您可能需要删除“Number.csv”) 对于将XLS转换为CSV,这可能会有所帮助(我没有尝试): 编辑 如果“数字”在另一列中 单

有没有一种简单的方法可以从一张excel表格创建多个电子表格

例如,如果我有以下格式的excel文件:


是否可以使用批处理文件为列表中的每个数字创建单独的文件?每个文件将包含该数字的所有行,并使用围绕数字的文本格式命名,如“Number_123_rows.xls”。

这应该是您想要的。 它适用于逗号分隔的csv文件,但您可以根据需要更改它(
delims=
):

(您可能需要删除“Number.csv”)

对于将XLS转换为CSV,这可能会有所帮助(我没有尝试):

编辑 如果“数字”在另一列中 单行由几个“标记”组成,由一个或多个分隔符(在本例中为逗号)分隔 您可以使用令牌1、令牌2、令牌3等。“*”表示“该行的其余部分” 所以,如果数字在第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”-行之前添加一行:

创建一个新文件(删除一个现有文件),而
>
附加到文件中(新的答案可以避免更多的混乱-显然我应该避免工作到深夜)

这假设您只有起始的“file.csv”,用于新文件名的列是第2列,您希望将“a、b、c、d、e、…”重新排序为“b、a、d、c、e、…”

它检查所需的文件(例如“123.csv”)是否已经存在,如果不存在,则使用所需的标题创建它(而不是先创建文件,然后添加标题后缀)


(您可能想删除“Number.csv”)

您可以选择将XLS保存为csv文件吗?这是纯文本,易于使用批处理,当然可以。我认为不可能将该步骤添加到批处理文件中?这很有效,谢谢。有几个问题:1)是否可以指定使用的列,而不是默认为列A?例如,假设我的“数字”字段在另一列中。2) 是否也可以将字段标题输入新创建文件的第1行?问题2:标题是固定的/预定义的,还是必须从文件中读取?我明白了…这样可以处理列顺序。除非我遗漏了它,否则它不会处理第1行中的列标签,对吗?对不起,我应该指定。它们不会(经常)改变,所以使用一个预定义的集合就可以了。我肯定错过了什么。您的第二次编辑导致我的原始文件.csv被覆盖,而不是在所有输出文件中插入标题。谢谢,这就是我要找的。谢谢你的帮助。
for /F "tokens=1,2,* delims=," %%a in (file.csv) do echo %%b,%%a,%%c
echo Number,Title,Third Column >file.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
)