当前位置: 首页 > news >正文

高效使用python之xlwt库编辑写入excel表内容

头条号:科雷软件测试

学习目录

了解下电脑中的excel表格文件格式

安装xlwt库

xlwt库写入表格内容

1 导入xlwt库

2 用一个图展示下xlwt常用的函数

3 往表格写入一些内容并保存

4 设置样式

1 先初始化XFStyle 

2 设置字体font

3 设置边框

4 设置对齐方式

5 设置单元格 

6 设置行高和列宽

7 合并单元格

excel表格是大家经常用到的文件格式,各行各业都会跟它打交道。本次我们介绍经常用到的两个经典库,xlrd和xlwt,xlrd用于读取excel表格内容,xlwt用于写入excel表格内容。

了解下电脑中的excel表格文件格式

微软或者金山的excel表格编辑保存时一般要选择文件后缀,有xls和xlsx两类。

xls和xlsx后缀文件的主要区别:

  • 文件格式:xls是二进制格式,而xlsx是基于XML的压缩方式。
  • 版本:xls是Excel 2003及以前版本生成的文件格式,而xlsx是Excel 2007及以后版本生成的文件格式。
  • 兼容性:xlsx格式向下兼容,而xls格式不支持向后兼容。

安装xlwt库

pip install xlwt -i https://mirrors.aliyun.com/pypi/simple/

xlwt库写入表格内容

1 导入xlwt库

执行import xlwt导入该库

2 用一个图展示下xlwt常用的函数

3 往表格写入一些内容并保存(不设置样式)

# encoding:设置编码,默认是ascii,一般设置为utf-8,可支持中文;
#style_compression保持默认即可
work_book = xlwt.Workbook(encoding='utf-8')# 创建一个sheet对象,相当于创建一个sheet页,填入sheet页的名称
sheet_data = work_book.add_sheet('sheet1')# 向sheet页中添加数据:函数write,参数分别带入(行号,列号,填入的值),行和列从0开始。
#其中还有一个参数style=Style.default_style,用于设置字体/单元格格式/对齐方式等,不设置会使用默认值。
sheet_data.write(0,0,'username') # 第1行第1列写入数据 此处先不用样式,后面介绍
sheet_data.write(0,1,'age') # 第1行第2列写入数据 此处先不用样式,后面介绍
sheet_data.write(1,0,'章三') # 第1行第1列写入数据 此处先不用样式,后面介绍
sheet_data.write(1,1,'22') # 第1行第2列写入数据 此处先不用样式,后面介绍#保存为后缀为xls或者xlsx的excel表
#保存为xlsx时,后续的设置样式不会生效 所以我们保存为xls后缀文件
work_book.save('1.xls')

程序执行后,与程序同目录相同的位置生成1个excel表格,打开后如下所示:

4 设置样式

上面提到write函数有个默认参数style=Style.default_style,而Style.default_style引用于xlwt下面的一个类Style.XFStyle

XFStyle 类中几个我们常用的属性:

  • num_format_str 表示数据格式
  • font 表示字体
  • alignment 表示对齐方式
  • borders 表示边框

1 先初始化XFStyle

style = xlwt.XFStyle()# 初始化样式

2 设置字体font

因为xlwt的__init__.py文件已经从Formatting模块导入了Font类,我们直接通过xlwt.Font()定义字体样式

Font类初始化参数:

具体解释如下:

height

字体大小。默认值200代表字号10

(200也就是20*10,其中20为衡量单位,10为字号)

italic

是否设置斜体。

struck_out

是否设置删除线。

outline

是否设置轮廓

shadow

是否设置阴影

colour_index

字体颜色

bold

是否设置加粗

weight

设置笔画宽度

escapement

是否设置为上下标

underline

是否设置下划线

family

设置字体集。

charset

设置字符集

name

设置字体名称

其中字体的颜色在style.py文件中找到一些设置值:

我们设置字体如下:

#为样式创建字体(font)
font = xlwt.Font() 
# 指定字体的一些常用属性font.name = '宋' # 指定字体
font.height = 200 # 和excel字体大小比例是1:20
font.bold = True # 字体是否加粗
font.underline = True # 字体是否下划线
font.struck_out = True # 字体是否有横线
font.italic = True # 是否斜体字
font.colour_index = 0x3C # 字体颜色棕色
# 设定字体样式
style.font = font

将write函数改为如下,重新执行,检查表格如下,字体设置已经生效

