2013-04-29 12 views
5

Sto cercando il modo più economico di automatizzare la conversione di tutti i file di testo (delimitati da tabulazioni) in una struttura di cartelle in formato .xls, mantenendo la forma di colonne e righe così come sono.Automatizza conversione txt a xls

Attualmente sono su MacOS. Linux e Windows sono comunque disponibili.

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 

Questo dovrebbe fare ...

risposta

1

Il modo più semplice sarebbe quella di rinominare solo tutti i file da * .txt a * .xls. Excel ripartirà automaticamente i dati, mantenendo la forma originale.

io non ho intenzione di scrivere il codice per voi, ma qui è un vantaggio:

  • È possibile elencare le directory contenuti utilizzando os.listdir()
  • È possibile utilizzare os.path.isdir() e os.path.isfile() per vedere se ogni 'cosa' che avete appena trovato nella directory intial è un file o una directory, e agire su di conseguenza
  • è possibile utilizzare os.rename() per rinominare un file e os.remove() per eliminare un file
  • è può usare os.path.splitext() per dividere il nome file e l'estensione, o semplicemente file.endswith('.txt') a lavorare solo i file corretti
+0

Grazie, ma sto cercando di poi leggere i file tramite XLRD che senza aprire il file in Excel e salvandolo non riconoscerà il file come File Excel semplicemente rinominandolo. – lhcgeneva

+2

@lhcgeneva mi hai confuso ... citi di voler evitare l'uso di 'xlrd' ma lo userai comunque ... quindi perché non usare' xlwt' per convertire i file di testo? –

+0

@Jon Clements Ho pensato che sarebbe stato ingombrante usare xlwt, ed è per questo che volevo evitarlo per convertire i file. C'è un modo semplice per farlo con xlwt? – lhcgeneva

0

ne dici di questo?

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

Siamo spiacenti, deve essere incollato nella cosa sbagliata ...