Python学习随笔:使用xlwings设置和操作excel多行多列数据以及设置数据字体颜色填充色对齐方式的方法
☞ ░ 前往老猿Python博文目录 ░
在前面老猿的文章中,《Python学习随笔:使用xlwings读取和操作Excel文件》、《Python学习随笔:使用xlwings读取和操作Excel文件的数字需要注意的问题》、《第15.25节 PyQt(Python+Qt)入门学习:Model/View开发实战–使用QTableView展示Excel文件内容》、《第二十章、QTableView与QStandardItemModel开发实战:展示Excel文件内容》介绍了部分使用xlwings操作excel数据的方法,最近2天在使用xlwings对excel行列数据进行批量读写,发现了一些前面没介绍且有实用价值的内容,在此总结几点介绍一下。
一、关于整行整列数据读写的问题
在《Python学习随笔:使用xlwings读取和操作Excel文件》介绍了一次读写整行和整列的方法,整行数据写入时可以简单将读取的赋值语句交换一下等号左右两边的操作数据,但在写入整列数据时不能简单用该方式赋值,而是在列选择中加上“options(transpose=True)”的方式,且无需使用expand方法,否则还是操作的行数据,哪怕expand的参数为‘down’。具体请见如下:
import xlwings as excel
excelApp = excel.App(False, False)
excelFile = excelApp.books.add()
sheet = excelFile.sheets.add('test')
sheet.range(1, 1).expand('right').value = [1,2,3,4] #将第一行置为1,2,3,4
sheet.range(2, 1).expand('down').value = [11,12,13,14] #将第2行开始的第一列置为11,12,13,14
excelFile.save(r"c:\temp\csdn\test.xlsx")
excelFile.close()
excelApp.quit()
执行上述语句后,excel中的结果变成了:

将上述语句改为:
def test():
import xlwings as excel
excelApp = excel.App(False, False)
excelFile = excelApp.books.add()
sheet = excelFile.sheets.add('test')
sheet.range(1, 1).expand('right').value = [1,2,3,4] #将第一行置为1,2,3,4
sheet.range(2, 1).expand('down').options(transpose=True).value = [11,12,13,14] #将第2行开始的第一列置为11,12,13,14
excelFile.save(r"c:\temp\csdn\test.xlsx")
excelFile.close()
excelApp.quit()
上面语句也可以将:sheet.range(2, 1).expand('down').options(transpose=True).value = [11,12,13,14]
替换为:sheet.range(2, 1).options(transpose=True).value = [11,12,13,14]
效果相同,执行后excel内容截图:

二、多行多列数据读写的问题
如果在读取excel数据读取多列数据时,如果不知道读取的结果是1列还是多列,则在此需要进行特殊处理,这是因为读取一列数据时返回的是一个一维的列表,但读取超过2列数据时返回的是一个两维的列表,因此数据类型不同,可能会导致后续操作需要特别注意。对这种情况最好就在数据读取后判断是否二维列表还是一维列表,如果是一维列表,为了程序处理的统一性,可以转为二维列表。
下面就是一个判断返回值是否为二维列表的简单案例:
if not isinstance(urlReadInfoList[0],list): #是否是一维列表
urlReadInfoList=[[i]for i in urlReadInfoList] #转换成二维列表
写入可以按行列写入,但
三、一次性写入多行多列
使用如下语句可以一次写入多行多列数据:
def test():
import xlwings as excel
excelApp = excel.App(False, False)
excelFile = excelApp.books.add()
sheet = excelFile.sheets.add('test')
sheet.range(2, 2).expand('right').value = [[1,2,3,4] ,[11,12,13,14]]
#sheet.range(2, 1).options(transpose=True).value = #将第2行开始的第一列置为11,12,13,14
excelFile.save(r"c:\temp\csdn\test.xlsx")
excelFile.close()
excelApp.quit()
将上述语句的expand(‘right’)改为expand(‘down’)和不带expand效果相同,结果如下:

