【问题标题】:Copy data from MS Access to MS Excel using Python使用 Python 将数据从 MS Access 复制到 MS Excel
【发布时间】:2011-10-03 00:23:41
【问题描述】:

周末的大部分时间我都在尝试找出使用 Python 将数据从 MS Access 表传输到 Excel 工作表的最佳方法。我找到了一些可能有帮助的模块(execsql、python-excel),但由于我的知识有限以及我必须用来创建某些数据的模块(我是一名 GIS 专业人士,所以我正在使用将 ArcGIS arcpy 模块放入访问表中)

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

我应该:

使用游标遍历行并以某种方式将行加载到 excel 中? 将列从访问复制到excel? 将整个访问表导出到excel中的工作表中?

感谢您的任何建议。

【问题讨论】:

    标签: python excel ms-access


    【解决方案1】:

    我最终找到了一种方法来做到这一点。我想我会为可能遇到相同情况的任何人发布我的代码。我使用了一些 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
    

    【讨论】:

    • 您每行保存一次文件,而不是最后保存一次。取消缩进 book.save(.....) 行。
    • 这个问题在GIS 上可能会更有用
    • 仅供参考,对于较新版本的 Python,您需要使用双斜杠。
    • @DARSIN 谢谢。您也可以只转换为原始字符串。
    【解决方案2】:

    我目前使用 XLRD 模块从 Excel 电子表格中提取数据,并使用插入光标创建要素类,效果非常好。

    您应该能够使用搜索光标遍历要素类记录,然后使用 XLWT Python 模块 (http://www.python-excel.org/) 将记录写入 Excel。

    【讨论】:

    • 嘿丹尼尔,这就是我最终所做的。感谢您的指导。我会用我的代码回答我的问题。
    【解决方案3】:

    您可以使用 ADO 从 Access 读取数据(这里是 Access 2007+(.accdb files)Access 2003-(.mdb files) 的连接字符串),而不是使用 Excel 的 Range.CopyFromRecordset 方法(假设您通过 COM 使用 Excel)复制整个记录集到 Excel 中。

    【讨论】:

    • 嘿,谢谢伊丹。我找到了解决方案,但我查看了您的链接,它们可能对我未来的一些想法有用。
    【解决方案4】:

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

    您可以使用 Excel 中的宏记录器将外部数据的导入记录到 Excel 中。 启动宏记录器后,单击Data -> Get External Data -> New Database Query 并输入您的条件。数据导入完成后,您可以查看生成的代码并将硬编码的搜索条件替换为变量。

    【讨论】:

    • 嘿米奇。感谢您花时间回答。我有点被蟒蛇戴上手铐。我正在创建一个 ArcGIS 工具,它只能使用 python 创建。它们的文件称为要素类,它使用 Access 作为基础数据库。我的最终用户只能使用我在 excel 中创建的数据。这对 python 来说可能过于雄心勃勃了?
    【解决方案5】:

    另一个想法 - 格式化部分有多重要?如果您可以放弃格式,则可以将数据输出为 CSV。 Excel 可以打开 CSV 文件,而且 CSV 格式比 Excel 格式简单得多 - 它非常简单,您可以像文本文件一样直接从 Python 编写它,这样您就不需要弄乱 Office COM 对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 2019-07-09
      相关资源
      最近更新 更多