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 INTO
和 SELECT
子句中明确说明列。
访问连接(本地数据库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()
我已经使用 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 INTO
和 SELECT
子句中明确说明列。
访问连接(本地数据库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()