# 第1行第1列写入数据 
sheet_data.write(0,0,'username',style=style) 
# 第1行第2列写入数据 
sheet_data.write(0,1,'age',style=style)
# 第1行第1列写入数据
sheet_data.write(1,0,'章三',style=style) 
# 第1行第2列写入数据
sheet_data.write(1,1,'22',style=style)

3 设置边框

跟设置字体一样,我们直接通过xlwt.Borders()定义边框样式。

Borders类初始化参数:

属性具体解释如下:

left

设置左边框

right

设置右边框

top

设置上边框

bottom

设置下边框

diag

设置对角线样式

left_colour

设置左边框颜色

right_colour

设置右边框颜色

top_colour

设置上边框颜色

bottom_colour

设置下边框颜色

diag_colour

设置对角线颜色

need_diag1

设置是否显示左上-右下对角线

need_diag2

设置是否显示左下-右上对角线

每个属性可以填的值在上面图中已经用红框标出。比如设置为粗实线,对应THICK(0x05)

我们设置边框如下:

#边框类初始化
borders = xlwt.Borders()
#定义属性值
borders.top = 0x04 #上边框样式
borders.bottom = 0x05 #下边框样式
borders.left = 0x06 #左边框样式
borders.right = 0x07 #右边框样式
borders.top_colour = 0x08 #上边框颜色
borders.bottom_colour = 0x36 #下边框颜色
borders.left_colour = 0x11 #左边框颜色
borders.right_colour = 0x12 #右边框颜色
borders.need_diag1 = 1 #设置显示左上-右下对角线
borders.diag = 0x02 #设置对角线样式
borders.diag_colour = 0x30 #设置对角线颜色
#赋值给样式
style.borders = borders

增加2行write函数如下,重新执行,检查表格如下,边框设置已经生效

# 第3行第3列写入数据
sheet_data.write(2,2,'',style=style)
# 第4行第4列写入数据
sheet_data.write(3,3,'',style=style) 

4 设置对齐方式

跟设置字体一样,我们直接通过xlwt.Alignment()定义对齐样式。

Alignment类初始化参数:

主要属性具体解释如下:

horz

设置水平对齐方式:

常规,左对,居中,右对齐,填充,两端对齐,跨列居中,分散对齐

vert

设置垂直对齐方式:

顶端对齐,垂直居中,底端对齐,两端对齐,分散对齐

dire

设置文字方向:

根据内容,总是从左到右,总是从右到左

rota

设置旋转方向

wrap

是否设置自动换行

每个属性可以填的值在上面图中已经用红框标出。比如设置文字垂直方向为靠上,对应VERT_TOP= 0x00

我们设置对齐如下:

#设置对齐方式
#对齐类初始化
alignment = xlwt.Alignment()
#定义属性值
alignment.horz = 0x02 # 设置水平对齐方式为居中
alignment.vert = 0x00 # 设置垂直对齐方式为靠上
alignment.wrap = 0x01 # 设置自动换行style.alignment = alignment

增加3行write函数如下,重新执行,检查表格如下,对齐方式设置已经生效

# 第5行第5列写入数据
sheet_data.write(4,4,'1',style=style) 
# 第6行第6列写入数据
sheet_data.write(5,5,'2',style=style) 
# 第7行第7列写入数据
sheet_data.write(6,6,'ssssssssssssssss',style=style)

5 设置单元格

我们直接通过如下定义单元格格式

#设置单元格格式
style.num_format_str = '0.00' #数字保留2位小数

单元格的格式在style.py文件中定义如下:

跟excel表中我们定义单元格格式中的自定义格式是一样的

增加1行write函数如下,重新执行,检查表格如下,数字已保留2位小数

6 设置行高和列宽

work_book = xlwt.Workbook(encoding='utf-8')
# 创建一个sheet对象,相当于创建一个sheet页 填入sheet页的名称
sheet_data = work_book.add_sheet('sheet1')
#以上是上面提到的代码,在sheet对象中配置行高和列宽
#在sheet对象中配置行高和列宽
#设置每一列的列宽 函数的参数为列号,从0开始
sheet_data.col(0).width = 256*20
#256为衡量单位,20表示20个字符宽度#设置行高
height_set = xlwt.easyxf(f'font:height {20*40}') #20是单位,40表示40px
sheet_data.row(0).set_style(height_set) #参数0代表第一行

