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

相关内容

热门资讯

汉马科技(600375.SH)... 格隆汇8月21日丨汉马科技(600375.SH)发布2026年中报显示,公司上半年实现营业收入38....
广西三江:硕果盈枝富农家 近日,在广西三江侗族自治县和平乡和平村江脑屯的罗汉果种植基地里,翠绿的果实挂满藤架,村民抢抓农时,积...
《大公文汇报》报道中国华电主办... 本网讯8月19日,《大公文汇报》刊发报道《30余港青走进贵州 增强祖国认知》,聚焦由中国华电集团有限...
【品质立信 服务致远】中辰股份... (来源:中辰股份 300933)近期,中辰股份陆续收到来自南方电网、国网山西电力及多个重点工程项目客...
纽威股份:上半年归母净利润7.... 纽威股份8月21日披露半年报,公司上半年实现营业收入38.97亿元,同比增长14.47%;归属于上市...