Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python将数据从MS Access复制到MS Excel_Python_Excel_Ms Access - Fatal编程技术网

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

使用Python将数据从MS Access复制到MS Excel,python,excel,ms-access,Python,Excel,Ms Access,这个周末的大部分时间我都在试图找出使用Python将数据从MS Access表传输到Excel表的最佳方法。我发现了一些可能有用的模块(execsql、python-excel),但由于我的知识有限,以及创建某些数据所需的模块(我是GIS专业人员,因此我正在使用ArcGIS-arcpy模块将空间数据创建到一个访问表中) 我不确定最好的方法应该是什么。我需要做的就是将access中的4列数据复制到excel,然后格式化excel。我已经解决了格式化部分 我应该: 使用光标遍历行并以某种方式将行加载

这个周末的大部分时间我都在试图找出使用Python将数据从MS Access表传输到Excel表的最佳方法。我发现了一些可能有用的模块(execsql、python-excel),但由于我的知识有限,以及创建某些数据所需的模块(我是GIS专业人员,因此我正在使用ArcGIS-arcpy模块将空间数据创建到一个访问表中)

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

我应该:

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


感谢您的建议。

您可以使用ADO从Access读取数据(以下是和的连接字符串),然后使用Excel的方法(假设您通过COM使用Excel)将整个记录集复制到Excel。

您可以使用ADO从Access读取数据(以下是和的连接字符串)然后使用Excel的方法(假设您通过COM使用Excel)将整个记录集复制到Excel中。

最好的方法可能是不使用Python执行此任务

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

最好的方法可能是不使用Python执行此任务

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

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

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

我目前使用XLRD模块从Excel电子表格中吸取数据,并插入光标来创建要素类,这很有效


您应该能够使用搜索光标遍历要素类记录,然后使用XLWT Python模块()将记录写入Excel

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


您应该能够使用搜索光标遍历要素类记录,然后使用XLWT Python模块()将记录写入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

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

嘿,米奇。感谢您抽出时间回答。我被巨蟒铐住了。我正在创建一个ArcGIS工具,它只能使用python创建。它们的文件称为要素类,要素类使用Access作为基础数据库。我的最终用户只能使用我在excel中创建的数据。这对python来说可能太雄心勃勃了?嘿,米奇。感谢您抽出时间回答。我被巨蟒铐住了。我正在创建一个ArcGIS工具,它只能使用python创建。它们的文件称为要素类,要素类使用Access作为基础数据库。我的最终用户只能使用我在excel中创建的数据。这对python来说可能太雄心勃勃了?嘿,丹尼尔,这就是我最终所做的。谢谢你的指导。我会用我的密码回答我的问题。嘿,丹尼尔,这就是我最终所做的。谢谢你的指导。我会用密码回答我的问题。嘿,谢谢你,伊丹。我找到了一个解决方案,但我查看了你的链接,它们可能对我未来的一些想法很有用。嘿,谢谢你,伊丹。我找到了一个解决方案,但我查看了你的链接,它们可能对我将来的一些想法很有用。你每行保存一次文件,而不是在最后保存一次。取消登入
book.save(…)
行。如果您每行保存一次文件,而不是只在最后保存一次,那么这个问题可能会更有用。取消登入
book.save(…)
行。这个问题可能会更有用