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

我一直在花费周末的更好的一部分,试图找出使用Python从MS Access表格传输数据到Excel表格的最佳方式。 我发现了一些可能有用的模块(execsql,python-excel),但是由于我有限的知识和我必须使用的模块来创build特定的数据(我是GIS专业人员,所以我使用空间数据创build将ArcGIS arcpy模块放入一个访问表中)

我不确定最好的方法应该是什么。 我所需要做的就是从访问excel中复制4列数据,然后格式化excel。 我已经解决了格式化部分。

我是不是该:

迭代使用游标的行,并以某种方式加载到Excel中的行? 将访问列复制到Excel? 将整个访问表导出到excel表格中?

感谢您的任何build议。

我目前使用XLRD模块从Excel电子表格和插入光标吸取数据以创build要素类,这非常有效。

您应该可以使用search光标遍历要素类logging,然后使用XLWT Python模块( http://www.python-excel.org/ )将logging写入Excel。

我最终find了一个方法来做到这一点。 我以为我会把我的代码发布给任何可能遇到相同情况的人。 我使用一些GIS文件,但是如果你不这样做,你可以设置一个variables到目录path,而不是使用env.workspace,而使用光标search而不是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从Access读取数据(以下是Access 2007+( . accdb 文件)和Access 2003-(. mdb 文件)的连接string),并使用Excel的Range.CopyFromRecordset方法(假设您使用的是Excel COM)将整个logging集复制到Excel中。

最好的方法可能是不使用Python来完成这个任务。

您可以在Excel中使用macroslogging器来logging外部数据导入Excel。 启动macroslogging器后,点击Data -> Get External Data -> New Database Query然后input您的条件。 数据导入完成后,您可以查看生成的代码,并用variablesreplace硬编码的search条件。

另一个想法 – 格式化部分有多重要? 如果你可以消除格式,你可以输出你的数据为CSV。 Excel可以打开CSV文件,并且CSV格式比Excel格式简单得多 – 它非常简单,可以直接从Python写入,就像文本文件一样,这样就不需要混淆Office COM对象。