自动化办公Day03

第三章 Python写入excel数据之xlwt

1. Python写入excel文件内容

在日常工作中需要大量写入和创建表格,Python可以帮我们,只需要写入代码,就可以创建不同格式不同风格的表格。今天我们要了解xlwt这位朋友。xlwt是一个用于将数据和格式信息写入旧版Excel文件(即.xls文件)的库。可参考网址:https://xlwt.readthedocs.io/en/latest/
在这里插入图片描述
这是它的官方说明网站

1.1 安装

像xlrd一样,在使用前,我们必须先安装。安装方法仍然是pip install xlwt
在这里插入图片描述
然后我们新建一个项目文件夹写今天的代码Lesson3。然后我们进入这个文件夹,打开jupyter notebook
在这里插入图片描述
我们打开项目就可以操作了,先new一个Python File。重命名为python写入excel文件内容。

1.2 写入数据的步骤

我们写入数据的步骤是:

  • 创建工作簿
  • 创建工作表
  • 写入数据
    下面是代码,注意看注释:
    在这里插入图片描述
    下面我们可以看到在项目文件夹中已经有了对应的Excel文件,注意,如果没有保存工作簿,是不会有对应文件生成的。保存的时候,一定要把文件扩展名保存为xls格式。

在这里插入图片描述
那么如何修改呢?可以直接在这里修改吗?如果我们在excel文件中是可以直接修改的,但是如果我们用python这里再次写入的话会报错。worksheet = workbook.add_sheet(‘sheet1’)
在这里插入图片描述

1.3 文件数据重写

如何解决这个问题呢?还记得在我们添加工作表的时候,传入的参数只有一个工作表名:worksheet = workbook.add_sheet(‘sheet1’)
其实它还有另外一个参数:workbook.add_sheet(‘工作表名’,cell_overwrite_ok=False)
就是是否允许重写,默认是False,是不允许重写的,我们重新传递一个True就可以了。
在这里插入图片描述
我们看到这里有一个新的表格sheet2,如果我们再重新写入也不会报错了。
在这里插入图片描述

但我们记得,保存的时候一定要将打开的本地excel关闭,否则你执行保存命令的时候还会报错如下:
在这里插入图片描述
保存命令不被允许,因为我们的表格是打开的。

2. excel表格字体样式的设置

日常办公中我们不仅仅写入数据,还会处理表头,字体,颜色,边框等等。

2.1 excel单元格样式

xlwt中有XFStyle这个库来对单元格的样式进行规范操作,下面的表格列出各种方法:

方法作用
Formatting.Font()字体设置
Formatting.Alignment()对齐设置
Formatting.Borders()边框设置
Formatting.Pattern背景颜色设置

当我们想设置单元格样式的时候,需要先实例化类XFStyle,以便于调用该类的方法。

xlwt.XFStyle 初始化样式

字体样式设置:

方法作用
xlwt.Font()创建字体对象
xlwt.Font().name设置字体
xlwt.Font().bold字体加粗
xlwt.Font().underline设置下划线
xlwt.Font().italic设置倾斜
xlwt.Font().color设置字体颜色
xlwt.Font().colour_index根据颜色索引来设置颜色
xlwt.Font().size设置字体大小
xlwt.Font().height设置行高
xlwt.Font().struck_out设置删除线
worksheet.col(indx).width设置单元格的宽度

当我们设置完以后,一定不要忘记将设置的字体对象,赋值给初始化样式对象。具体操作一下。
先新建一个文件夹Lesson4如前面一样,进到文件夹,打开jupyter,new一个新的python File重命名为“设置单元格样式”。
然后我们开始写代码:
在这里插入图片描述
在这里插入图片描述

注意看代码和注释,我们写完代码保存后,就生成了一个工作簿,我们打开看看:
在这里插入图片描述
这里姓名使用了我们定义的样式,名字没有。
下面我们设置一下列宽,注意看圈住的代码及注释:

在这里插入图片描述
保存后我们打开看一下,列变宽了。

在这里插入图片描述

3. 作业

要求,新建一个工作簿,新建一个工作表,在工作表里面写入1到100的数字,不同的数字用不同的颜色,数字与颜色的索引值一致。并且每十个数字换行。

3.1 第一步

我们先完成一部分,对一个单元格来输入内容,并传入样式参数。我们将所有的样式定义为一个函数,这样只需要调用这个函数就可以传入所有我们定义的样式了。
在这里插入图片描述

3.2 第二步

我们这一步尝试将该样式应用于(0,0)到(9,9)的单元格内,并且每个单元格写入一个数字从1到100,可以用循环。颜色用索引的方式,索引值也用循环来格式化一下,这样不同的字刚好是对应的颜色。
在这里插入图片描述
运行以后我们就得到了表格。由于颜色较淡的索引显示不出,我给表格填充深一点的背景反衬出来。
在这里插入图片描述
通过这个作业练习,我既熟悉了如何使用xlwt来写入数据,也验证了不同颜色的索引值。

4. 设置单元格边框样式

不仅可以设置字体,也可以设置单元格边框。边框线设置分为上、下、左、右边框的设置,不要也要先创建边框对象xlwt.Borders()。

边框样式设置名称
xlwt.Borders().top顶部
xlwt.Borders().left左边框
xlwt.Borders().right右边框
xlwt.Borders().bottom底部边框

