☞ ░ 前往老猿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多行多列数据以及设置数据字体颜色填充色对齐方式的方法的更多相关文章

  1. python学习笔记(十):操作excel

    一.python操作excel,python操作excel使用xlrd.xlwt和xlutils模块,xlrd模块是读取excel的,xlwt模块是写excel的,xlutils是用来修改excel的 ...

  2. 吴裕雄--天生自然python学习笔记:pandas模块用 dataframe.loc 通过行、列标题读取数据

    用 df.va lue s 读取数据的前提是必须知道学生及科目的位置,非常麻烦 . 而 df.loc 可直接通过行.列标题读取数据,使用起来更为方便 . 使用 df.loc 的语法为: 行标题或列标题 ...

  3. Python学习系列(五)(文件操作及其字典)

    Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件      在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...

  4. python学习9—文件基本操作与高级操作

    python学习9—文件基本操作与高级操作 1. 文件基本操作 打开文件,获得文件句柄:f = open('filename',encoding='utf-8'),open会查询操作系统的编码方式,并 ...

  5. Latex中如何设置字体颜色(3种方式)

    Latex中如何设置字体颜色(三种方式)   1.直接使用定义好的颜色 \usepackage{color} \textcolor{red/blue/green/black/white/cyan/ma ...

  6. Python学习随笔:使用xlwings读取和操作Execl文件

    一.背景 有2种模块可以对Execl文件,一种是xlwt 方式,需要安装三个库文件 xlrd(读Excel)xlwt(写Excel)xlutils(修改Excel),也是网上介绍文章最多的一种方法,一 ...

  7. Python 学习随笔 - 1 - 基础数据类型、变量 及 基本运算

    仅有的C语言的基础都是大学时学的: 准备赶潮流,开始学习Python. 随笔记录学习过程中,靠一点点C语言基础难以去理解的地方,以及区别于C语言的地方,做些笔记作为以后参考. Python 解释器直接 ...

  8. Python学习笔记:xlrd和xlwt(Excel读写)

    xlrd模块 Python的三方库xlrd用于对excel文件进行读取,可以是“.xls”或“.xlsx”格式(旧版本可能不支持“.xlsx”). 下载安装:https://pypi.org/proj ...

  9. Python(xlrd、xlwt模块)操作Excel实例(一)

    一.前言 关于Python的xlrd.xlwt模块的使用,推介另一位博客主的博文:https://www.cnblogs.com/zhoujie/p/python18.html 这篇里面有详细介绍这两 ...

随机推荐

  1. DP斜率优化学习笔记

    斜率优化 首先,可以进行斜率优化的DP方程式一般式为$dp[i]=\max_{j=1}^{i-1}/\min_{j=1}^{i-1}\{a(i)*x(j)+b(i)*y(j)\}$ 其中$a(j)$和 ...

  2. 一个 Task 不够,又来一个 ValueTask ,真的学懵了!

    一:背景 1. 讲故事 前几天在项目中用 MemoryStream 的时候意外发现 ReadAsync 方法多了一个返回 ValueTask 的重载,真是日了狗了,一个 Task 已经够学了,又来一个 ...

  3. python爬虫04 Requests

    接下来我们要来玩一个新的库 这个库的名称叫做 Requests 这个库比我们上次说的 urllib 可是要牛逼一丢丢的 毕竟 Requests 是在 urllib 的基础上搞出来的 通过它我们可以用更 ...

  4. Java--关于cpu占用解决方案

    关于cpu占用高的解决方案--java篇 通俗一点:找到进程,找到下面的线程,找到线程正在做的事,分析线程正在做的事. 一.查看cpu占用高的进程 top命令可以查看(假设%cpu已经属于很高了,我们 ...

  5. ASP.NET Core 中基于工厂的中间件激活

    IMiddlewareFactory/IMiddleware 是中间件激活的扩展点. UseMiddleware 扩展方法检查中间件的已注册类型是否实现 IMiddleware. 如果是,则使用在容器 ...

  6. Redis 数据结构之字符串的那些骚操作

    Redis 字符串底层用的是 sds 结构,该结构同 c 语言的字符串相比,其优点是可以节省内存分配的次数,还可以... 这样写是不是读起来很无聊?这些都是别人咀嚼过后,经过一轮两轮三轮的再次咀嚼,吐 ...

  7. oracle 11.2.0.4静默安装

    oracle 11.2.0.4静默安装 1.安装包 1.1.上传安装包 xshell可用rz命令,选择安装包. mobaxterm可用左侧栏上传功能. 2.安装准备 2.1.关闭防火墙.SELinux ...

  8. dpkg 批量卸载

    dpkg -l |grep deepin|awk '{print $2}'|xargs sudo dpkg -P

  9. 【鸿蒙开发板试用报告】用OLED板实现FlappyBird小游戏(上)

    总是做各种Demo,是时候做个什么小应用来练练手了.踌躇了很久,果然还是搞个小游戏才有意思.想到几年前风靡全球的FlappyBird,一个屏幕一个按钮就足够了,正好适合.OLED屏幕.按键的驱动已经有 ...

  10. 你了解ABBYY FineReader 14么?

    有没有一款是能够同时处理纸质文档和个类型PDF的一站式解决方案?答案是肯定的,ABBYY FineReader 14集合了强大的光学字符识别(OCR)以及 PDF 查看和编辑功能.不仅能够高效识别图片 ...