Ho un file * .xlsm che contiene 20 fogli. Desidero salvare pochi fogli come * .csv (la perdita di formattazione va bene) individualmente. Già provato con le librerie xlrd-xlwt e win32com ma non riuscivo a passare. Qualcuno può fornire uno snippet di codice che esegue l'elaborazione di cui sopra in Python? Ho altre dipendenze Python quindi nessun altro linguaggio potrebbe funzionare. GrazieCome estrarre il foglio da * .xlsm e salvarlo come * .csv in Python?
risposta
xlrd dovrebbe funzionare bene anche sui file xlsm. Ho testato il codice con un file xlsm casuale e ha funzionato perfettamente.
import csv
import xlrd
workbook = xlrd.open_workbook('test.xlsx')
for sheet in workbook.sheets():
with open('{}.csv'.format(sheet.name), 'wb') as f:
writer = csv.writer(f)
writer.writerows(sheet.row_values(row) for row in range(sheet.nrows))
Se hai codifica problemi, prova il codice qui sotto:
import csv
import xlrd
workbook = xlrd.open_workbook('test.xlsm')
for sheet in workbook.sheets():
if sheet.name == "Sheet_name_from_xlsm_file":
with open('{}.csv'.format(sheet.name), 'wb') as f:
writer = csv.writer(f)
for row in range(sheet.nrows):
out = []
for cell in sheet.row_values(row):
try:
out.append(cell.encode('utf8'))
except:
out.append(cell)
writer.writerow(out)
Se questo non funziona, dovresti caricare il tuo file di dati se possibile. –
Grazie per il frammento! Viene visualizzato questo errore: writer.writerows (sheet.val_values (riga) per riga nell'intervallo (sheet.nrows)) UnicodeEncodeError: il codec 'ascii' non può codificare il carattere u '\ xb5' nella posizione 0: ordinale non compreso nel range (128) C'è un modo per specificare la codifica qui? Siamo spiacenti, non è possibile caricare il file qui. – iPirate
@iPirate Penso che sia necessario codificare le stringhe con utf8 o qualcosa di simile. Prova cp1252 se non funziona. Ho aggiornato la mia risposta. –
- 1. Come ottenere l'allegato csv dall'e-mail e salvarlo
- 2. Come posso estrarre un file da una risorsa incorporata e salvarlo sul disco?
- 3. Come estrarre il testo da un file PDF in Python?
- 4. Come esportare più fogli di lavoro in formato CSV (senza salvare il foglio di lavoro corrente)
- 5. Excel: macro per esportare il foglio di lavoro come file CSV senza uscire dal foglio Excel corrente
- 6. Python 2.7.1: Come aprire, modificare e chiudere un file CSV
- 7. Come estrarre gli URL da una pagina HTML in Python
- 8. Python CSV legge il file e seleziona le colonne e scrive nel nuovo file CSV
- 9. come estrarre da dispatch.json.JsObject
- 10. Come estrarre epoca da LocalDate e LocalDateTime?
- 11. Estrarre a livello di codice dati da un foglio di calcolo Excel
- 12. Come estrarre e rimuovere il nome dello schema da NSURL?
- 13. Script per app Google: come faccio a copiare il foglio di calcolo e salvarlo in una cartella particolare?
- 14. Come estrarre il tipo da un campo?
- 15. estratto riquadro di delimitazione e salvarlo come immagine
- 16. Salvare un file * .xlsm come * .xlsx e sopprimere il pop-up
- 17. Come estrarre il valore da javax.naming.directory.Attribute
- 18. PHPExcel clone .xlsm con macro
- 19. Come posso leggere il file CSV caricato senza salvarlo sul server?
- 20. Salva foglio di lavoro Excel come .csv con R?
- 21. Come estrarre i dati .gpx con python
- 22. Creare kml da csv in Python
- 23. Come estrarre le diapositive da un video usando python
- 24. Python - Come estrarre gli ultimi x elementi da un elenco
- 25. Scarica foglio di lavoro Google non pubblicato come CSV
- 26. Come posso estrarre i campi da un file CSV in Perl?
- 27. Come salvare il file csv delimitato da punto e virgola usando vba?
- 28. Come estrarre l'anno da un oggetto datetime Python?
- 29. Ordinamento CSV in Python
- 30. Come scrivere i dati nel file csv in colonne e righe da un elenco in python?
Per quanto mi ricordo, tutti gli ultimi formati di Microsoft Office XML erano confezionati in contenitori di Zip. Quindi probabilmente potresti dare un'occhiata alle fonti di file .xlsm, chiarire la sua struttura XML e quindi estrarre i campi richiesti. – user3159253