python的openpyxl模块合并单元格,浅谈openpyxl库,遇到批量合并单元格的问题
我就废话不多说了,大家还是直接看代码吧~
from openpyxl import Workbook
from openpyxl import load_workbook
from openpyxl.styles import NamedStyle, Border, Side, Alignment
# 创建一个工作薄
wb = Workbook()
# 创建一个工作表(注意是一个属性)
table = wb.active
# excel创建的工作表名默认为sheet1,一下代码实现了给新创建的工作表创建一个新的名字
table.title = 'test'
# 合并C1 D1
# 法一
# table.merge_cells('C1:D1')
# table.cell(row = 1,column = 3,value = 'pdf/mp3链接')
# 法二
table.merge_cells(start_row=1, start_column=3, end_row=1, end_column=4)
table.cell(1, 3).value = '合并2个单元格'
# 法一不适合批量添加
for i in range(2,10):
table.merge_cells(start_row=i, start_column=3, end_row=i, end_column=4)
效果如下:
补充:python操作excel --openpyxl里的关于merge的一些bug
开始新的工作不久,工作内容依然是数据相关
新工作数据输出模式是用excel,大概是每天导出新数据并用excel体现,同时要保留之前的数据。
我来之前,同时写好了许多sql,然后就从Navicat里面复制粘贴到excel中。
我目前在做关于这个的自动化脚本,使用的库是openpyxl,下面说说关于这个的几个小bug。
1- 在 2.5.x版本中,当你合并单元格的时候
使用的是merge_cells(),然后,当你合并多个单元格的时候,之前合并的单元格的边框会消失。这个问题我再官网找到解决方案,稍有复杂,但是只要你更新到2.6.x版本,这个问题自动解决。
2- 2.6x版本中,使用unmerge_cell() 解开合并单元格后,除了左上角可以写入,其他被解开的单元格无法写入,会提示说 ‘read_only'这类的。
例如:你的 ("A1:D4") 是合并的,当你使用 work_sheet.unmerge_cell("A1:D4")后,会解开合并,
然后你却只能给A1赋值,不能给A2,A3,A4,B1....赋值,提示如下
我尝试改用delete直接删除,然而这种方法只能删除内容,格式还是被锁定的。
找了很久没有结局方法,只好慢慢看源码。
大概是说,接触合并后,代码默认其他单元格应该是空值且不能被赋新值,也许是因为觉得解开只有要再合并??(不明白设疑初衷)
处理方法如下,大概思想是格式化该单元格的属性,即取消的read_only属性。
大概在源码的中workshet.py文件的大约620做添加如下代码:(# autho...开始,大家自己对照源码添加吧~~~)
........................
if cr.coord not in self.merged_cells:
raise ValueError("Cell range {0} is not merged".format(cr.coord))
self.merged_cells.remove(cr)
# Deletes the MergedCellRange.
# del self._merged_cell_range[cr.bounds]
# autho : watson
# aim : deal with the bug about umerger
# describe : Add the following five lines of code to format the attribute.
min_col, min_row, max_col, max_row = cr.bounds
for row in range(min_row, max_row + 1):
for col in range(min_col, max_col + 1):
if col == min_col and row == min_row:
continue
del self._cells[(row, col)]
def append(self, iterable):
"""Appends a group of values at the bottom of the current sheet.
........................
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
python的openpyxl模块合并单元格,浅谈openpyxl库,遇到批量合并单元格的问题相关推荐
- python数学库的使用方法_浅谈numpy库的常用基本操作方法
NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推.在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量.比如说,二维数组相当于是一个一维数 ...
- 浅谈解析库XPath,bs4和pyquery
<浅谈解析库XPath,bs4和pyquery> 作者:墨非墨菲非菲 前几天在CSDN看到一篇帖子,题目是"如何让自己像打王者一样发了疯,拼了命,石乐志的学习".这里面 ...
- python 读excel字符型 数值_浅谈python 读excel数值为浮点型的问题
浅谈python 读excel数值为浮点型的问题 如下所示: #读入no data = xlrd.open_workbook("no.xlsx") #打开excel table = ...
- python除数为0报错_浅谈pandas dataframe对除数是零的处理
如下例 data2['营业成本率'] = data2['营业成本本年累计']/data2['营业收入本年累计']*100 但有营业收入本年累计为0的情况, 则营业成本率为inf,即无穷大,而需要在表中 ...
- python老是报参数未定义_浅谈Python程序的错误:变量未定义
Python程序的错误种类 Python程序的错误分两种.一种是语法错误(syntax error).这种错误是语句的书写不符合Python语言的语法规定.第二种是逻辑错误(logic error). ...
- python类中方法的执行顺序-浅谈Python的方法解析顺序(MRO)
方法解析顺序, Method Resolution Order 从一段代码开始 考虑下面的情况: class A(object): def foo(self): print('A.foo()') cl ...
- python的re2和re区别_浅谈Python中re.match()和re.search()的使用及区别
1.re.match()fvk免费资源网 re.match()的概念是从头匹配一个符合规则的字符串,从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None.fvk免费资源网 包含的参数如下: ...
- python打开文件夹中的tiff_浅谈python下tiff图像的读取和保存方法
对比测试 scipy.misc和 PIL.Image和 libtiff.TIFF三个库 输入: 1. (读取矩阵) 读入uint8.uint16.float32的lena.tif 2. (生成矩阵) ...
- 【汇智学堂】-python小游戏(太空阻击之一-浅谈游戏开发)
第五章:太空阻击 本章将通过一个太空射击游戏实例来介绍python中pygame的基本使用方法,包括创建游戏体,键盘.鼠标操作,基本的物理碰撞.UI显示和逻辑处理等. 5.1浅谈游戏开发 游戏开发是一 ...
最新文章
- Python量化库大全
- 界面代码ios不响应presentModalViewController界面的处理
- 总结MYSQL的优化
- Linux 最常用命令:简单易学,但能解决 95% 以上的问题
- html定义页脚有什么用,HTML5中footer标签的用法你知道吗?,HTML5中的footer标签是什么意思?...
- 2022年道路运输企业安全生产管理人员考试及道路运输企业安全生产管理人员新版试题
- 可行性分析报告 模板
- 高斯-马尔科夫过程的充要条件(正态随机过程又是马尔科夫过程的充要条件)
- Qt2D游戏开发引擎QtGameEngine使用入门9——在游戏界面中添加gui按钮文本等控件
- iPhone铃声制作软件iRingg for Mac
- 我的家用户外监控摄像头的选购和安装记录
- Python工作好找吗?没有工作经验和学历怎么找?【就业必看】
- 小学生学习Python的步骤和学习周期之我见
- CVE-2010-0188漏洞点定位
- 2021牛客寒假算法基础集训营1
- Hbaseshell scan多种过滤操作
- micropython定制_树莓派开发实战 第2版 高清pdf
- 专用解决内存不能read问题的软件
- 大数据 Hadoop 生态体系介绍
- 阿里云轻量应用服务器如何快速搭建WordPress个人博客?