Python修改Excel文件笔记
来源:互联网 发布:免费的主题软件 编辑:程序博客网 时间:2024/06/06 07:17
简介
平时会用到excel表格处理数据, 对于一些大量重复的机械的操作,可以用程序完成,这很符合python脚本语言的气质。 事实上,python提供了很多相关的模块, 看来很多人都偷过一样的懒, hiahia……
常见模块
1. xlrd、xlwt、xlutils
- xlrd只能读文件、xlwt只能新建文件、xlutils可以处理原文件(实际是在前两者之间建立管道, 讲xlrd打开的文件copy一份作为xlwt的输入和操作对象)
- 这三个模块只能处理.xls文件
2. openpyxl、 xlsxwriter、 pyExcelerator和win32com
- openpyxl :只能操作xlsx文件而不能操作xls文件, 但是可以处理原文件
- xlsxwriter: 只能操作xlsx文件而不能操作xls文件, 只能创建新文件
- pyExcelerator和win32com 暂时没做了解 (模块太多了…… ┑( ̄Д  ̄)┍)
常见问题笔记
我只用了xlrd、xlwt和xlutils, 所以暂时先记录相关的使用
一般操作
工作薄、sheet的新建\加载\保存, 单元格的读写, 这类文章很多, 不造轮子了:
http://blog.csdn.net/tianzhu123/article/details/7225809
https://xlwt.readthedocs.io/en/latest/api.html
http://xlutils.readthedocs.io/en/latest/index.html
注意:在修改原文件时,首先使用xlrd读取文件,此时要设置formatting_info=True not yet implemented ,确保打开原文件时保留原格式def __init__(self, excelFile): u""" 提供错题列的第一个cell的坐标(startRow+1 就是填写评论的列) :param startRow: 起始行号 :param startCol: 起始列号 """ self.filePath = excelFile self.rb = open_workbook(excelFile, formatting_info=True) # excel文件句柄 self.wb = copy(self.rb) # self.wr = self.wb.get_sheet(0) # excel文件中sheet句柄 pass
单元格格式相关操作
主要是借助xlwt.XFStyle(虽然是xlwt带有的格式配置,但是xlutils仍然同样使用
) , 下面贴出它的构造函数, 单元格格式也就是围绕这几个方面来设置的:class XFStyle(object): def __init__(self): self.num_format_str = 'General' self.font = Formatting.Font() self.alignment = Formatting.Alignment() self.borders = Formatting.Borders() self.pattern = Formatting.Pattern() self.protection = Formatting.Protection()
具体的细节追踪代码就可以了,这里简单解释下:
- font: 字体颜色、字体大小、单元格列宽、加粗、斜体、阴影、下划线、编码等等…
- alignment: 对齐方式(水平方向、 垂直方向、 旋转、 自动换行:wrap 等等)
- borders: 边框粗细、有无、颜色
- patterns: 单元格底色,上层颜色(back/fore color)
- protection: 是否锁单元格
简易的代码演示:
def setFont(self, fontName=u"宋体", fontHeight=11, align=xlwt.Alignment.HORZ_LEFT, color="black"): """ :param fontName: 字体,默认"宋体" :param fontHeight: 字号, 该参数的值等于字号*20 :param align: 字符位置,具体 :param color: 字符颜色 :return: """ style = xlwt.XFStyle() aligment = xlwt.Alignment() aligment.horz = align aligment.vert = xlwt.Alignment.VERT_CENTER aligment.wrap = xlwt.Alignment.WRAP_AT_RIGHT font = xlwt.Font() font.name = fontName font.colour_index = xlwt.Style.colour_map[color] font.height = fontHeight style.font = font style.alignment = aligment return style
详细的代码演示可以参考这里
单元格数值的类型的判断
判断Python输入是否为数字
设置str为字符串
if str.isdigit(): # 为True表示输入的所有字符都是数字,否则,不是全部为数字
str.isalnum() 所有字符都是数字或者字母
str.isalpha() 所有字符都是字母
str.isdigit() 所有字符都是数字
str.islower() 所有字符都是小写
str.isupper() 所有字符都是大写
str.istitle() 所有单词都是首字母大写,像标题
str.isspace() 所有字符都是空白字符、\t、\n、\r上述的主要是针对整型的数字,但是对于浮点数来说就不适用了,那么浮点数怎么判断呢,
try: f = float(str) exception ValueError: print("输入的不是数字!")
插入图片
xlwt 只能插入bmp格式图片,但是这类图片普遍比较大,一定要做的话xlsxwriter 可以解决,但是后者只能新建文件,不能修改原文件(可以先把原文件内容读出,再写入新建的文件中)# 图片格式转换成bmp path = os.path.abspath("满分.jpg") tmpImg = Image.open(path) # print tmpImg.mode tmpImg = tmpImg.convert("RGB") tmpImg.save(os.path.splitext(path)[0] + ".bmp")# 插入图片 try: self.wr.insert_bitmap("满分.bmp", 19, 3, 20, 20, 0.2, 0.2) except Exception as e: print e print traceback.format_exc() pass
其中,关于insert_bitmap()函数:
insert_bitmap(img, x, y, x1, y1, scale_x=0.8, scale_y=1)
img表示要插入的图像地址,
x表示行
y表示列
x1表示相对原来位置向下偏移的像素
y1表示相对原来位置向右偏移的像素
scale_x表示相对原图宽的比例
scale_y表示相对原图高的比例合并单元格写入
write_merge(x, x + h, y, w + y, string, sytle)
x表示行,y表示列,w表示跨列个数,h表示跨行个数,string表示要写入的单元格内容,style表示单元格样式。
注意,x,y,w,h,都是以0开始计算的。
拓展
poenpyxl: 处理xlsx的,可以修改原文件, 暂时没用到,回头用一用再表(^__^) 嘻嘻……
大家有兴趣的话可以先参考以下链接:
http://openpyxl.readthedocs.io/en/default/formatting.html
https://www.cnblogs.com/anpengapple/p/6399304.html?utm_source=itdadao&utm_medium=referral
- Python修改Excel文件笔记
- python 修改Excel文件
- Python修改Excel文件
- Python xlrd、xlwt、xlutils修改Excel文件
- Python xlrd、xlwt、xlutils修改Excel文件
- Python xlrd、xlwt、xlutils修改Excel文件
- python excel文件的读写修改保存
- Python笔记:使用pywin32处理excel文件
- Python学习笔记(27)-创建与修改excel文档
- Python xlrd、xlwt、xlutils读取、修改Excel文件
- <PY>Python修改excel
- Python学习笔记-Txt文件转Excel文件
- jxl 修改excel文件
- phpexcel 修改excel文件
- Python学习笔记 --- python实现修改json文件
- python对excel文件的操作学习笔记
- Python学习笔记 --- pandas将excel转化为csv文件
- Python读写并且修改Excel
- 这5步让我们职场的2018顺风顺水
- unittest的简单应用
- Tree ensemble算法中feature importance计算方法
- linux 中的sleep相关函数
- HDOJ 1047 Integer Inquiry(大数)
- Python修改Excel文件笔记
- jQuery之each的使用
- shell_sort
- VB.NET机房收费系统之正则表达式
- &&【逻辑 与 】
- Java反射机制在Spring IOC中的应用
- C++中的智能指针(1):shared_ptr 的介绍和用法
- springboot打包war,tomcat运行及常见问题
- 学习笔记--计算机的分类