Python 3.0 将 Excel 文件导入 Access 文件

Python 3.0 Import Excel file to Access File

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

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

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)

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

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

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

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 而不是附加到现有的 table:

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

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

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()