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易方达(159328... 7月9日,易方达中证家电龙头ETF(159328)收盘跌0.21%,成交额76.17万元。家电ETF...
央企ESGETF(560810... 7月9日,融通中证诚通央企ESGETF(560810)收盘跌0.20%,成交额27.70万元。央企E...
上证50ETF东财(53005... 7月9日,上证50ETF东财(530050)收盘跌0.09%,成交额289.42万元。上证50ETF...
因为是你才喜欢杰克会长怎么死的 因为是你才喜欢杰克会长怎么死的爱情中没有对与错,也没有先来后到,有的只是爱或不爱,不要等到错过了再去...
公用事业ETF(560190)... 7月9日,鹏华中证全指公用事业ETF(560190)收盘跌0.30%,成交额130.33万元。公用事...
海螺新材涨0.00%,成交额3... 7月9日,海螺新材涨0.00%,成交额3367.08万元,换手率1.51%,总市值27.35亿元。异...
科创AIETF(588790)... 7月9日,博时科创板人工智能ETF(588790)收盘跌1.40%,成交额1.72亿元。科创AIET...
小本冷门创业好项目 小本冷门创... 小本冷门创业好项目,虽然是不起眼的小本生意,但也有爆发的可能性很大。在当前社会里,很多人都想创业一展...
黄金股ETF基金(159315... 7月9日,黄金股ETF基金(159315)收盘跌1.88%,成交额604.05万元。黄金股ETF基金...
致富创业好项目 致富创业好项目... 延伸阅读网上卖特色内衣研究生美女创业致富671人创业人物夏琳,25岁,湖南师范大学研究生。1月在淘宝...