2016-09-27 3 views
0

Ich versuche, eine .DBF-Datei in .csv mit Python3 zu konvertieren. Ich versuche, die DBF-Bibliothek (https://pypi.python.org/pypi/dbf)BadDataError beim Konvertieren von .DBF in .csv

import dbf 

def dbf_to_csv(dbf_file_name, csv_file_name): 
    dbf_file = dbf.Table(dbf_file_name, ignore_memos=True) 
    dbf_file.open() 
    dbf.export(dbf_file, filename = csv_file_name, format='csv', header=True) 

Die DBF-Datei kann ich bin mit in Excel geöffnet werden und scheint in Ordnung zu sein. Allerdings, wenn ich das obige Verfahren betreibe ich einen Fehler auf dem dbf.export Linie oben erhalten:

dbf.ver_33.BadDataError: record data is not the correct length (should be 1442, not 1438) 

Die DBF-Datei öffnet sich in Excel in Ordnung, aber ich brauche, um diese Umwandlung zu automatisieren. Was sollte ich anders machen, um diese Methode zum Erstellen einer PDF aus einer DBF-Datei zu bekommen?

+0

Ich würde mich freuen, die Datei anzusehen, wenn Sie in der Lage sind, es zu senden. Sie finden meine E-Mail Adresse im 'dbf' Paket. –

Antwort

0

Wenn die Datei korrekt in Excel öffnen, dann empfehle ich Ihnen Excel für Sie csv Format der Konvertierung zu tun wie folgt:

import win32com.client as win32 

excel = win32.gencache.EnsureDispatch('Excel.Application') 

wb = excel.Workbooks.Open(r"input.dbf") 
excel.DisplayAlerts = False 
wb.DoNotPromptForConvert = True 
wb.CheckCompatibility = False 
wb.SaveAs(r"output.csv", FileFormat=6, ConflictResolution=2) 
excel.Application.Quit() 

Vergessen Sie nicht die vollen Pfade zu den benötigten Dateien hinzuzufügen. Hinweis: FileFormat=6 weist Excel an, die Datei im Format CSV zu speichern.

die Arbeitsmappe als PDF zu exportieren, könnten Sie verwenden:

wb.ExportAsFixedFormat(0, r"output.pdf") 

Wenn Sie nicht bereits win32com installiert haben, sollten Sie in der Lage sein, die folgenden verwenden: Diese Lösung

pip install pypiwin32 

ist Nur für Windows-Installationen geeignet.

+0

Diese Bibliothek wird nicht für mich installiert. Ich erhalte diesen Fehler: Drucken "Erstellen pywin32", pywin32_version ^ SyntaxError: Fehlende Klammern im Aufruf von "Drucken" Wird dies nur auf Windows-Maschinen installiert? Ich brauche wirklich etwas plattformübergreifendes. – analyticsPierce

+0

Leider ist 'win32' nur Windows, sorry. –

+0

Ich habe dies auf einem Windows-Rechner und bekomme den folgenden Fehler, irgendwelche Ideen ?: Datei ". \ Shared \ utilities.py", Zeile 58, in dbf_to_csv wb.SaveAs (csv_file_name, FileFormat = 6, ConflictResolution = 2) Datei "C: \ cygwin \ tmp \ gen_py \ 3.5 \ 00020813-0000-0000-C000-000000000046x0x1x8 \ _Workbook.py", Zeile 259, in SaveAs , Lokal) pywingtypes.com_error: (-2147352567, 'Ausnahme aufgetreten . ', (0,' Microsoft Excel ',' SaveAs Methode der Arbeitsmappenklasse fehlgeschlagen ',' xlmain11.chm ', 0, -2146827284), Keine) – analyticsPierce