2013-07-15 95 views
0

是否有一種簡單的方法從單個Excel表格創建多個電子表格?從單個Excel文件創建多個電子表格

例如,如果我在以下格式的Excel文件:

spreadsheet

可能一個批處理文件來創建單獨的文件列表中的每個號碼?每個文件將包含該Number的所有行,並使用包含Number的文本格式來命名,如「Number_123_rows.xls」。

+0

是否可以將該XLS另存爲CSV文件?這是純文本,並且易於批量處理 – Stephan

+0

這是行得通的,我不認爲可以添加該步驟到一個批處理文件? – kmfdm

回答

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

編輯 如果「數字」是另一列 單升ine由幾個由一個或多個分隔符(在本例中爲逗號)分隔的「標記」組成 您可以獲取標記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的順序) 如果您要使用2 6令牌,它們將被命名爲%% a到%% z

您可以將它擴展爲「令牌= 1,2,3,4,5,6,7」等,當您需要它重新排列順序時。

EDIT2: 的頭,只是前面加上一個行「爲」直插:

echo Number,Title,Third Column >file.csv 

>創建一個新文件(刪除現有的文件),而>>追加到文件

+0

工作,謝謝。幾個問題:1)是否可以指定使用的列,而不是默認列A?說我的「數字」字段在另一列,例如。2)是否可以在新創建的文件的row1中輸入字段標題? – kmfdm

+0

是的,當然,我會編輯我的答案 – Stephan

+0

您的問題2:標題是修正/預定義的,還是必須是從文件中讀取? – Stephan

0

(新的答案,以避免更多的混亂 - 很明顯,我應避免在深夜工作)

這是假設,你只有你starti ng「file.csv」,用於新文件名的列是第2列,並且您想要將「a,b,c,d,e,...」重新排序爲「b,a,d,c, e,...「

它檢查,如果需要的文件(例如「123.csv」)已經存在,如果不存在,它會用所需的Header創建它(而不是首先創建文件,然後添加標頭後綴)。

@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「)

+0

謝謝,那就是我一直在尋找的東西。感謝幫助。 – kmfdm

相關問題