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 这篇里面有详细介绍这两 ...
随机推荐
- Hangfire只允许同时运行同一个任务
Hangfire有个机制可以确保所有任务都会被执行,如果当服务器停机了一段时间重新启动时,在此期间的周期任务会几乎同时执行.而大部分时候,我们希望同个周期任务每段时间只运行一个就行了. 或者是如果周期 ...
- Canvas鼠标点击特效(富强、民主...)、收藏
<script> /* 鼠标特效 */ var a_idx = 0; jQuery(document).ready(function($) { $("body").cl ...
- JSON小结【json-lib】
javabean:Address package com.baebae.model; public class Address { private String city; private Strin ...
- Spring Boot 创建 Docker 镜像
随着越来越多的组织转向容器和虚拟服务器,Docker正成为软件开发工作流程中一个更重要的部分.为此,Spring Boot 2.3中最新的功能之中,提供了为Spring Boot应用程序创建 Dock ...
- 如何避免Cephfs被完全毁掉
前提 一套系统的最低要求是可恢复,也就是数据不丢失,但是在各种各样的原因下,整套系统都有被毁掉的可能,一直以来有个观点就是存储是需要两套的,一般情况下很难实现,但是如何把故障发生的概率降低到最低,这个 ...
- ubuntu配置bonding
如果节点上有多个网络接口时可以通过bonding将多个网络接口虚拟为一个网络接口,bonding可以提供高可用及负载均衡功能,从而提高节点的网络接口性能及可用性. 配置单bond 一.使用如下命令安装 ...
- POJ2689 [质数距离] 题解
质数距离 题目TP门 题目描述 给定两个整数L和R,你需要在闭区间[L,R]内找到距离最接近的两个相邻质数C1和C2(即C2-C1是最小的),如果存在相同距离的其他相邻质数对,则输出第一对. 同时,你 ...
- JavaScript正则学习笔记
RegExp 元字符 ' . ' 点号:匹配任意的字符 ^ $ 位置字符 ^ 匹配字符串开始的位置 $ 匹配字符串结束的位置 匹配数字和非数字 \d 和 \D 匹配空白字符 \s 和 \S \s 匹配 ...
- vue项目中h5移动端中通过flex布局实现首尾固定,中间滚动(借鉴)
html中 <div class="flexLayoutr"> <div class="div_head"></div> & ...
- 赶紧收藏!这些Java中的流程控制知识你都不知道,你凭什么涨薪?
Java的流程控制 基础阶段 目录: 用户交互Scanner 顺序结构 选择结构 循环结构 break & continue 练习题 1.Scanner对象 之前我们学的基本语法中并没有实现程 ...

