pd dataframe 读取处理 有合并单元格的excel方式
创始人
2024-05-30 03:44:53
0

from pathlib import Path
import openpyxl

拆分所有的合并单元格,并赋予合并之前的值。

由于openpyxl并没有提供拆分并填充的方法,所以使用该方法进行完成

def unmerge_and_fill_cells(worksheet):
all_merged_cell_ranges = list(
worksheet.merged_cells.ranges
)

for merged_cell_range in all_merged_cell_ranges:merged_cell = merged_cell_range.start_cellworksheet.unmerge_cells(range_string=merged_cell_range.coord)for row_index, col_index in merged_cell_range.cells:cell = worksheet.cell(row=row_index, column=col_index)cell.value = merged_cell.value

读取原始xlsx文件,拆分并填充单元格,然后生成中间临时文件。

def unmerge_cell(filename):
wb = openpyxl.load_workbook(filename)
for sheet_name in wb.sheetnames:
sheet = wb[sheet_name]
unmerge_and_fill_cells(sheet)
filename = filename.replace(“.xls”, “_temp.xls”)
wb.save(filename)
wb.close()

# openpyxl保存之后,再用pandas读取会存在公式无法读取到的情况,使用下面方式就可以了
# 如果你的excel不涉及公式,可以删除下面内容
# 原理为:使用windows打开excel,然后另存为一下
# from win32com.client import Dispatch
# xlApp = Dispatch("Excel.Application")
# xlApp.Visible = False
# xlBook = xlApp.Workbooks.Open(str(Path(".").absolute() / filename))  # 这里必须填绝对路径
# xlBook.Save()
# xlBook.Close()return filename

if name == ‘main’:
unmerge_cell(r"bench.xlsx")

相关内容

热门资讯

电信ETF(159507)开盘... 6月19日,电信ETF(159507)开盘跌0.97%,报1.123元。电信ETF(159507)重...
健尔康6月18日获融资买入42... 6月18日,健尔康跌0.03%,成交额5791.37万元。两融数据显示,当日健尔康获融资买入额420...
中力股份6月18日获融资买入3... 6月18日,中力股份涨1.73%,成交额4.00亿元。两融数据显示,当日中力股份获融资买入额3917...
超研股份6月18日获融资买入4... 6月18日,超研股份跌1.37%,成交额6913.22万元。两融数据显示,当日超研股份获融资买入额4...
打通预警“最后一公里” 筑牢... 转自:中国水运网为应对沿海频发的恶劣天气对客渡运安全的影响,舟山海事局日前创新推出并全面推行客渡运企...
中国批准全球级粮商巨额并购案 6月16日,国家市场监督管理总局网站发布新闻公告称,附加限制性条件批准邦吉全球有限公司(下称“邦吉”...
ETF资金榜 | 信创ETF(...        2025年6月18日,信创ETF(159537.SZ)收涨0.18%,成交4600.0...
百甲科技6月18日获融资买入4... 6月18日,百甲科技涨0.44%,成交额2012.38万元。两融数据显示,当日百甲科技获融资买入额4...
森泰股份6月18日获融资买入2... 6月18日,森泰股份跌0.67%,成交额3475.00万元。两融数据显示,当日森泰股份获融资买入额2...
芯联集成6月18日获融资买入8... 6月18日,芯联集成涨0.64%,成交额1.78亿元。两融数据显示,当日芯联集成获融资买入额867....