2016-12-18 3 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çois Fabre вы можете изменить мои имена переменных в моем вопросе? Я использую Mac с python2.7 – nik

+0

@ Jean-François Fabre нет ошибки, он просто не создает никакого файла – 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

Umm .. 'open ('my.txt', 'wb')'? Расширения файлов не имеют отношения к проблеме –