如果将上述语句改为:
def test():
import xlwings as excel
excelApp = excel.App(False, False)
excelFile = excelApp.books.add()
sheet = excelFile.sheets.add('test')
sheet.range(2, 2).options(transpose=True).value = [[1,2,3,4] ,[11,12,13,14]]
excelFile.save(r"c:\temp\csdn\test.xlsx")
excelFile.close()
excelApp.quit()
执行行数test,行和列的数据就会交换,变成如下结果:

四、设置字体颜色和填充色
设置字体颜色和填充色需要用到api和color等属性,参考如下语句:
def test():
import xlwings as excel
excelApp = excel.App(False, False)
excelFile = excelApp.books.add()
sheet = excelFile.sheets.add('test')
sheet.range(1, 1).options(transpose=True).value = [[1,2,3,4] ,[11,12,13,14]]
sheet.range(1, 1).expand('right').api.Font.Color = 0xffffff #设置字体为白色
sheet.range(1, 1).expand('right').color = (0, 0, 255) #设置填充色为蓝色
excelFile.save(r"c:\temp\csdn\test.xlsx")
excelFile.close()
excelApp.quit()
注意:
颜色的表示方法有三种,包括颜色索引号、RGB的16进制表示法以及RGB的三元组表示法,其中的颜色索引号请参考下面引用的博文。RGB的16进制表示法以及RGB的三元组表示法在数值的排序上有区别,三元组表示法是按RGB的顺序来设置颜色的如(0,0,255)表示蓝色,而16进制则是反序,如蓝色的值为0xFF0000。
五、设置对齐方式
对齐方式的设置使用数据单元的api.VerticalAlignment 属性,如下语句:sheet.range(1, 1).expand('right').api.VerticalAlignment = -4130,设置为数据自动换行。相关取值及含义参考如下语句的说明:
sheet.range(1, 1).expand('right').api.HorizontalAlignment = -4108
# -4108 水平居中。 -4131 靠左,-4152 靠右。
sheet.range(1, 1).expand('right').api.VerticalAlignment = -4130
# -4108 垂直居中(默认)。 -4160 靠上,-4107 靠下, -4130 自动换行对齐。
六、设置宽度和高度
宽度和高度通过数据单元的column_width和row_height属性进行调整,不过老猿测试确认列宽的单位是以字符为单位,行高的单位是以像素为单位:
def test():
import xlwings as excel
excelApp = excel.App(False, False)
excelFile = excelApp.books.add()
sheet = excelFile.sheets.add('test')
sheet.range(1, 1).options(transpose=True).value = [[1,2,3,4] ,[11,12,13,14]]
sheet.range(1, 1).expand('right').api.Font.Color = 0xffffff
sheet.range(1, 1).expand('right').color = (0, 0, 255)
sheet.range('A1').row_height = 20 #行高设置为20像素
sheet.range('A1').column_width = 2 #列宽设置为2个字符
excelFile.save(r"c:\temp\csdn\test.xlsx")
excelFile.close()
excelApp.quit()
有关更多的设置可以参考《python用 xlwings库对Excel进行 字体、边框设置、合并单元格, 版本转换等操作》的介绍。
跟老猿学Python、学5G!
☞ ░ 前往老猿Python博文目录 ░
Python学习随笔:使用xlwings设置和操作excel多行多列数据以及设置数据字体颜色填充色对齐方式的方法的更多相关文章
- python学习笔记(十):操作excel
一.python操作excel,python操作excel使用xlrd.xlwt和xlutils模块,xlrd模块是读取excel的,xlwt模块是写excel的,xlutils是用来修改excel的 ...
- 吴裕雄--天生自然python学习笔记:pandas模块用 dataframe.loc 通过行、列标题读取数据
用 df.va lue s 读取数据的前提是必须知道学生及科目的位置,非常麻烦 . 而 df.loc 可直接通过行.列标题读取数据,使用起来更为方便 . 使用 df.loc 的语法为: 行标题或列标题 ...
- Python学习系列(五)(文件操作及其字典)
Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件 在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...
- python学习9—文件基本操作与高级操作
python学习9—文件基本操作与高级操作 1. 文件基本操作 打开文件,获得文件句柄:f = open('filename',encoding='utf-8'),open会查询操作系统的编码方式,并 ...
- Latex中如何设置字体颜色(3种方式)
Latex中如何设置字体颜色(三种方式) 1.直接使用定义好的颜色 \usepackage{color} \textcolor{red/blue/green/black/white/cyan/ma ...
- Python学习随笔:使用xlwings读取和操作Execl文件
一.背景 有2种模块可以对Execl文件,一种是xlwt 方式,需要安装三个库文件 xlrd(读Excel)xlwt(写Excel)xlutils(修改Excel),也是网上介绍文章最多的一种方法,一 ...
- Python 学习随笔 - 1 - 基础数据类型、变量 及 基本运算
仅有的C语言的基础都是大学时学的: 准备赶潮流,开始学习Python. 随笔记录学习过程中,靠一点点C语言基础难以去理解的地方,以及区别于C语言的地方,做些笔记作为以后参考. Python 解释器直接 ...
- Python学习笔记:xlrd和xlwt(Excel读写)
xlrd模块 Python的三方库xlrd用于对excel文件进行读取,可以是“.xls”或“.xlsx”格式(旧版本可能不支持“.xlsx”). 下载安装:https://pypi.org/proj ...
- Python(xlrd、xlwt模块)操作Excel实例(一)
一.前言 关于Python的xlrd.xlwt模块的使用,推介另一位博客主的博文:https://www.cnblogs.com/zhoujie/p/python18.html 这篇里面有详细介绍这两 ...
随机推荐
- NS-3环境布置及安装
MMP的,入坑NS3了,LTE是什么鬼!!! ubantu安装NS3解决依赖环境 一堆安装包需要安装,试了N多次(CentOS没安装明白,转而ubantu).利用脚本进行按装. 貌似得先对本机软件进行 ...
- Python基础学习之常用模块
1. 模块 告诉解释器到哪里查找模块的位置:比如sys.path.append('C:/python') 导入模块时:其所在目录中除源代码文件外,还新建了一个名为__pycache__ 的子目录,这个 ...
- Cocos Creator与VS Code整合代码提示问题
Cocos Creator与VS Code整合开发配置 在Cocos Creator中依次点击下面框中的菜单 VS Code工作流 配置Cocos Creator的默认编辑器 Cocos Creato ...
- Visual Studio2013应用笔记---WinForm事件中的Object sender和EventArgs e参数
Windows程序有一个事件机制.用于处理用户事件. 在WinForm中我们经常需要给控件添加事件.例如给一个Button按钮添加一个Click点击事件.给TextBox文本框添加一个KeyPress ...
- 对udp dns的思考2
上一篇文章写道了udp 使用reuseport 多线程编程!!! 但是有几个问题需要考虑一下: 之前hash使用sip sport dip dport为key, 很正常同一个客户端回hash到同一个s ...
- linux netfilter nat1
linux netfilter nat1 2020整理云笔记上传
- ceph在centos7下一个不容易发现的改变
在centos6以及以前的osd版本,在启动osd的时候,回去根据ceph.conf的配置文件进行挂载osd,然后进行进程的启动,这个格式是这样的 [osd.0] host = hostname de ...
- Python_selenium案例:
selenium案例 #coding=utf-8 #select下拉框处理 from selenium import webdriver from selenium.webdriver.common. ...
- 我要进大厂之大数据ZooKeeper知识点(2)
01 我们一起学大数据 接下来是大数据ZooKeeper的比较偏架构的部分,会有一点难度,老刘也花了好长时间理解和背下来,希望对想学大数据的同学有帮助,也特别希望能够得到大佬的批评和指点. 02 知识 ...
- ACCESS渗透测试
access-getshell 直接写shell # 创建临时表 create table test(a varchar(255)); # 插入一句话木马 insert into test(a) va ...

