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

相关内容

热门资讯

容大感光:泰国基地规划进度、对... 投资者提问:东南亚 PCB 产能持续扩张,日系厂商在当地占据主导地位。公司泰国生产基地规划的油墨与干...
国家电网、南方电网达成我国首笔... (来源:电力国际汇epintl)按照国家发展改革委、国家能源局部署,6月18日,国家电网、南方电网达...
以军:打死扎扎和萨法迪!内塔尼... 据新华社,以色列国防军22日发表声明说,20日在加沙地带打死了两名巴勒斯坦伊斯兰抵抗运动(哈马斯)军...
浙江金华乡村“慢生活”吸引城市... 来源:中国新闻网 风铃祈福、夜间音乐会、农耕摸鱼体验......端午假期,在浙江金华经济技术开发区,...
画面公布:日本舰机滋扰挑衅,辽... 辽宁舰编队专业稳妥处置应对日本舰机滋扰挑衅6月22日,海军辽宁舰编队圆满完成远海实战化训练,安全顺利...