2013-04-29 16 views
5

Szukam najtańszego sposobu zautomatyzowania konwersji wszystkich plików tekstowych (rozdzielanych tabulatorami) w strukturze folderów do formatu .xls, zachowując kształt kolumn i wierszy w obecnej postaci.Automatyzacja konwersji txt na Xls

Obecnie jestem na MacOS. Linux i Windows są jednak dostępne.

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 

Należy to zrobić ...

Odpowiedz

1

Najprostszym sposobem byłoby po prostu zmienić nazwy wszystkich plików z * .txt na * .xls. Excel automatycznie podzieli dane, zachowując oryginalny kształt.

ja nie zamierzam napisać kod dla ciebie, ale o to fory:

  • Można listy do katalogów zawartość używając os.listdir()
  • Można użyć os.path.isdir() i os.path.isfile() aby sprawdzić, czy każdy „rzeczą” po prostu znaleźć w pierwsze pytania katalogu jest plik lub katalog, i działać na odpowiednio
  • można użyć os.rename() zmienić nazwę pliku i os.remove() usunąć plik
  • You można użyć nazwy os.path.splitext(), aby podzielić nazwę i rozszerzenie plików, lub po prostu file.endswith('.txt'), aby pracować tylko z właściwymi plikami
+0

Dzięki ale szukam następnie odczytać pliki poprzez xlrd który bez otwierania pliku w programie Excel i zapisywanie go nie rozpozna, jak plik Plik Excel po prostu zmieniając jego nazwę. – lhcgeneva

+2

@lhcgeneva zdezorientowałeś mnie ... wspomniałeś o próbie uniknięcia użycia 'xlrd', ale i tak będziesz go używał ... więc dlaczego nie użyć' xlwt' do konwersji plików tekstowych? –

+0

@ Clement Clement Myślałem, że będzie dużo za pomocą xlwt, dlatego chciałem go uniknąć, aby przekonwertować pliki. Czy istnieje łatwy sposób na zrobienie tego przy pomocy xlwt? – lhcgeneva

0

A co powiesz na to?

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')) 

Niestety, musiała wklejony w niewłaściwym rzeczy ...