【问题标题】:Python 3.0 Import Excel file to Access FilePython 3.0 将 Excel 文件导入访问文件
【发布时间】:2019-11-20 17:40:46
【问题描述】:

我使用 Python 3 创建了一个 Excel (.xlsx) 文件。现在我想将此 Excel 文件转换为 Access (.accdb) 文件。我知道 Access 可以导入 Excel 文件,但我正在尝试使用 Python 来自动执行此操作。

Excel 文件中有 3 张工作表。我已经在 Excel 和 Access 之间建立了连接,但不确定如何在 Access 文件中插入工作表/值。非常感谢你的帮助!非常感谢!

writer=pd.ExcelWriter('ETABS.xlsx',engine='xlsxwriter')
pointcord.to_excel(writer, sheet_name='Sheet1')
jointreaction.to_excel(writer, sheet_name='Sheet2')
writer.save()

import pyodbc
pyodbc.drivers()

DBFile = r'C:\Users\nyeung\Documents\wsp.codingworkshop.python\ClassNotebooks\ETABS.accdb'
conn = pyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ='+DBFile)

exFile = r'C:\Users\nyeung\Documents\wsp.codingworkshop.python\ClassNotebooks\ETABS.xlsx'
conn1 = pyodbc.connect('DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ='+exFile,autocommit=True)
curs1 = conn1.cursor()
# the following returns list of tuples
excel_results = curs1.execute().fetchall()

curs.executemany("INSERT INTO ETABS values (?,?)", excel_results)
conn.commit()

for row in curs1.tables():
    print (row.table_name)

【问题讨论】:

    标签: python excel ms-access pyodbc


    【解决方案1】:

    考虑纯 SQL,因为 JET/ACE 引擎允许直接查询外部工作簿和数据库。您可以通过 MS Access 连接或 Excel 连接执行此操作,因为使用了相同的底层引擎。无需逐行游标追加。

    以下假设所有 Excel 工作表列与所有 Access 表列以相同的顺序一对一匹配。如果您在 Access 表中使用自动编号字段,请考虑在追加查询的 INSERT INTO 和 SELECT 子句中显式声明列。

    访问连接 (本地数据库表追加)

    DBFile = r'C:\Users\nyeung\Documents\wsp.codingworkshop.python\ClassNotebooks\ETABS.accdb'
    exFile = r'C:\Users\nyeung\Documents\wsp.codingworkshop.python\ClassNotebooks\ETABS.xlsx'
    
    conn = pyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ='+DBFile)
    
    # APPEND TO LOCAL TABLE
    sql = """INSERT INTO ETABS
             SELECT * FROM [Excel 12.0 Xml; HDR = Yes;Database={myfile}].[Sheet1$];
          """
    
    curs = conn1.cursor()
    curs.execute(sql.format(myfile = exFile))
    conn.commit()
    

    顺便说一句,您甚至可以运行 make-table query 而不是附加到现有表:

    SELECT * INTO myNewTable FROM [Excel 12.0 Xml; HDR=Yes; Database={myfile}].[Sheet1$]
    

    Excel 连接 (外部数据库表追加)

    DBFile = r'C:\Users\nyeung\Documents\wsp.codingworkshop.python\ClassNotebooks\ETABS.accdb'
    exFile = r'C:\Users\nyeung\Documents\wsp.codingworkshop.python\ClassNotebooks\ETABS.xlsx'
    
    conn = pyodbc.connect('DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ='+exFile)
    curs1 = conn1.cursor()
    
    # APPEND TO EXTERNAL TABLE
    sql = """INSERT INTO [{myfile}].[ETABS]
             SELECT * FROM [Sheet1$];
          """
    
    curs = conn.cursor()
    curs.execute(sql.format(myfile = DBFile))
    conn.commit()
    

    【讨论】:

      猜你喜欢
      • 2017-12-24
      • 2019-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      • 2013-07-27
      相关资源
      最近更新 更多