我花了大半个周末的时间,试图找出使用Python将数据从MS Access表转移到Excel工作表的最佳方法。我找到了一些可能有帮助的模块(execsql,python-excel),但由于我的知识有限,而且我必须使用这些模块来创建某些数据(我是一名地理信息系统专业人员,所以我正在使用ArcGIS arcpy模块在access表中创建空间数据)。
我不确定最好的方法应该是什么。我需要做的就是将4列数据从access复制到excel中,然后格式化excel。我已经解决了格式化部分。
我应该:
使用游标遍历行并以某种方式将行加载到excel中?是否将列从access复制到excel?是否将整个access表导出到excel中的工作表中?
谢谢你的建议。
发布于 2011-10-04 12:13:02
目前,我使用XLRD模块从Excel电子表格中导入数据,并使用插入光标创建要素类,这非常有效。
您应该能够使用搜索光标遍历要素类记录,然后使用XLWT Python模块(http://www.python-excel.org/)将记录写入Excel。
发布于 2011-10-05 02:37:51
我最终找到了一种方法来做到这一点。我想我应该把我的代码发布给任何可能遇到同样情况的人。我使用一些地理信息系统文件,但如果您不使用,您可以设置一个变量的目录路径,而不是使用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发布于 2011-10-03 08:34:13
您可以使用ADO从Access读取数据(这里是Access 2007+(和.mdb files)的连接字符串),然后使用Excel的Range.CopyFromRecordset方法(假设您通过COM使用Excel )将整个记录集复制到Excel中。
https://stackoverflow.com/questions/7630142
复制相似问题