2016-09-27 4 views
0

Я пытаюсь преобразовать файл .DBF в .csv, используя Python3. Я пытаюсь использовать библиотеку DBF (https://pypi.python.org/pypi/dbf)BadDataError при преобразовании .DBF в .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) 

Файл DBF Я использую можно открыть в Excel и, как представляется, будет хорошо. Однако, когда я бегу выше метод, который я получаю сообщение об ошибке на dbf.export строке выше:

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

Файл DBF открывает штраф в Excel, однако, мне нужно автоматизировать это преобразование. Что я должен делать по-другому, чтобы получить этот метод для создания PDF-файла из файла .DBF?

+0

Буду рад взглянуть на файл, если вы сможете его отправить. Вы можете найти мой адрес электронной почты в пакете 'dbf'. –

ответ

0

Если файл правильно открытие в Excel, то я предлагаю вам использовать Excel, чтобы сделать преобразование для вас формата csv следующим образом:

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

Не забудьте добавить полные пути к необходимым файлам. Примечание. FileFormat=6 сообщает Excel, чтобы сохранить файл в формате CSV.

Чтобы экспортировать книгу в виде PDF, вы можете использовать:

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

Если вы уже не имеете win32com установлен, вы должны быть в состоянии использовать следующее:

pip install pypiwin32 

Это решение является подходит только для установок Windows.

+0

Эта библиотека не устанавливается для меня. Я получаю эту ошибку: напечатайте «Building pywin32», pywin32_version ^ SyntaxError: Отсутствует круглые скобки в вызове 'print' Это устанавливается только на машинах Windows? Мне действительно нужна что-то перекрестная платформа. – analyticsPierce

+0

К сожалению, 'win32' - только Windows, извините. –

+0

Я получил это на машине с Windows и получаю следующую ошибку: любые идеи ?: Файл «. \ Shared \ utilities.py», строка 58, в dbf_to_csv wb.SaveAs (csv_file_name, FileFormat = 6, ConflictResolution = 2) Файл «C: \ cygwin \ tmp \ gen_py \ 3.5 \ 00020813-0000-0000-C000-000000000046x0x1x8 \ _Workbook.py", строка 259, в SaveAs , локальный) pywintypes.com_error: (-2147352567, 'Исключение произошло . ', (0,' Microsoft Excel ',' SaveAs метод Workbook class failed ',' xlmain11.chm ', 0, -2146827284), None) – analyticsPierce

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

  • Нет связанных вопросов^_^