excel表格写存神器--xlwt

原文链接:http://www.juzicode.com/python-tutorial-xlwt-excel

在 Python进阶教程m2d–xlrd读excel 中我们介绍了Excel表格的读取模块xlrd,今天这篇文章带大家了解Excel表格写存模块xlwt。他俩名字相近都以Excel的简写xl开头,rd是read的简写,wt是write的简写。

xlwt也是三方库,需要使用pip安装:

pip install xlwt

1、xlwt的基本用法

跟xlrd一样,也是按照三级结构:文件file-表页sheet-单元格cell 对Excel表格进行写存操作。

首先使用 xlwt.Workbook() 创建Excel写文件对象,会生成一个xlwt.Workbook.Workbook的实例wb:

import xlwt
wb = xlwt.Workbook()

然后用wb的add_sheet()方法添加一个sheet页,传入的参数为sheet页的名称:

ws = wb.add_sheet('juzicode')

再用add_sheet()生成ws实例的write()方法,直接对cell单元进行写入操作,cell单元的行和列的编号都是从0开始编号的,最左上角的单元格编号为(0,0),下面的例子在第0行第0列(对应excel表格的A1单元格)和第1行第3列(D2单元格)分别写入2个字符串:

ws.write(0,0,'juzicode.com')
ws.write(1,3,'vx:juzicode')

最后一步就是用wb.save()保存表格,传入的参数为保存文件的名称:

wb.save('output.xls')

打开生成的excel文件是这样的:

完整的例子如下:

#juzicode.com / VX公众号:juzicode
import xlwt
wb = xlwt.Workbook()
ws = wb.add_sheet('juzicode')
ws.write(0,0,'juzicode.com')
ws.write(1,3,'vx:juzicode')
wb.save('output.xls')

2、单元格数据类型

前面的例子中单元格写入的数据格式都是字符串,除了字符串,还可以写入数值类型、日期、bool值等,也可以是xlwt.Formula()计算结果。其中日期转换为Excel日期格式,该格式是从1899-12-31T00:00:00开始的浮点数值。bool类型会被转换为TRUE或者FALSE。

#juzicode.com/VX公众号:juzicode
import xlwt
import datetimewb = xlwt.Workbook()
ws = wb.add_sheet('juzicode')ws.write(0, 0, 3.14159265) # float
ws.write(1, 0, datetime.date(2025,1,31)) #date
ws.write(1, 1, datetime.time(23,25,27)) #time
ws.write(2, 0, 10) 
ws.write(2, 1, 19)
ws.write(2, 2, xlwt.Formula("A3+B3")) #计算公式,A3对应2,0 和 B3对应 2,1
ws.write(3, 0, '桔子code') #unicode
ws.write(4, 0, True) #bool
ws.write(4, 1, False) wb.save('output-data-type.xls')

生成的excel文件:

3、单元格格式

上节的例子中第2行的日期和时间看到效果是浮点数值,只有打开文件后选中单元格后右键设置单元格格式,转换为日期或者时间才能看到正确的数据。其实也可以在写入的时候就设定格式,这样打开文件就能看到正确的日期和时间了。

xlwt提供了easyxf()方法用来构建单元格格式的数据类型XFStyle,再传入到write()的第4个位置参数,就可以设置单元格格式了。

XFStyle 相关的格式有如下几种类型,这6种类型正好对应了excel表格中“设置单元格”场景下的标签页:

GroupAttributes
Number formatNumber format index (index to FORMAT record)
FontFont index (index to FONT record)
AlignmentHorizontal and vertical alignment, text wrap, indentation, orientation/rotation, text direction
BorderBorder line styles and colours
BackgroundBackground area style and colours
ProtectionCell locked, formula hidden

easyxf()方法有2个关键入参,一个是num_format_str,表示数据的格式 Number format ;一个是strg_to_parse,用来表示上表中除 Number format 以外的其他5种类型的属性。该方法返回的是 XFStyle 对象。

下面是一个浮点数值设置不同小数点后有效数值的例子,用到了 num_format_str 入参:

#juzicode.com/VX公众号:juzicode
import xlwtwb = xlwt.Workbook()
ws = wb.add_sheet('juzicode')ws.write(0, 0, 3.14159265,xlwt.easyxf(num_format_str='0.00')) #设置有效位数
ws.write(1, 0, 3.14159265,xlwt.easyxf(num_format_str='0.00000')) 
ws.write(2, 0, 3.14159265,xlwt.easyxf(num_format_str='00.00')) #前面补0
ws.write(3, 0, 1234563.14159265,xlwt.easyxf(num_format_str='0.00')) 
ws.write(4, 0, 1234563.14159265,xlwt.easyxf(num_format_str='#,##0.00'))  #设置千位分隔符

