使用Python将数据从MS Access复制到MS Excel
我这个周末大部分时间都在琢磨怎么把MS Access表里的数据转到Excel表里,用的是Python。我找到了一些可能有用的模块(比如execsql和python-excel),但因为我对这些模块了解不多,而且我还需要用一些特定的模块来创建数据(我是一名GIS专业人士,所以我用ArcGIS的arcpy模块在Access表里创建空间数据)。
我不太确定最好的方法是什么。我只需要把Access里的4列数据复制到Excel里,然后再格式化一下Excel。我已经解决了格式化的部分。
我应该:
用游标遍历每一行,然后把这些行加载到Excel里吗?
把Access里的列直接复制到Excel里吗?
还是把整个Access表导出到Excel的一个工作表里呢?
谢谢大家的建议。
5 个回答
可能最好的办法是不要用Python来做这个任务。
你可以在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
我现在使用XLRD这个模块来从Excel表格中读取数据,然后用插入游标来创建一个要素类,这个方法效果很好。
你可以使用搜索游标来遍历要素类中的记录,然后用XLWT这个Python模块(http://www.python-excel.org/)把这些记录写入Excel中。