戳进来呗!五分钟就学会Python3怎么修改Excel数据(xlwt使用)

摘要:
上次我们看过了xlrd的使用方法,那么怎么对Excel执行修改操作的?对于旧版的Excel文件我们用xlwt,但是对于新版的xlsx文件,使用openpyxl更合适一些。xlwt的使用比较简单,我们赶快开始学习吧安装安装和xlrd一样,pipinstallxlwt创建对象workbook=xlwt.Workbook()创建表单对象我们先来创建第一层Sheetsheet1=workbook.add_sheet这里有两个参数,第一个参数不用解释了吧,就是表单的名称,第二个参数cell_overwrite_ok如果你设置为True,就表示覆盖了某个值不会抛异常,为False就不可以覆盖任何一个单元格内已经有值的数据。

上次我们看过了xlrd的使用方法,那么怎么对Excel执行修改操作的?对于旧版的Excel文件我们用xlwt,但是对于新版的xlsx文件,使用openpyxl更合适一些。
xlwt的使用比较简单,我们赶快开始学习吧
在这里插入图片描述

安装

安装和xlrd一样,pip install xlwt

创建对象
workbook = xlwt.Workbook()
创建表单对象

我们先来创建第一层Sheet

sheet1 = workbook.add_sheet(u'sheet1', cell_overwrite_ok=True) 

这里有两个参数,第一个参数不用解释了吧,就是表单的名称,第二个参数cell_overwrite_ok如果你设置为True,就表示覆盖了某个值不会抛异常,为False就不可以覆盖任何一个单元格内已经有值的数据。

设计表单的行列值

我们想设计一个这样的Excel:
在这里插入图片描述
思路是先创建第一行[u'姓名', u'年龄', u'性别', u'情感状态', u'合计'],然后创建第一列:[u'小斌哥', u'貂蝉', u'刘备', u'小乔', u'大蛇丸'],因为每一个第一列的值都对应四个状态,那么很好理解,是通过for循环进行遍历,第一列有几个值,我们就让他遍历几次,然后难得是这个合并单元格,第一列的这五个名字和第五列合计这一列我们看见他们都是合并了四行,列宽为一。想合并单元格要使用一个方法名为:表单名.write_merge这个write_merge方法有六个参数,分别是①,②想要合并几行,③,④想要合并几列,⑤想改变哪个单元格的Style,⑥样式,后面两个属性可以为空,我们看看默认的样式是什么:

class XFStyle(object):

    def __init__(self):
        self.num_format_str  = 'General'
        self.font            = Formatting.Font()
        self.alignment       = Formatting.Alignment()
        self.borders         = Formatting.Borders()
        self.pattern         = Formatting.Pattern()
        self.protection      = Formatting.Protection()

当然了如果你某列或者某行有特殊要求,完全OK,我们可以自己定义一个方法,去

自定义样式
def set_style(name, height, bold=False):
    style = xlwt.XFStyle()  # 初始化样式

    font = xlwt.Font()  # 为样式创建字体
    font.name = name  # 'Times New Roman'
    font.bold = bold
    font.color_index = 4
    font.height = height
    style.font = font
    # style.borders = borders

    return style

我们定义两个参数,字体样式的名字和字的大小。
接下来我们需要做以下的步骤:

①创建第一行
②创建第一列
③创建最后一列(因为第一列和最后一列都是合并四行一列)
④创建第四列
⑤保存文件

完成表单第一步:

for i in range(0, len(row0)):
    sheet1.write(0, i, row0[i], set_style('Times New Roman', 220, True))

这四个参数分别是①第几行,②第几列,③这个单元格要填入什么值,④这个单元格什么样式
在这里插入图片描述
可以看出已经成功了

第二步和第三步:

生成第一列和最后一列(合并4行)
    # 生成第一列和最后一列(合并4行)
i, j = 1, 0
while i < 4 * len(column0) and j < len(column0):
    sheet1.write_merge(i, i + 3, 0, 0, column0[j], set_style('Arial', 220, True))  # 第一列
    sheet1.write_merge(i, i + 3, 4, 4)  # 最后一列"合计"
    i += 4
    j += 1

这个循环很好理解,但是第一眼看上去很麻烦,因为是以四行为一个单元格,所以i是一个d=4的递增数列,j是确定元组column0到第几个值了,我们看一下结果:
在这里插入图片描述
其实这就差不多了,我们再画蛇添足填下感情状态:

第四步

    # 生成第四列
    i = 0
    while i < 4 * len(column0):
        for j in range(0, len(status)):
            sheet1.write(j + i + 1, 3, status[j])
        i += 4

在这里插入图片描述
小提示:这就ok啦,如果你打开了这个Excel,那就无法保存了,IDE会报错的~
在这里插入图片描述
有问题欢迎评论区指正,觉得有用的拜托点个赞再走呗~这个对我真的很重要,谢谢!

免责声明:文章转载自《戳进来呗!五分钟就学会Python3怎么修改Excel数据(xlwt使用)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇dpkg用法详解[Mac OS] Homebrew简介及安装wine下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ubuntu1.8安装python3.7pip报错“subprocess.CalledProcessError...lsb_release”

背景 给一台 ubuntu18.04 安装 python3.7,完成后想试试pip list命令,结果出现一长串报错,我贴一下最后几行: File "/usr/local/lib/python3.7/subprocess.py", line 512, in runoutput=stdout, stderr=stderr)subprocess.CalledP...

同时装了Python3和Python2,怎么用pip?(转载)

链接:https://www.zhihu.com/question/21653286/answer/95532074转帖-[官解]Windows上Python2和3如何兼容想学习Python3,但是暂时又离不开Python2。在Windows上如何让它们共存呢? 目前国内网站经常会让大家把其中一个python.exe改个名字(嗯,我也这样讲过,在此纠正一...

jmeter 读取excel数据

jmeter 读取excel数据使用的方法是使用Jmeter CSV Data Set Config参数化 但是将excel文件保存成csv格式后,jmeter读取后返回的数据总是出现乱码问题, 以下就是解决的办法: 先做一个Excel表,如下 再将excel表格保存为csv格式: 下面是使用CSV Data Set Config参数化将csv里面的数...

(转) 如何在Excel和Word文档中插入GIF动画

Office Excel 和Word文档中插入图片很容易做到,但是要插入GIF动画,并且还要能让这个动画动起来,就不能依照普通的“插入 → 图片→ 来自文件”的方法了,否则的话即便是把GIF插入进去,也只是个静态的画面,并不能够动起来。要想实现动画的目的,就得借助VB中的一个特殊的插件—— AniGIF.ocx(在PPT中无需这个插件)。本文就以Excel...

C#读写Excel的几种方法

1 使用Office自带的库 前提是本机须安装office才能运行,且不同的office版本之间可能会有兼容问题,从Nuget下载 Microsoft.Office.Interop.Excel 读写代码如下: 1 using Microsoft.Office.Interop.Excel; 2 using Excel = Microsoft.Offic...

Jxl操作Excel设置背景、字体颜色、对齐方式、列的宽度(转)

原文出处:http://zhouhaitao.iteye.com/blog/1842769 最近项目中需要用到导出Excel文件,以下是我写了一个通过jxl操作Excel的例子,熟悉Jxl的使用。 有一个比较难以处理的问题就是自动适应文本宽度的问题。 以下我也在网上找了一下 :有如下的方式处理: CellView cellView = new CellVi...