执行写入后,第1行第1列的行高和列宽已经设置成功

7 合并单元格

使用write_merge函数合并多个单元格,并写入内容

# 第8行到9行,第8列到第9列合并为一个单元格,写入数据
sheet_data.write_merge(8, 9, 8, 9, '合并数据')
执行写入后如下:

总结

在以上代码中,所有的wtite操作只用了一个样式,实际使用过程中,大家需要根据实际情况自己定义各类不同的样式。

----感谢读者的阅读和学习,谢谢大家。

共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

相关文章:

高效使用python之xlwt库编辑写入excel表内容

头条号:科雷软件测试 学习目录 了解下电脑中的excel表格文件格式 安装xlwt库 xlwt库写入表格内容 1 导入xlwt库 2 用一个图展示下xlwt常用的函数 3 往表格写入一些内容并保存 4 设置样式 1 先初始化XFStyle 2 设置字体font 3 设置边框 4 设置对齐方式 …...

【前端】Layui小功能收集整理

目录 1、layui 鼠标悬浮提示文字 2、关闭当前窗口并刷新父页面 3、子iframe关闭/传值/刷新父页面 1、layui 鼠标悬浮提示文字 鼠标放在图标上悬浮显示提示信息&#xff0c;效果图如下 <div style"float:left; line-height:40px">道试题 <i class"l…...

Django 地址接口开发

应用 Mixin 混合类进行收货地址接口开发 python ../manage.py startapp address继承了mixins扩展类&#xff0c;进到里面可以稍微看下源码 该方法帮我们实现了获取验证及保存的功能 address/views from rest_framework.generics import GenericAPIView from rest_framewo…...

.net6部署到linux上(CentOS Linux 7)

目录 一、先在linux上配置.net环境 添加 Microsoft 包存储库 安装 SDK 安装运行时 检查 SDK 版本可使用终端查看当前安装的 .NET SDK 版本。 打开终端并运行以下命令。 二、创建.net6 mvc项目 并发布 创建项目 修改默认端口 打包发布到文件夹 运行打包项目查看项目是否…...

docsify搭建个人博客——简单公共知识库

整站建设流程&#xff1a;安装docsify > 排错>配置封面> 配搜索> 启动> 放md类的文章> 自动生成目录&#xff1b; 更新文章流程&#xff1a; 把目录文章放到docsify\docs目录下&#xff0c;然后双击docsify-autosidebar.exe即可&#xff08;它会重新生成目录…...

Ubuntu18.04如何安装搜狗、网易云音乐、百度网盘、金山WPS、谷歌浏览器、微信、Maven、Pycharm、Anaconda、MySQL8.0等软件

目录 1.搜狗输入法 下载 安装 卸载 2.网易云音乐 下载 安装 3.百度网盘 下载 安装 4.金山WPS 下载 安装 5.谷歌浏览器 下载 安装 6.微信 下载安装 7.Maven 下载 安装 配置镜像源 8.Pycharm 下载 安装 9.Anaconda 下载 安装 卸载 10.MySQL8.0 下载…...

【算法练习Day24】递增子序列全排列全排列 II

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 递增子序列容易出错的地方 …...

web3之链上情报平台Arkham

文章目录 web3之链上情报平台Arkham什么是Arkham链上情报交易所 Arkham Intel Exchange相较于传统情报交易方式,Arkham Intel Exchange下优势 web3之链上情报平台Arkham 什么是Arkham 官网&#xff1a;https://zh.arkhamintelligence.com/ 官方&#xff1a;https://platform.…...

浅谈uniapp中开发安卓原生插件

其实官方文档介绍的比较清楚而且详细,但是有时候他太墨迹,你一下子找不到自己想要的,所以我总结了一下开发的提纲,也是为了自己方便下次使用。 1.第一步,下载官方提供的Android的示例工程,然后倒入UniPlugin-Hello-AS工程请在App离线SDK中查找,之后Android studio,编译运行项目…...

音频格式WAV

查找wav文件头关键struct 位置&#xff0c;当然也可查找avi文件头。用这个方法找到avi文件data位置后&#xff0c;可直接读出文件的每一帧图片。当然avi数据的标志位不是data,可以是00dc等。 WAV音频头文件有三个关键struct&#xff1a;RIFF, fmt,data。 AVI 视频文件头的关键…...

《语音优先》智能语音技术驱动的交互界面设计与语音机器人设计(译者序)...

