全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

PythonExcel文件操作_openpyxl与pandas结合实例【教程】

最实用的组合是openpyxl负责样式、公式、合并单元格等排版,pandas专注数据清洗与分析;读取需data_only=True获取公式结果,写入须单元格级赋值以保留格式,新增sheet用openpyxl创建并逐行写入。

openpyxl 读写 Excel 格式细节(如样式、公式、合并单元格),再用 pandas 做数据清洗和分析,是最实用的组合方案。关键在于分工明确:pandas 负责“算”,openpyxl 负责“排版”。

读取带格式的 Excel 并转为 DataFrame

openpyxl 默认不解析公式值,只读原始公式字符串;若要读计算结果,需启用 data_only=True。同时注意:它不自动跳过空行或识别表头,需手动指定范围。

  • load_workbook(filename, data_only=True) 打开文件,避免公式显示为 =SUM(A1:A10) 而不是实际数值
  • 通过 ws.iter_rows(min_row=2, max_row=100, values_only=True) 按行提取数据,values_only=True 返回纯值(忽略样式)
  • 把结果转成列表,再传给 pd.DataFrame(),并用第一行作列名:df = pd.DataFrame(data[1:], columns=data[0])

用 pandas 处理完数据,写回原工作表(保留格式)

直接用 df.to_excel() 会清空原有样式、公式和批注。正确做法是:用 openpyxl 定位目标区域,逐单元格赋值,其他格式不动。

  • 先用 load_workbook(filename, keep_vba=True, read_only=False) 打开(keep_vba 可选,若含宏)
  • 定位目标工作表:ws = wb['Sheet1'],再确定起始单元格,如 start_cell = ws['C5']
  • 遍历 DataFrame:for r_idx, row in enumerate(df.values, 1):,再嵌套列循环:for c_idx, value in enumerate(row, 1):,写入 ws.cell(row=start_cell.row + r_idx, column=start_cell.column + c_idx - 1, value=value)

在已有 Excel 中插入新 sheet 并写入 pandas 表格

适合生成报表时追加分析页,不影响原表结构和样式。

  • wb.create_sheet(title='Analysis_2025') 新建 sheet
  • 获取新 sheet 对象后,用 dataframe_to_rows(df, index=False, header=True) 将 DataFrame 转为可迭代行数据
  • 逐行写入:for r_idx, row in enumerate(rows, 1):,再 for c_idx, value in enumerate(row, 1):,最后 ws.cell(r_idx, c_idx, value)
  • 可顺手调整列宽:for col in ['A', 'B', 'C']: ws.column_dimensions[col].width = 12

处理合并单元格与空单元格的兼容写法

openpyxl 对合并单元格敏感——读取时只有左上角单元格有值,其余为 None;写入时若覆盖已合并区域,会自动取消合并。需提前检查。

  • 读取前检查合并区域:for merged_cell in ws.merged_cells.ranges:,记录范围,后续逻辑跳过非首单元格
  • 写入前解除合并(谨慎):ws.unmerge_cells('A1:C1'),写完再重新合并(如有必要)
  • 更稳妥的做法:用 ws.cell(...).value 写值后,对对应区域调用 ws.merge_cells('A1:C1')

不复杂但容易忽略。核心就三点:读用 data_only,写用单元格级赋值,增删 sheet 用 openpyxl 管理结构,pandas 只管数据流。


# excel  # python  # 数据清洗  # pandas  # for  # 字符串  # 循环  # 对象  # column  # 单元格  # 跳过  # 如有  # 已有  # 遍历  # 不动  # 可选  # 三点  # 再用  # 它不 


相关文章: 怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  建站上市公司网站建设方案与SEO优化服务定制指南  已有域名能否直接搭建网站?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  如何快速使用云服务器搭建个人网站?  如何通过万网虚拟主机快速搭建网站?  宝塔新建站点为何无法访问?如何排查?  临沂网站制作企业,临沂第三中学官方网站?  如何在云主机上快速搭建多站点网站?  ,有什么在线背英语单词效率比较高的网站?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  常州自助建站工具推荐:低成本搭建与模板选择技巧  视频网站制作教程,怎么样制作优酷网的小视频?  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  婚礼视频制作网站,学习*后期制作的网站有哪些?  Swift中循环语句中的转移语句 break 和 continue  浅谈Javascript中的Label语句  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  如何将凡科建站内容保存为本地文件?  如何高效搭建专业期货交易平台网站?  建站之星下载版如何获取与安装?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  如何快速查询网站的真实建站时间?  建站之星如何实现网站加密操作?  网站好制作吗知乎,网站开发好学吗?有什么技巧?  如何在阿里云完成域名注册与建站?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  如何在IIS服务器上快速部署高效网站?  如何快速搭建高效WAP手机网站?  建站主机解析:虚拟主机配置与服务器选择指南  微信小程序 input输入框控件详解及实例(多种示例)  如何高效生成建站之星成品网站源码?  如何用5美元大硬盘VPS安全高效搭建个人网站?  如何确认建站备案号应放置的具体位置?  微信h5制作网站有哪些,免费微信H5页面制作工具?  手机网站制作与建设方案,手机网站如何建设?  家庭服务器如何搭建个人网站?  网站网页制作专业公司,怎样制作自己的网页?  网站制作网站,深圳做网站哪家比较好?  清除minerd进程的简单方法  如何在云主机上快速搭建网站?  如何通过西部建站助手安装IIS服务器?  无锡营销型网站制作公司,无锡网选车牌流程? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。