python多列填充缺点_Python学习随笔:如何使用xlwings设置和操作excel多行多列数据,如何设置数据的对齐字体颜色填充颜色,以及,填充色,方式,方法...

本文介绍了使用xlwings库在Python中操作Excel时,如何设置和操作多行多列数据,包括正确写入整行整列的方法、处理读取数据的一维和二维列表差异、一次性写入多行多列数据的技巧,以及设置字体颜色、填充色、对齐方式和调整单元格宽度高度的方法。
摘要由CSDN通过智能技术生成

一、关于整行整列数据读写的问题

在《

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、学5G!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值