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

如何从Excel文件指定工作表提取指定表格并转换为CSV格式

提取Excel指定工作表中的单个表格并转为CSV格式

需求说明:
有一个Excel文件,需要从中提取指定工作表,仅将该工作表中的Overall表格转换为CSV格式。该工作表下方还有其他表格,且无法修改输入格式。目前已实现提取指定工作表的功能,但不知道如何提取单个表格,现有代码如下:

import pandas as pd
from pyxlsb import open_workbook as open_xlsb

# first handle xls case 
xls = pd.ExcelFile('sample.xlsx') # workbook has 2 sheets: sheet 1 and sheet 2
df1 = pd.read_excel(xls, 'Sheet1')
df2 = pd.read_excel(xls, 'Sheet2')
# print(df1.head())
# print(df2.head())

示例表格结构:

overallabcd
row 11262
row 22524
row 35736
row 47837
table 2lmno
row 11355887
row 22323358
row 32556
row 414546782

解决方案

核心思路是通过定位表头行和后续的空行分割出目标表格,具体代码如下:

import pandas as pd

# 读取指定工作表,不预设表头,保留所有原始行数据
xls = pd.ExcelFile('sample.xlsx')
full_sheet = pd.read_excel(xls, 'Sheet1', header=None)

# 定位Overall表格的表头行(第一列值为"overall"的行)
header_idx = full_sheet[full_sheet[0] == 'overall'].index[0]

# 找到表头行之后的第一个全空行,作为目标表格的结束标记
empty_rows = full_sheet[(full_sheet.isnull().all(axis=1)) & (full_sheet.index > header_idx)].index
end_idx = empty_rows[0] - 1 if empty_rows.size > 0 else full_sheet.index[-1]

# 提取目标表格区域
overall_table = full_sheet.loc[header_idx:end_idx]
# 将表头行设置为列名
overall_table.columns = overall_table.iloc[0]
# 移除重复的表头行
overall_table = overall_table[1:]
# 重置索引
overall_table.reset_index(drop=True, inplace=True)

# 保存为CSV文件
overall_table.to_csv('overall_table.csv', index=False)

代码说明

  1. 读取整个工作表的所有行,不指定表头,避免自动识别表头导致的错误;
  2. 通过第一列的"overall"值定位目标表格的起始行;
  3. 找到表头行之后的第一个全空行,以此确定目标表格的结束位置;
  4. 提取中间区域后,将起始行设置为列名,移除重复行并重置索引;
  5. 最后将处理好的表格保存为CSV文件。

内容的提问来源于stack exchange,提问作者hussain sagar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:30:51