边框的值也可以设置:

边框值名称
NO_LINE = 0×00保持默认
THIN = 0×01实线
DASHED = 0×03虚线
MEDIUM = 0×02中等
DOTTED = 0×04点状
THICK = 0×05粗线
DOUBLE = 0×06双线
HAIR = 0×07丝线

下面我们写代码练习一下,首先我们new一个python File,重命名为“边框设置练习”。
在这里插入图片描述
有很多的边框样式,我们可以通过xw.borders??来查看。

5. 设置单元格的对齐方式

要设置单元格的对其方式,首先要创建对其对象:

xlwt.Alignment()
单元格对其又分为水平对齐:
xlwt.Alignment().horz
垂直对齐:
xlwt.Alignment().vert
水平对齐又分为水平左对齐,右对齐,居中。垂直对齐又分为上对其,下对其,居中对齐。

对齐方式对齐名称
HORZ_GENERAL = 0×00水平普通对齐
HORZ_LEFT = 0×01水平左对齐
HORZ_CENTER = 0×02水平居中对齐
HORZ_RIGHT = 0×03水平右对齐
HORZ_FILLED = 0×04水平填充
HORZ_ JUSTIFIED= 0×05水平两端对齐
HORZ_CENTER _ACROSS_SEL= 0×06水平穿过对齐
HORZ_DISTRIBUTED = 0×07水平分散对齐

垂直对齐方式

对齐方式对齐名称
VERT_TOP = 0×00水平普通对齐
VERT_CENTER = 0×01垂直居中对齐
VERT_BOTTOM = 0×02垂直底部对齐
VERT_ JUSTIFIED= 0×03垂直两端对齐
VERT_DISTRIBUTED = 0×04垂直分散对齐

下面我们练习一下,首先new一个python File,重命名为“设置单元格对齐方式”
在这里插入图片描述
我们查看这个类:

Init signature: xw.Alignment()
Docstring:      <no docstring>
Source:        
class Alignment(object):
    HORZ_GENERAL                = 0x00
    HORZ_LEFT                   = 0x01
    HORZ_CENTER                 = 0x02
    HORZ_RIGHT                  = 0x03
    HORZ_FILLED                 = 0x04
    HORZ_JUSTIFIED              = 0x05 # BIFF4-BIFF8X
    HORZ_CENTER_ACROSS_SEL      = 0x06 # Centred across selection (BIFF4-BIFF8X)
    HORZ_DISTRIBUTED            = 0x07 # Distributed (BIFF8X)

    VERT_TOP                    = 0x00
    VERT_CENTER                 = 0x01
    VERT_BOTTOM                 = 0x02
    VERT_JUSTIFIED              = 0x03 # Justified (BIFF5-BIFF8X)
    VERT_DISTRIBUTED            = 0x04 # Distributed (BIFF8X)

    DIRECTION_GENERAL           = 0x00 # BIFF8X
    DIRECTION_LR                = 0x01
    DIRECTION_RL                = 0x02

    ORIENTATION_NOT_ROTATED     = 0x00
    ORIENTATION_STACKED         = 0x01
    ORIENTATION_90_CC           = 0x02
    ORIENTATION_90_CW           = 0x03

    ROTATION_0_ANGLE            = 0x00
    ROTATION_STACKED            = 0xFF

    WRAP_AT_RIGHT               = 0x01
    NOT_WRAP_AT_RIGHT           = 0x00

    SHRINK_TO_FIT               = 0x01
    NOT_SHRINK_TO_FIT           = 0x00

    def __init__(self):
        self.horz = self.HORZ_GENERAL
        self.vert = self.VERT_BOTTOM
        self.dire = self.DIRECTION_GENERAL
        self.orie = self.ORIENTATION_NOT_ROTATED
        self.rota = self.ROTATION_0_ANGLE
        self.wrap = self.NOT_WRAP_AT_RIGHT
        self.shri = self.NOT_SHRINK_TO_FIT
        self.inde = 0
        self.merg = 0

    def _search_key(self):
        return (
            self.horz, self.vert, self.dire, self.orie, self.rota,
            self.wrap, self.shri, self.inde, self.merg,
            )
File:           d:\python38\lib\site-packages\xlwt\formatting.py
Type:           type
Subclasses:     

举例代码:
在这里插入图片描述

6. 设置单元格背景颜色

虽然这个功能不常用到,我们还是介绍一下。步骤:

  • xlwt.Pattern() # 创建背景对象
  • xlwt.Pattern().pattern # 设置背景,比如实心填充(xlwt.Pattern().pattern.SOLID_PATTERN)
  • xlwt.Pattern().pattern_fore_colour # 设置背景颜色(可直接填写颜色索引)

颜色索引如下:

索引颜色
0black
1white
2red
3green
4blue
5yellow
6magenta(紫红)
7cyan(青色)

我们直接举例,先创建python
文件,重命名为“设置单元格背景颜色”:

在这里插入图片描述

7. 样式练习

前面我们都举了例子,现在我们通过一个练习来总结一下。

我们新创建一个python文件,命名为“样式练习”。
在这里插入图片描述
在这里插入图片描述

我们打开项目文件夹看看,果然右一个工作簿test2,打开看看我们写入的数据:

在这里插入图片描述
我们看到完全是我们设置的样式。此次博客到此结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值