出现这种错误一般都是在用方法:ws.merge_cells() 合并单元格后,直接给单元格赋值导致的。

经过我的不断尝试,发现在合并单元格的初始位置赋值就不会出现问题。
比如以下代码:

from openpyxl import Workbook
wb = Workbook()
ws = wb.activews.merge_cells('A2:A99')
ws['A2'] = 'TEST'      # 给合并开头的的格子赋值,成功
wb.save("D:test.xlsx")

可正常运行,但如果将ws['A2'] = 'TEST'改为ws['A3'] = 'TEST' 便会出现异常:

AttributeError: ‘MergedCell’ object attribute ‘value’ is read-only

为啥会这样?以下是个人的推测:
阅读merge_cells源码

    def merge_cells(self, range_string=None, start_row=None, start_column=None, end_row=None, end_column=None):""" Set merge on a cell range.  Range is a cell range (e.g. A1:E1) """cr = CellRange(range_string=range_string, min_col=start_column, min_row=start_row,max_col=end_column, max_row=end_row)self.merged_cells.add(cr)self._clean_merge_range(cr)

最后调用了_clean_merge_range(cr)
查看源码:

    def _clean_merge_range(self, mcr):"""Remove all but the top left-cell from a range of merged cellsand recreate the lost border information.Borders are then applied"""if not isinstance(mcr, MergedCellRange):mcr = MergedCellRange(self, mcr.coord)cells = mcr.cellsnext(cells) # skip first cellfor row, col in cells:self._cells[row, col] = MergedCell(self, row, col)mcr.format()

其中的注释有一句:
Remove all but the top left-cell from a range of merged cells
从一系列合并的单元格中删除除左上单元格外的所有单元格

and recreate the lost border information.
并且重新创建丢失的边框信息
Borders are then applied

丢失的边框应用到实际
也就是说,python合并单元格的过程是先删除除开左上单元格外的单元格,接下去删除下面所有的单元格并且重建建立边框。
即除开左上的单元格可以访问之外,被删除的那些已经无法进行读写操作了。

python合并单元格出现:‘MergedCell‘ object attribute ‘value‘ is read-only 如何处理相关推荐

  1. python html网页合并单元格,python合并单元格解决办法

    python合并单元格 我要在excle中我要合并(0,0),(1,0)这两个单元格应该怎么写? 下面的写法不对吗? ws.write_merge(0, 1, 0, 0, u"序号" ...

  2. Python记录(1)-Python合并单元格

    因为工作经常遭遇繁重的重复工作,不想将时间花在没有价值的加班上,开始接触Python,很遗憾只能通过网络,书籍等途径自己学习,虽然Python很多人都说很简单,但是对于我这种程序小白来说依然没那么轻松 ...

  3. python合并单元格居中_Python基于xlrd模块处理合并单元格

    目的: python能使用xlrd模块实现对Excel数据的读取,且按照想要的输出形式. 总体思路: (1)要想实现对Excel数据的读取,需要用到第三方应用,直接应用. (2)实际操作时候和我们实际 ...

  4. python合并单元格处理_Python基于xlrd模块处理合并单元格

    目的: python能使用xlrd模块实现对Excel数据的读取,且按照想要的输出形式. 总体思路: (1)要想实现对Excel数据的读取,需要用到第三方应用,直接应用. (2)实际操作时候和我们实际 ...

  5. python合并单元格 索引_如何在matplotlib选项卡中合并单元格

    我用matplotlib创建了一个表,我想合并一些单元格.索引中具有相同字符串的单元格将合并为一个单元格.在 问题被标记为重复,但链接无法回答我的问题#tbl_handler is an instan ...

  6. python合并单元格 索引_python笔记:纵向合并表格

    工作中我们常常遇到多个格式相同的表格面要合并成一个表格,比如将2019年的数据与2020年的数据合并在一起来进行分析.平时EXCEL时我们通常直接复制粘贴,但有时因表格内容过大,直接粘贴效率低,且当字 ...

  7. python openpyxl load_workbook报AttributeError: 'MergedCell' object attribute 'hyperlink' is read-only

    这个问题真的是困扰,我的openpyxl版本是2.6.4 找了很多办法,最有用的是让把版本回复到2.5.14  (但是恢复了之后可能会出现样式错乱) 解决: 根据错误信息,我们去找到这个包的这一块代码 ...

  8. java创建excel(不用设置样式,支持xlsx、xls格式, 不支持合并单元格)

    推荐:java 读取excel(支持xlsx.xls格式, 支持合并单元格) java写excel 实现效果 实现思路 基本概念 依赖 对外提供的方法 内部方法 代码实现 测试代码 ExcelWrit ...

  9. 浏览器 excel本地预览,支持合并单元格预览

    效果图 说明:支持合并单元格预览 1.index.html <!DOCTYPE html> <html lang="en"> <head>< ...

  10. python合并word单元格_python之DataFrame实现excel合并单元格_python

    这篇文章主要为大家详细介绍了python之DataFrame实现excel合并单元格,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 在工作中经常遇到需要将数据输出到excel,且需要对其中一些单元 ...

最新文章

  1. POJ2796 Feel Good(单调栈)
  2. SpringBoot跨域
  3. php如何实现用户报警,php封装实现钉钉机器人报警接口的示例代码
  4. Struts2请求参数合法性校验机制
  5. SpringMVC:后台将List转为Json,传值到页面
  6. download WM6.5.3 SDK
  7. (转) mysqldumpslow使用说明总结
  8. php的simplexml
  9. 【movable-area、movable-view】 可移动区域组件说明
  10. 论模式在领域驱动设计中的重要性
  11. wenbao与最短路(Floyd)
  12. 分式求二阶导数_一道与三角零点距离有关的导数问题
  13. 5大网站汇总,搞定新颖的计算机专业毕业设计网站汇总
  14. 【博客427】通过redfish协议操控服务器
  15. nvidia驱动和CUDA的安装
  16. 如何在移动硬盘上安装Linux系统?WIN10 + Ubuntu 18.0.4(LTS)
  17. 微信公众号-网页内实现微信支付
  18. IT人物TOP100英雄人物榜
  19. 大学生学习编程很难吗?怎么样才能学好编程?
  20. 点与直线位置关系,叉乘

热门文章

  1. 一元三次方程c语言程序,求解一元三次方程近似解的几种算法(C语言)
  2. android微信支付指纹支付密码错误,安卓微信支付怎么设置指纹锁
  3. 第三届人工智能、网络与信息技术国际学术会议(AINIT 2022)
  4. 如何注册海外邮箱?如何进行邮箱注册163,这些技巧交给你
  5. 判断中心对称图形C语言
  6. 工业镜头、相机的结构、参数解释及选型指南
  7. 个人 OKR 案例,帮助你变得更好
  8. 打印机如何取消打印任务
  9. Lightbox滚轮缩放功能
  10. 贴片发光二极管/LED灯正负极判断