0

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

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

电子表格

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

4

2 回答 2

0

这应该做,你想要什么。它适用于逗号分隔的 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

>创建一个新文件(删除现有文件),同时>>追加到文件

于 2013-07-15T18:36:29.397 回答
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”)

于 2013-07-17T06:00:22.753 回答