簡體   English   中英

使用Python將數據從MS Access復制到MS Excel

[英]Copy data from MS Access to MS Excel using Python

我一直在周末的大部分時間里嘗試找出使用Python將數據從MS Access表傳輸到Excel工作表的最佳方法。 我發現了一些可能有用的模塊(execsql,python-excel),但是由於我的知識有限,我必須使用這些模塊來創建某些數據(我是GIS專業人士,所以我正在使用以下方法創建空間數據將ArcGIS arcpy模塊插入訪問表)

我不確定最好的方法是什么。 我需要做的就是從訪問Excel復制4列數據,然后格式化Excel。 我已經解決了格式化部分。

我是不是該:

使用游標遍歷行,並以某種方式將行加載到excel中? 將列從訪問權限復制到Excel? 將整個訪問表導出到Excel中的工作表中?

感謝您的任何建議。

我最終找到了一種方法。 我以為我會將代碼發布給可能遇到相同情況的任何人。 我使用了一些GIS文件,但如果不這樣做,則可以將變量設置為目錄路徑,而不是使用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

您可以使用ADO來讀取訪問數據(這里是連接字符串訪問2007+(.ACCDB文件) 訪問2003-( .MDB文件) ),比使用Excel的Range.CopyFromRecordset方法(假設你使用的是Excel通過COM)將整個記錄集復制到Excel。

最好的方法可能是不要將Python用於此任務。

您可以在Excel中使用宏記錄器將外部數據的導入記錄到Excel中。 啟動宏記錄器后,單擊Data -> Get External Data -> New Database Query然后輸入您的條件。 數據導入完成后,您可以查看生成的代碼,並用變量替換硬編碼的搜索條件。

另一個想法-格式化部分有多重要? 如果可以放棄格式,則可以將數據輸出為CSV。 Excel可以打開CSV文件,並且CSV格式比Excel格式簡單得多-它是如此簡單,您可以像文本文件一樣直接從Python編寫它,因此您無需弄亂Office COM對象。

我目前使用XLRD模塊從Excel電子表格和插入光標中吸取數據來創建要素類,效果很好。

您應該能夠使用搜索光標來遍歷要素類記錄,然后使用XLWT Python模塊( http://www.python-excel.org/ )將記錄寫入Excel。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM