重新openpyxl.worksheet  class:Worksheet里的append方法

最近在处理数据库数据并写入excel,使用的模块是openpyxl

Workbook Worksheet

Workbook:创建一个excel对象

Worksheet:创建excel的sheet

Worksheet里有个方法是append,这个很好,可以写入可迭代数据,就不用一个个单元格写入了

def append(self, iterable):

但是我有个需求:就是必须对excel字体格式处理,我再一行行遍历设置字体难免有点麻烦

看到源代码:

cell = Cell(self, row=row_idx, col_idx=col_idx, value=content)

我在源代码里面设置cell.font不就好了吗

于是改变源代码,新加了cell.font = Font(name=u"微软雅黑",size=10)
非常开心:代码生效了,保存生成的excel的字体按照我们预想的发生
后面又陷入了沉思:
总不能写了个工具,发布的时候把openpyxl模块 Worksheet.py也跟着发布吧,是不是很麻烦,也不能总py2exe打包成exe供别人使用。
于是灵光一现:代码重写Worksheet
重写的过程有点曲折,但最后经过一步步调试,还是被解决了。
得了个心得,验证了一句话:实践是检验真理的唯一标准
你去做了,就掌握了面向对象编程里的重写思想了,所以面向对象语言的受欢迎程度不言而喻
下面我们呈上重写代码:
from openpyxl.worksheet import Worksheetclass SubWorksheet(Worksheet):def __init__(self,parent, title=None):Worksheet.__init__(self,parent, title)def append(self, iterable,font=None):row_idx = self._current_row + 1if (isinstance(iterable, (list, tuple, range))or isgenerator(iterable)):for col_idx, content in enumerate(iterable, 1):if isinstance(content, Cell):# compatible with write-only modecell = contencell.parent = selfcell.col_idx = col_idxcell.row = row_idxif font:cell.font = fontelse:cell = Cell(self, row=row_idx, col_idx=col_idx, value=content)if font:cell.font = fontself._cells[(row_idx, col_idx)] = cellelif isinstance(iterable, dict):for col_idx, content in iteritems(iterable):if isinstance(col_idx, basestring):col_idx = column_index_from_string(col_idx)cell = Cell(self, row=row_idx, col_idx=col_idx, value=content)self._cells[(row_idx, col_idx)] = cellelse:self._invalid_row(iterable)self._current_row = row_idx
看到了什么区别了吗? def append(self, iterable,font=None): 方法里多了个对象font字体
def makeExcel(data,filename):wb = Workbook()from utils.subworksheet import SubWorksheetws = SubWorksheet(wb,title="Build_Data")wb._add_sheet(ws, index=0)for element in data:ws.append(element,Font(name=u"微软雅黑",size=10))wb.save(filename)
好了去检验下效果吧

openpyxl,重写Worksheet相关推荐

  1. python读取excel单元格填充色rgb_Python openpyxl读取单元格字体颜色过程解析

    Python openpyxl读取单元格字体颜色过程解析 问题 我试图打印some_cell.font.color.rgb并得到各种结果. 对于一些人,我得到了我想要的东西(比如" FF00 ...

  2. Python解析xlsx文件库(xlrd与openpyxl)详细对比

    序言 之前项目的脚本一直在用xlrd解析xlsx文件,后来出了点问题,以为是xlrd版本过时,就用openpyxl重写一下,写完之后发现问题并不是出在xlrd本身,后来就用这两个库同时解析,相当于互相 ...

  3. Python: 读写Excel(openpyxl / win32com.client)

    项目周报汇报的时候要做数据汇总,总是要从不同的excel文件中去获取数据最后汇总到一个excel表里面,所以决定用python直接写个自动化脚本来自动执行. 用python来读写excel,目前找了2 ...

  4. 说说如何使用 openpyxl 为 Excel 设置行高或者列宽

    openpyxl 的 Worksheet 对象拥有 row_dimensions 和 column_dimensions 属性,可分别用于控制行高和列宽. import openpyxl wb=ope ...

  5. Python网络数据采集知识点

    网络数据采集知识点总结希望对大家有用 爬虫的合法性探讨 法不禁止即为许可 robots协议 隐匿身份 高匿商业代理 TOR(洋葱路由) 爬虫的分类 通用爬虫 定向爬虫 爬虫程序的一般步骤 URL -& ...

  6. python中的max_row_Openpyxl max_row和max_column错误地报告了一个较大的figu

    我的查询是处理作为Im开发的解析脚本的一部分的函数.我试图编写一个python函数来查找与excel中匹配值对应的列号.excel是用openpyxl动态创建的,它有第一行(来自第三列)标题,每个标题 ...

  7. 用Python在Excel里画出蒙娜丽莎

    之前看到过很多头条,说哪国某人坚持了多少年自学使用excel画画,效果十分惊艳. 对于他们的耐心我十分敬佩. 但是作为一个程序员,自然也得挑战一下自己. 这种需求,我们十分钟就可以完成! . mona ...

  8. 程序员如何 10 分钟用 Python 画出蒙娜丽莎?

    之前看到过很多头条,说哪国某人坚持了多少年自学使用excel画画,效果十分惊艳.对于他们的耐心我十分敬佩. 但是作为一个程序员,自然也得挑战一下自己. 这种需求,我们十分钟就可以完成! 基本思路 ! ...

  9. python字典的键设置条件格式_openpyxl条件格式设置数字格式

    我试图以条件格式设置数字格式.我已经找到了如何设置字体,边框和填充颜色,但我无法设置数字格式.我公司目前拥有的代码是:openpyxl条件格式设置数字格式 from openpyxl import l ...

  10. Python双目相机计算三维坐标(使用opencv自带图片)

    前言:虽然计算三维坐标已经很多大佬研究过了,但是网上能用的好少啊.原理不多解释了,直接上程序. 1.导入库 import numpy as np import cv2 包括矩阵处理和图像处理的两个基本 ...

最新文章

  1. 智慧城市:解构成渝城市群一体化
  2. Vue_VueResource
  3. java使用教程——组件及事件处理——常用组件与布局
  4. Qt学习笔记-SQL的基本操作【创建、查询、添加、索引等】
  5. python做股票系统_GitHub - yeyaowen/stock: stock,股票系统。使用python进行开发。
  6. python安装sqlalchemy python2_Python SQLAlchemy --2
  7. 基于VHDL语言的多人表决器的设计
  8. 自动避障算法c语言,基于单片机的自动避障小车设计与实现报告.doc
  9. 安装用友U8的常见错误
  10. 详谈SSD硬盘接口: SATA、mSATA 、PCIe、M.2和U.2
  11. 设计模式-工厂模式(学习)
  12. tomcat+nginx配置htpps
  13. Neo4j 图数据库高级应用系列 / 服务器扩展指南 APOC 8.8 - 图生成 完全图
  14. 09_Python3.6+selenium2.53.6自动化测试_通过class_name定位百度输入框
  15. PADS9.5使用笔记(常用功能和疑难问题)
  16. 在Spydroid-ipcamera基础上做推流的实现之二
  17. VaR如何计算?VaR计算方法
  18. 杯具,万达电商又换CEO
  19. 从Flash中导出透明背景的GIF动画
  20. C语言图片加密与解密..

热门文章

  1. 组态王 6.55 启停plc_PLC编程进料PLC编程项目
  2. My View on Life Value 人生价值何在?
  3. 红米手机开启---开发者选项方法
  4. 今生,只想做一个平凡的人
  5. 简单典型二阶系统_【文献选译】二阶弹性波动方程PML的简单实现
  6. 树莓派 Pico ADC温度测量
  7. 卡尔曼滤波原在温度测量中的应用
  8. 黑桃符号java怎么打印出来_java入门基础(四)
  9. 百度EasyDL实体抽取和关系抽取
  10. BD NetDisk不限速下载,某度网盘不限速下载,跑满带宽,网盘下载器,网盘高速下载器,不限速网盘下载,AntNetDiskDownloader