2016-09-15 169 views
0

我現在正在使用RapidMiner,並試圖將我在xlsx文件中的RapidMiner結果複製到txt文件中,以便使用python進行一些進一步處理。我在A列(A1-A1500)中顯示純文本,C列(C1-C1500)中顯示相應的文件名。 現在我的問題: 是否有任何可能(我正在考慮xlrd模塊)讀取A列中每個單元格的內容並將其打印到新創建的txt文件中,並在相應的列C中給出文件名?讀取Excel單元格並將內容複製到txt文件

正如我有點此刻失去之前,我從來沒有與xlrd模塊工作...

回答

3

對於與.xlsx處理有關的每項任務,我都可以推薦openpyxl

對於你的要求:

from openpyxl import * 
import os  

p = 'path/to/the/folder/with/your/.xlsx' 
files = [_ for _ in os.listdir(p) if _.endswith('.xlsx')] 

for f in files: 

    wb = load_workbook(os.path.join(p, f)) 
    ws = wb['name_of_sheet'] 
    for row in ws.rows: 
     with open(row[2].value+'.txt', 'w') as outfile: 
       outfile.write(row[0].value) 
+0

感謝您的幫助。這工作非常完美!也許還有一件事。假設我有一個包含多個excel文件的目錄,都具有相同的結構,是否有機會(使用os.chdir和for循環)迭代所有excel文件並將我的輸出文件重定向到一個特定的目錄,該目錄將包含所有我txt文件到底? –

+0

感謝您編輯您的帖子,現在迭代完美。我只附加了os.chdir(r「F:\ Results」),以便將我的輸出與我的Excel文件放在同一個目錄中。 –

0

美好的一天!所以,我不確定我是否正確理解你的問題,但是你是否嘗試過使用讀取Excel操作符與循環示例操作符的組合?你的循環子程序可以使用Write CSV操作符或類似的。

+0

好主意。沒有想到在RM中做這個任務。但是可以將輸出文件分配與輸入文件相同的名稱? –

0

由於@corinna最終的代碼是:

from openpyxl import * 
import os 


p = r'F:\Results' 
files = [_ for _ in os.listdir(p) if _ .endswith('.xlsx')] 
os.chdir(r"F:\Results") 
for f in files: 

    file_location = load_workbook(os.path.join(p, f)) 
    sheet = file_location['Normal'] 
    for row in sheet.rows: 
     with open(row[2].value + '.txt', "w") as outfile: 
      outfile.write(row[0].value) 
相關問題