Скопируйте данные из MS Access в MS Excel, используя Python - PullRequest
1 голос
/ 03 октября 2011

Большую часть выходных я проводил, пытаясь выяснить, как лучше всего перенести данные из таблицы MS Access в таблицу Excel с помощью Python.Я нашел несколько модулей, которые могут помочь (execsql, python-excel), но с моими ограниченными знаниями и модулями, которые я должен использовать для создания определенных данных (я специалист по ГИС, поэтому я создаю пространственные данные, используямодуль ArcGIS arcpy в таблицу доступа)

Я не уверен, каким должен быть наилучший подход.Все, что мне нужно сделать, это скопировать 4 столбца данных из доступа в Excel, а затем отформатировать Excel.Я решил часть форматирования.

Должен ли я:

Перебирать строки с помощью курсора и каким-то образом загружать строки в Excel?Скопировать столбцы из доступа в Excel?Экспортировать всю таблицу доступа в лист Excel?

Спасибо за любые предложения.

Ответы [ 5 ]

3 голосов
/ 04 октября 2011

В конце концов я нашел способ сделать это. Я думал, что выложу свой код для тех, кто может столкнуться с такой же ситуацией. Я использую некоторые ГИС-файлы, но если вы этого не сделаете, вы можете установить переменную в путь к каталогу вместо использования env.workspace и использовать поиск курсора вместо функции arcpy.SearchCursor, тогда это выполнимо.

import arcpy, xlwt
from arcpy import env
from xlwt import Workbook

# Set the workspace. Location of feature class or dbf file. I used a dbf file.
env.workspace = "C:\data"

# Use row object to get and set field values
cur = arcpy.SearchCursor("SMU_Areas.dbf")

# Set up workbook and sheet
book = Workbook()
sheet1 = book.add_sheet('Sheet 1')
book.add_sheet('Sheet 2')

# Set counter
rowx = 0

# Loop through rows in dbf file.
for row in cur:
    rowx += 1
    # Write each row to the sheet from the workbook. Set column index in sheet for each column in .dbf
    sheet1.write(rowx,0,row.ID)
    sheet1.write(rowx,1,row.SHAPE_Area/10000)
    book.save('C:\data\MyExcel.xls')

del cur, row
1 голос
/ 04 октября 2011

В настоящее время я использую модуль XLRD для всасывания данных из электронной таблицы Excel и курсора вставки для создания класса объектов, который работает очень хорошо.

Вы должны иметь возможность использовать курсор поиска для итерации записей класса объектов, а затем использовать модуль Python XLWT (http://www.python -excel.org / ) для записи записей вExcel.

1 голос
/ 03 октября 2011

Лучшим подходом может быть не использовать Python для этой задачи.

Вы можете использовать макрос-рекордер в Excel для записи импорта внешних данных в Excel.После запуска макро-рекордера нажмите Data -> Get External Data -> New Database Query и введите ваши критерии.После завершения импорта данных вы можете посмотреть созданный код и заменить жестко закодированные критерии поиска переменными.

1 голос
/ 03 октября 2011

Еще одна идея - насколько важна часть форматирования?Если вы можете отказаться от форматирования, вы можете вывести свои данные в формате CSV.Excel может открывать файлы CSV, а формат CSV намного проще, чем формат Excel - он настолько прост, что вы можете написать его непосредственно из Python, как текстовый файл, и таким образом вам не нужно будет связываться с объектами Office COM.

1 голос
/ 03 октября 2011

Вы можете использовать ADO для чтения данных из Access (Вот строки подключения для Access 2007 + ( .accdb файлы) и Access 2003 - ( .mdbфайлы) ) и затем использовать метод Range.CopyFromRecordset в Excel (при условии, что вы используете Excel через COM) для копирования всего набора записей в Excel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...