2013-04-29 7 views
5

Я ищу самый дешевый способ автоматизации преобразования всех текстовых файлов (с разделителями-табуляторами) в структуре папок в формат .xls, сохраняя форму столбцов и строк как есть.Автоматизация преобразования txt в xls

В настоящее время я нахожусь на MacOS. Linux и Windows доступны, хотя.

Edit:

import xlwt 
import xlrd 
f = open('Text.txt', 'r+') 
row_list = [] 
for row in f: 
    row_list.append(row.split()) 
column_list = zip(*row_list) 
workbook = xlwt.Workbook() 
worksheet = workbook.add_sheet('Sheet1') 
i = 0 
for column in column_list: 
    for item in range(len(column)): 
     worksheet.write(item, i, column[item]) 
    workbook.save('Excel.xls') 
    i+=1 

Это должно сделать ...

ответ

1

Проще всего было бы просто переименовать все файлы из * .txt в * .xls. Excel автоматически разделяет данные, сохраняя исходную форму.

Я не буду писать код для вас, но вот фору:

  • Вы можете перечислить каталоги содержимое с помощью os.listdir()
  • Вы можете использовать os.path.isdir() и os.path.isfile(), чтобы увидеть, если каждый «вещь» вы только что нашли в вашем intial директории файл или каталог, и действовать соответствующим образом на
  • вы можете использовать os.rename() переименовать файл и os.remove() для удаления файла
  • вы можно использовать os.path.splitext() для разделения имен файлов и расширение, или просто file.endswith('.txt') работать на только правильные файлы
+0

Спасибо, но я ищу, чтобы затем читать файлы через xlrd которые без открытия файла в Excel и сохранить его не распознает файл как Excel, просто переименовав его. – lhcgeneva

+2

@lhcgeneva, вы меня смутили ... вы упоминаете, что пытаетесь избежать использования 'xlrd', но собираетесь использовать его в любом случае ... так почему бы не использовать' xlwt' для преобразования текстовых файлов? –

+0

@Jon Clements Я думал, что это будет громоздко с помощью xlwt, поэтому я хотел избежать его, чтобы преобразовать файлы. Есть ли простой способ сделать это с помощью xlwt? – lhcgeneva

0

Как насчет этого?

import xlwt 
textfile = "C:/Users/your_path_here/Desktop/test.txt" 

def is_number(s): 
    try: 
     float(s) 
     return True 
    except ValueError: 
     return False   


style = xlwt.XFStyle() 
style.num_format_str = '#,###0.00' 

#for textfile in textfiles: 
f = open(textfile, 'r+') 
row_list = [] 
for row in f: 
    row_list.append(row.split('|')) 
column_list = zip(*row_list) 
workbook = xlwt.Workbook() 
worksheet = workbook.add_sheet('Sheet1') 
i = 0 
for column in column_list: 
    for item in range(len(column)): 
     value = column[item].strip() 
     if is_number(value): 
      worksheet.write(item, i, float(value), style=style) 
     else: 
      worksheet.write(item, i, value) 
    i+=1 
workbook.save(textfile.replace('.txt', '.xls')) 

К сожалению, должны быть вставлены в неверной вещи ...

Смежные вопросы