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具体代码 三、顺序表会出现的问题 前言 推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与…

春秋云境CVE-2018-20604

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

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

个人主页~ 二叉树-堆 一、树的概念及结构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 驱…

React类组件生命周期详解

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

S1E45:单链表1 课后作业

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

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

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

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

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

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

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

shell脚本开发基础

shell脚本开发基础 什么是linux内置命令?什么是外置命令 内置命令:在系统启动时就加载入内存,常驻内存,执行效率更高,但是占用资源,cd 外置命令:系统需要从硬盘中读取程序文件,再读…

第八篇【传奇开心果系列】Python微项目技术点案例示例:以微项目开发为案例,深度解读Dearpygui 编写图形化界面桌面程序的优势

传奇开心果博文系列 系列博文目录Python微项目技术点案例示例系列 博文目录前言一、开发图形化界面桌面程序的优势介绍二、跨平台特性示例代码和解析三、高性能特性示例代码和解析四、简单易用特性示例代码和解析五、扩展性强示例代码和解析六、现代化设计示例代码和解析七、知…

什么是云渗透测试?

推荐阅读: 什么是安全态势? 什么是人肉搜索 什么是恶意软件? 什么是数字取证? 什么是语音网络钓鱼? 什么是网络安全中的社会工程? 什么是网络安全中的威胁情报? 什么是端点检测和响应 (…

linux 阿里云服务器安装ImageMagick和php扩展imagick

操作系统版本 Alibaba Cloud Linux 3.2104 LTS 64位 # 1.安装ImageMagick yum install -y ImageMagick ImageMagick-devel # 没有pecl要先安装pecl 和头文件 sudo yum install php-devel # 2.pecl 安装扩展 pecl install imagick #寻找所有php.ini文件 find / -name php.…

静态随机存储器(SRAM)

目录 介绍 基本的 SRAM 存储单元阵列 1. SRAM 存储单元 2. SRAM 阵列 3. SRAM 阵列的读写操作 4. SRAM 阵列的扩展 5. SRAM 阵列的应用 6. SRAM 阵列的优缺点 基本的 SRAM 逻辑结构 1. 存储单元 2. 存储单元阵列 3. 译码器 4. 读写电路 5. 控制逻辑 6. SRAM 逻辑…

【前端之ES6语法】

前端之ES6语法 1. ES6简介2. ES6新特性3.ES6不支持,使用babel3.1 参考文献 4.let和const命令5. 模版字符串6.函数之默认值、剩余参数7. 函数之扩展运算符、箭头函数8.箭头函数this指向和注意事项9.解构赋值10.对象扩展11.Symbol类型12.Set集合类型13.Map数据类型14.…

React自定义Componment和State深层次理解-07

本节主要从底层原理上分析下React开发相关的内容和注意事项,本节会围绕使用展开,而非源码讲解。 Componment详解 什么是组件 在 MVVM架构出现之前,组件主要分为两种。 狭义上的组件,又称为 UI 组件,比如 Tabs 组件、…

Java计算日期相差天数的几种方法

Java计算日期相差天数的几种方法 🗓️ Java计算日期相差天数的几种方法摘要引言一、使用java.util.Date和java.util.Calendar📅1. 使用java.util.Date示例代码 2. 使用java.util.Calendar示例代码 二、使用java.time.LocalDate📆示例代码 三、…

微信小程序文本框输入显示已经输入的字数

我们遇到这样的需求,就是微信小程序的输入框下面需要显示输入的字数: 我们通常会使用bindinput事件,让显示的字数等于value的长度,看下面的图: 但在实践中,真机测试中,我们会发现以下问题: 这个…