You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas+SQLite3访问Excel指定工作表并统计数量

问题解决:用Pandas+SQLite处理Excel工作表的正确方式

你的代码问题出在sqlite3不能直接连接.xlsx文件——sqlite3.connect()是用来连接SQLite数据库(.db格式)的,你之前的操作其实是创建了一个名为data.xlsx的空SQLite数据库,所以查不到任何表数据。

下面分两种场景解决你的需求:

一、直接用Pandas实现(最简便,无需SQLite)

如果只是要统计工作表数量、读取指定工作表,直接用Pandas的ExcelFile即可:

import pandas as pd

# 加载Excel文件
excel_handler = pd.ExcelFile("data.xlsx")

# 1. 统计工作表数量
total_sheets = len(excel_handler.sheet_names)
print(f"工作表总数:{total_sheets}")
print("所有工作表名称:", excel_handler.sheet_names)

# 2. 访问指定工作表
# 按名称读取
target_df = excel_handler.parse("目标工作表名称")
# 或者按索引读取(比如第1个工作表,索引从0开始)
# target_df = excel_handler.parse(excel_handler.sheet_names[0])

# 查看数据
print(target_df.head())

二、结合SQLite3实现(先导入Excel数据到SQLite)

如果一定要用SQLite操作,需要先把Excel的每个工作表导入到SQLite数据库中,再进行查询:

import pandas as pd
import sqlite3

# 1. 读取Excel文件
excel_handler = pd.ExcelFile("data.xlsx")
sheet_list = excel_handler.sheet_names

# 2. 连接SQLite数据库(会自动创建data.db文件)
conn = sqlite3.connect("data.db")

# 3. 将所有工作表导入为SQLite的表
for sheet_name in sheet_list:
    df = excel_handler.parse(sheet_name)
    # 工作表名作为SQLite表名,if_exists="replace"表示覆盖已有表
    df.to_sql(sheet_name, conn, index=False, if_exists="replace")

# 4. 查询所有表(对应原Excel的工作表)
sheet_info = pd.read_sql("SELECT name FROM sqlite_master WHERE type='table';", conn)
print("导入后的工作表(SQLite表):")
print(sheet_info)
print(f"工作表总数:{len(sheet_info)}")

# 5. 访问指定工作表(通过SQL查询)
target_data = pd.read_sql("SELECT * FROM 目标工作表名称;", conn)
print(target_data.head())

# 关闭数据库连接
conn.close()

内容的提问来源于stack exchange,提问作者Temp4 Watch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 11:12:47