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

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")

相关内容

热门资讯

王治郅入选2026国际篮联名人... 北京时间12月21日,国际篮联官方公布了2026年国际篮联名人堂名单,中国男篮名宿王治郅入选,他也成...
元旦春节飞海口机票预订量飙升   2025年12月18日,海南全岛封关运作正式启动,这一标志性举措,为海口旅游市场注入新的发展动能...
怀揣本科文凭,他们为何重读高职...   在“人往高处走”的主流观念下,许多本科生仍沿着考研、考公或追逐高薪的常规路径前行。然而,当下也有...
深耕科技创新 助力广州文化产业... 中经记者 赵毅 广州报道12月19日上午,由中共广州市委宣传部、广州市文化广电旅游局指导,广州市社会...
成都个别“私人影院”存陪侍服务... 为持续净化社会治安环境,成都市始终保持对娱乐服务场所涉黄等违法犯罪活动的高压严打态势。今年以来,成都...