生成的文件:

num_format_str 入参还可以用来指定日期和时间类型的数据类型:

#juzicode.com/VX公众号:juzicode
import xlwt
import datetimewb = xlwt.Workbook()
ws = wb.add_sheet('juzicode')ws.write(0, 0, datetime.date(2025,1,31),xlwt.easyxf(num_format_str='dd/mm/yyyy')) 
ws.write(1, 0, datetime.date(2025,1,31),xlwt.easyxf(num_format_str='yyyy-mm-dd')) ws.write(2, 0, datetime.time(23,25,27),xlwt.easyxf(num_format_str='h:mm:ss')) 
ws.write(3, 0, datetime.time(23,25,27),xlwt.easyxf(num_format_str='h:mm AM/PM')) 
ws.write(3, 0, datetime.time(23,25,27),xlwt.easyxf(num_format_str='mm:ss')) wb.save('output-style-date-time.xls')

生成的文件:

前面的例子介绍了怎么设置数值格式,下面是一个设置字体、对齐方式、边框等格式的例子:

wb = xlwt.Workbook()
ws = wb.add_sheet('juzicode')xf=xlwt.easyxf('font: bold on; align: wrap on, vert centre, horiz center',num_format_str='dd/mm/yyyy') #加粗,中心对齐
ws.write(0, 0, datetime.date(2025,1,31),xf) 
ws.col(0).width=50*256    # 256表示默认为1个字符宽度,这里设置50个字符跨度xf=xlwt.easyxf('font: bold on, height 500 ; align: wrap on, vert top, horiz left',num_format_str='dd/mm/yyyy') #设置字体大小为500,加粗,左上对齐
ws.write(1, 0, datetime.date(2025,1,31),xf) 
ws.row(1).height_mismatch = True # 打开设置高度开关
ws.row(1).height = 60*20   # 20表示默认为1磅高度,这里设置行高为60磅xf=xlwt.easyxf('font: bold on ; border: top 5, bottom 5,left 5, right 5',num_format_str='h:mm:ss')     # 边框加粗
ws.write(2, 0, datetime.time(23,25,27),xf)  xf=xlwt.easyxf('font: italic on; pattern: pattern solid, fore-colour red',num_format_str='$#,##0.00000') #  italic字体,红底
ws.write(3, 0, 3.14159265,xf)  wb.save('output-style-font-align.xls')

生成的文件:

 

tips

1、excel表格数值格式( num_format_str )的取值可以参考:打开excel文件–选中一个单元格–右键点击单元格–设置单元格格式–数字–自定义–类型。

2、xlwt当前的版本仅支持xls格式excel文件的写入,不支持xlsx格式。

扩展阅读:

  1. Python桔子教程
  2. Python进阶教程m2d–xlrd读excel

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/841919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java顺序表

Java顺序表 前言一、线性表介绍常见线性表总结图解 二、顺序表概念顺序表的分类顺序表的实现throw具体代码 三、顺序表会出现的问题 前言 推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与…

金融序列的布朗运动

https://zhuanlan.zhihu.com/p/659164160 python金融衍生品定价系列之一 —— 布朗运动与伊藤公式 导语:网络上和书本上关于期权定价相关的内容已经较为丰富,但将理论和python代码结合起来讲的却很少,这也是python金融衍生品定价系列的写作初衷,在用python实现相关模型的同…

Rating 计算公式

Rating ⁡ \operatorname{Rating} Rating 计算公式一般有多种,具体公式取决于使用情境和数据结构。 常用的环形排序算法的Rating计算公式是: Rating ⁡ R K ( P − E ) \operatorname{Rating} R K\times(P -E) RatingRK(P−E)其中, R …

春秋云境CVE-2018-20604

