我一直花费周末的大部分时间试图找出使用Python将数据从MS Access表传输到Excel表的最佳方法。我发现了一些可能有用的模块(execsql,python-excel),但是由于我的知识有限以及我必须用来创建某些数据的模块(我是一名GIS专业人员,所以我正在创建空间数据将ArcGIS arcpy模块转换为访问表)
我不确定最佳方法应该是什么。我需要做的就是从访问excel中复制4列数据,然后格式化excel。我解决了格式化部分。
我应该:
使用游标迭代行并以某种方式将行加载到excel中? 将列从访问权限复制到Excel? 将整个访问表导出到Excel中的工作表中?
感谢您的任何建议。
答案 0 :(得分:2)
我最终找到了一种方法来做到这一点。我以为我会为可能遇到同样情况的人发布我的代码。我使用了一些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 :(得分:1)
您可以使用ADO从Access中读取数据(以下是Access 2007+(.accdb files) 和Access 2003-( .mdb files)的连接字符串),而不是使用Excel {{ 3}}方法(假设您通过COM使用Excel)将整个记录集复制到Excel中。
答案 2 :(得分:1)
最好的方法可能是不使用Python来完成这项任务。
您可以使用Excel中的宏录制器记录将外部数据导入Excel。
启动宏录制器后,单击Data -> Get External Data -> New Database Query
并输入您的条件。数据导入完成后,您可以查看生成的代码,并用变量替换硬编码的搜索条件。
答案 3 :(得分:1)
另一个想法 - 格式化部分有多重要?如果您可以放弃格式化,则可以将数据输出为CSV格式。 Excel可以打开CSV文件,CSV格式比Excel格式简单得多 - 它非常简单,您可以直接从Python中编写文本文件,这样您就不需要乱用Office COM对象。
答案 4 :(得分:1)
我目前使用XLRD模块从Excel电子表格和插入光标中获取数据,以创建一个非常好用的要素类。
您应该能够使用搜索光标迭代要素类记录,然后使用XLWT Python模块(http://www.python-excel.org/)将记录写入Excel。