使用Python将数据从MS Access复制到MS Excel

2 投票
5 回答
5860 浏览
提问于 2025-04-17 03:33

我这个周末大部分时间都在琢磨怎么把MS Access表里的数据转到Excel表里,用的是Python。我找到了一些可能有用的模块(比如execsql和python-excel),但因为我对这些模块了解不多,而且我还需要用一些特定的模块来创建数据(我是一名GIS专业人士,所以我用ArcGIS的arcpy模块在Access表里创建空间数据)。

我不太确定最好的方法是什么。我只需要把Access里的4列数据复制到Excel里,然后再格式化一下Excel。我已经解决了格式化的部分。

我应该:

用游标遍历每一行,然后把这些行加载到Excel里吗?

把Access里的列直接复制到Excel里吗?

还是把整个Access表导出到Excel的一个工作表里呢?

谢谢大家的建议。

5 个回答

1

可能最好的办法是不要用Python来做这个任务。

你可以在Excel里使用宏录制功能,来记录如何把外部数据导入到Excel中。首先启动宏录制,然后点击 数据 -> 获取外部数据 -> 新建数据库查询,接着输入你的条件。数据导入完成后,你可以查看生成的代码,把里面固定的搜索条件换成变量。

3

我最终找到了一种方法来解决这个问题。我想把我的代码分享出来,以便那些遇到相同情况的人可以参考。我使用了一些地理信息系统(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
1

我现在使用XLRD这个模块来从Excel表格中读取数据,然后用插入游标来创建一个要素类,这个方法效果很好。

你可以使用搜索游标来遍历要素类中的记录,然后用XLWT这个Python模块(http://www.python-excel.org/)把这些记录写入Excel中。

撰写回答