2016-12-18 110 views
0

我有相當多的XLSX文件,這對他們是一個轉換通過一個製表符分隔文件如何XLSX轉換爲製表符分隔的文件

一種痛苦,我想知道是否有任何解決方案要做到這一點由python。在這裏我發現了什麼,什麼嘗試失敗 我發現他做的,我嘗試瞭解決方案,但沒有奏效Mass Convert .xls and .xlsx to .txt (Tab Delimited) on a Mac

我也試着做了一個文件,看看它是如何工作的,但沒有成功

#!/usr/bin/python 
import xlrd 
import csv 


def main(): 
    # I open the xlsx file 
    myfile = xlrd.open_workbook('myfile.xlsx') 
    # I don't know the name of sheet 
    mysheet = myfile.sheet_by_index(0) 
    # I open the output csv 
    myCsvfile = open('my.csv', 'wb') 
    # I write the file into it 
    wr = csv.writer(myCsvfile, delimiter="\t") 
    for rownum in xrange(mysheet.nrows): 
     wr.writerow(mysheet.row_values(rownum)) 
    myCsvfile.close() 
if __name__ == '__main__': 
    main() 
+1

除了所有錯誤的變量名稱,您的程序工作正常。你的問題到底是什麼?什麼是錯誤? –

+0

@ Jean-FrançoisFabre你可以在我的問題中修改我的變量名嗎?我正在使用Mac python2.7 – nik

+0

@ Jean-FrançoisFabre沒有錯誤,它只是不創建任何文件 – nik

回答

1

沒有真正需要的主要功能。

並不確定你的縮進問題,但這是我將如何寫你有什麼。 (根據上面的第一條評論,應該工作)

#!/usr/bin/python 
import xlrd 
import csv 

# open the output csv 
with open('my.csv', 'wb') as myCsvfile: 
    # define a writer 
    wr = csv.writer(myCsvfile, delimiter="\t") 

    # open the xlsx file 
    myfile = xlrd.open_workbook('myfile.xlsx') 
    # get a sheet 
    mysheet = myfile.sheet_by_index(0) 

    # write the rows 
    for rownum in xrange(mysheet.nrows): 
     wr.writerow(mysheet.row_values(rownum)) 
+0

我收到此錯誤wr.writerow(mysheet.row_values(rownum)) UnicodeEncodeError:'ascii'編解碼器無法編碼位置131 -132:序號不在範圍內(128)'你知道爲什麼嗎? – nik

+0

我喜歡並接受你的回答,但是如果你可以修改它給我.txt,而不是.csv,如果可能的話,我將不勝感激 – nik

+0

嗯......'open('my.txt','wb')'?文件擴展名與它轉換爲'.txt'的問題 –

相關問題