简介 雷风影视CMS是一款采用PHP基于THINKPHP3.2.3框架开发,适合各类视频、影视网站的影视内容管理程序,该CMS存在缺陷,可以通过 admin.php?s/Template/edit/path/*web*..*..*..*..*1.txt 的方式读取任意文件。 正文 1.进入靶场 2./admin…

AI学习指南数学工具篇-凸优化在支持向量机(SVM)中的应用

AI学习指南数学工具篇-凸优化在支持向量机(SVM)中的应用 在机器学习领域中,支持向量机(SVM)是一种经典的监督学习算法。SVM通过寻找最佳的超平面来进行分类,其优化核心是基于凸优化理论。本文将详细介绍凸…

【数据结构】二叉树-堆(上)

个人主页~ 二叉树-堆 一、树的概念及结构1、概念2、相关概念3、树的表示4、树的实际应用 二、二叉树的概念和结构1、概念2、特殊二叉树3、二叉树的性质4、二叉树的存储结构(1)顺序存储(2)链式存储 三、二叉树的顺序结构以及实现1、…

【C++】——入门基础知识超详解

目录 ​编辑 1.C关键字 2. 命名空间 2.1 命名空间定义 2.2 命名空间使用 命名空间的使用有三种方式: 注意事项 3. C输入&输出 示例 1:基本输入输出 示例 2:读取多个值 示例 3:处理字符串输入 示例 4:读…

Python并发编程大揭秘:打造你的多任务处理超能战队!

今天给大家带来的是学习如何构建一个能够同时处理海量任务的超级团队。从简单的线程和锁,到复杂的异步IO和多进程部署,每一个工具都像是你团队中的一员,各有所长,共同协作! 文章目录 Python进阶之并发和并行编程详解1.…

【Linux-INPUT输入的子系统】

Linux-INPUT输入的子系统 ■ input 子系统简介■ input 驱动编写流程■ ■ input 子系统简介 input 子系统就是管理输入的子系统, input 子系统分为 input 驱动层、 input 核心层、 input 事件处理层,最终给用户空间提供可访问的设备节点 ■ input 驱…

leetcode打卡#day39 738. 单调递增的数字

738. 单调递增的数字 class Solution { public:int monotoneIncreasingDigits(int N) {string strNum to_string(N);// flag用来标记赋值9从哪里开始// 设置为这个默认值,为了防止第二个for循环在flag没有被赋值的情况下执行int flag strNum.size();for (int i …

【Linux-中断】

Linux-中断 ■■■ ■■■ ■■■ ■ ■ ■ ■ ■ ■ ■ ■ ■

React类组件生命周期详解

在React的类组件中,从组件创建到组件被挂载到页面中,这个过程react存在一系列的生命周期函数,最主要的生命周期函数是componentDidMount、componentDidUpdate、componentWillUnmount 生命周期图例如下 1. componentDidMount组件挂载 如果你…

S1E45:单链表1 课后作业

测试题:0. 相比起数组来说,单链表具有哪些优势呢? 答:长度非固定,可以申请添加长度 答案:对于数组来说,随机插入或者删除其中间的某一个元素,都是需要大量的移动操作,而…

网络攻击攻击之-远程命令执行/RCE告警运营分析篇

在各种网络安全产品的告警中,远程命令执行是一种非常常见的告警。本文将从远程命令执行的定义,远程命令执行利用的流量数据包示例,远程命令执行的suricata规则,远程命令执行的告分析警研判,远程命令执行的处置建议等几个方面阐述如何通过IDS/NDR,态势感知等流量平台的远程…

深入解析RPC技术:原理、实现与应用

RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议,允许一个程序(客户端)在本地调用另一个程序(服务器)中的函数或方法,并获取返回结果,就像调用…

栈和队列的区别

栈和队列是两种常用的数据结构,它们在数据的存取方式、适用场景和基本操作上有显著的区别。以下是它们的详细区别: 1. 存取方式 栈(Stack): 后进先出(LIFO, Last In First Out):最…

C++:STL简介和容器string用法篇

一、STL简介 STL是C中的标准模板库(Standard Template Library)的缩写。它是C标准库的一部分,提供了一系列的数据结构和算法模板,包括各种容器、算法、迭代器、仿函数等,用于简化和加速C程序的开发过程。STL的设计理念…

人形机器人建模与控制(二) - 高级运动学和动态建模

L2: Advanced Kinematic and Dynamic Modeling 这里写目录标题 L2: Advanced Kinematic and Dynamic Modeling1. Introduction2. Kinematic Modeling运动学方程速度的雅可比矩阵雅可比矩阵的两种形式分析雅可比矩阵(Analytical Jacobian)几何雅可比矩阵&…

【波点音乐看广告】

import uiautomator2 as u2 import time from datetime import datetime import xml.etree.ElementTree as ET import re import os 连接设备 d u2.connect() os.system(‘adb shell chmod 775 /data/local/tmp/atx-agent’) os.system(‘adb shell /data/local/tmp/atx-age…

2024年5月系统架构设计师综合知识真题

1.操作系统:先来先服务调度算法 2.操作系统:多道程序设计,利用率 3.操作系统:状态流转错误的,等待态到运行态 4.数据库:2NF 每一个非主属性完全依赖主键 5.数据库:笛卡尔积m*n 6.数据库:不属于事务的特点,并发性 7.数据库:交集表达式:R-(R-S)…