Python 错误:[42S02] [Microsoft][ODBC Microsoft Access 驱动程序] Microsoft Access 数据库引擎找不到对象“Sheet1$”

问题描述 投票:0回答:1

由于某种原因,我无法找到 Excel Sheet1。 这是我的代码:

filename = 'ALC_2022068_06282024-testing copy.xlsx'




sql = r"""INSERT INTO tblALC_test ([dateofnotice], [provnbr])
          SELECT e.[dateofnotice], e.[provnbr]
          FROM [Excel 12.0 Xml;HDR=Yes;Database={xl}].[Sheet1$] AS e;
       """.format(xl=filename)


conn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};' +
                  r'DBQ=F:\Kevin\CPD_Night\ALC_Testing.accdb;')    
cursor = conn.cursor()

cursor.execute(sql)
cursor.commit()

cursor.close()
conn.close()

代码似乎找到了 MS Access DB 并找到了 MS Excel 文件,但找不到选项卡:Sheet1。

这是我应该添加到行中的语法还是其他功能吗?

python excel ms-access
1个回答
0
投票

您在 SQL 语句中格式化 Excel 文件的连接字符串的方式似乎可能存在问题。在 sql 变量中,您使用 .format() 插入文件名,但没有正确转义大括号。这是代码的更新版本,具有正确的转义和格式: 在此输入图片描述

对 sql 变量使用 f 字符串 (f""" ... """) 来直接插入文件名。 使用三重大括号 ({{{filename}}}) 对数据库参数中的大括号进行转义,以确保大括号在 SQL 字符串中得到正确解释。 确保 Excel 文件中的工作表名称确实是“Sheet1”,而不是其他名称(例如带有空格的“Sheet1 ”或“Sheet1$”)。如果sheet名称不同,请在SQL语句中进行相应更新。

© www.soinside.com 2019 - 2024. All rights reserved.