“言为心声,语为心境”&#xff0c;语言与对话是我们沟通与协作的重要方式。而智能语音技术是一种基于人工智能和自然语言处理技术的语音交互技术。它可以通过语音识别技术将用户的语音指令转换为文本&#xff0c;然后通过自然语言处理技术对文本进行分析和理解&#xff0c;最终…...

[SQL开发笔记]WHERE子句 : 用于提取满足指定条件的记录

SELECT DISTINCT语句用户返回列表的唯一值&#xff1a;这是一个很特定的条件&#xff0c;假设我需要考虑很多中限制条件进行查询呢&#xff1f;这时我们就可以使用WHERE子句进行条件的限定 一、功能描述&#xff1a; WHERE子句用于提取满足指定条件的记录&#xff1b; 二、WH…...

【微信小程序】6天精准入门(第5天:利用案例与后台的数据交互)附源码

一、什么是后台交互&#xff1f; 在小程序中&#xff0c;与后台交互指的是小程序前端与后台服务器之间的数据通信和请求处理过程。通过与后台交互&#xff0c;小程序能够获取服务器端的数据、上传用户数据、发送请求等。 小程序与后台交互可以实现数据的传输、用户认证、实时消…...

【Hydro】水文模型比较框架MARRMoT - 包含47个概念水文模型的Matlab代码

目录 说明源代码运行实例workflow_example_1.mworkflow_example_2.mworkflow_example_3.mworkflow_example_4.m 测试1、 结构体兼容性问题2、append的兼容性问题3、修改后的MARRMoT_model.m 说明 MARRMoT是一个新的水文模型比较框架&#xff0c;允许不同概念水文模型结构之间的…...

Android Studio(2022.3.1)设置阿里云源-新旧版本

新版本 #settings.gradle.ktsmaven { url uri("https://maven.aliyun.com/repository/public/") }maven { url uri("https://maven.aliyun.com/repository/google/") }maven { url uri("https://maven.aliyun.com/repository/jcenter/") }ma…...

SOLIDWORKS 2024新功能 3D CAD三维机械设计10大新功能

SOLIDWORKS 2024新增功能 - 3D CAD三维机械设计 10大新增功能 1. 先前版本的兼容性 •利用您订阅的 SOLIDWORKS&#xff0c;可将您的 SOLIDWORKS 设计作品保存为旧版本&#xff0c;与使用旧版本 SOLIDWORKS 的供应商无缝协作。 •可将零件、装配体和工程图保存为最新版本…...

第十三章:L2JMobius学习 – 玩家攻击怪物

本章节&#xff0c;我们学习一下玩家周边怪物的刷新。在上一章节中&#xff0c;我们提过这个事情。当玩家移动完毕之后&#xff0c;会显示周围的游戏对象&#xff0c;其中就包括NPC怪物。当然&#xff0c;玩家“孵化”自己&#xff08;调用spawnMe方法&#xff09;的时候&#…...

Module not found: Error: Can‘t resolve ‘core-js/modules/es.promise.js‘

1.遇到的问题 具体错误&#xff1a; ERROR in ./src/js/index.js 1:0-48 产环境配置15js兼容性处理srcjsERROR in ./src/js/index.js 2:0-39 Module not found: Error: Cant resolve core-js/modules/es.promise.js in D:DesktopMy FilesRecentlyStudyWebPackdemo3.webpack生…...

09-React路由使用(React Router 6)

9-React Router 6的使用 1.概述 React Router 以三个不同的包发布到 npm 上&#xff0c;它们分别为&#xff1a; react-router: 路由的核心库&#xff0c;提供了很多的&#xff1a;组件、钩子。react-router-dom: 包含react-router所有内容&#xff0c;并添加一些专门用于 DOM …...

Linux上常用网络相关命令

1. ifconfig&#xff1a; - 显示所有网络接口的配置信息&#xff1a;ifconfig - 显示特定网络接口&#xff08;例如eth0&#xff09;的配置信息&#xff1a;ifconfig eth0 2. ip&#xff1a; - 显示网络接口的配置信息&#xff1a;ip addr show - 显示路由表&…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

MySQL的pymysql操作

本章是MySQL的最后一章&#xff0c;MySQL到此完结&#xff0c;下一站Hadoop&#xff01;&#xff01;&#xff01; 这章很简单&#xff0c;完整代码在最后&#xff0c;详细讲解之前python课程里面也有&#xff0c;感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...