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 datetime

wb = 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 xlwt

wb = 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 datetime

wb = 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数字图像的几种处理算法

文章目录 1.二值化 2.海报化 3.灰度化 1)分量法 2)最大值法 3) 平均值法 4) 加权平均法 4.模糊化 1.二值化 二值化就是将图像划分成黑和白,通过设定一个标准(如果大于这个标准就设为白,如果小于这个标准,就设为黑&#x…

布鲁可冲刺上市:极其依赖第三方,多个授权将到期,朱伟松突击“套现”

“奥特曼”概念股来了。 近日,布鲁可集团有限公司(下称“布鲁可”)递交招股书,准备在港交所主板上市,高盛和华泰国际为其联席保荐人。据贝多财经了解,布鲁可的经营主体为上海布鲁可科技集团有限公司。 天眼…

Kiwi浏览器 - 支持 Chrome 扩展的安卓浏览器

​【应用名称】:Kiwi浏览器 - 支持 Chrome 扩展的安卓浏览器 ​【适用平台】:#Android ​【软件标签】:#Kiwi ​【应用版本】:124.0.6327.2 ​【应用大小】:233MB ​【软件说明】:一款基于开源项目 Chr…

【Qt 学习笔记】Qt窗口 | 菜单栏 | QMenuBar的使用及说明

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt窗口 | 菜单栏 | QMenuBar的使用及说明 文章编号:Qt 学习…

Python 小游戏——贪吃蛇

Python 小游戏——贪吃蛇 文章目录 Python 小游戏——贪吃蛇项目介绍环境配置代码设计思路1. 初始化和变量定义2. 创建游戏窗口和FPS控制器3. 初始化贪吃蛇和食物的位置4. 控制贪吃蛇的方向和分数5. 主游戏循环 难点分析源代码呈现代码结果 项目介绍 贪吃蛇游戏是一款通过上下…

解析售后维修服务平台如何助力企业高效运营与决策

随着生活质量的不断提高,人们对于售后服务的要求也越来越多。因此,售后服务已经成为企业竞争力的重要组成部分。售后服务平台作为连接企业与消费者的桥梁,不仅关乎着消费者的满意度,而且直接影响着企业的品牌形象与市场地位。那么…

音视频学习规划

文章目录 概述闲聊点 小结 概述 最近在学习音视频,觉得还是要先写个提纲,给自己制定下学习路线及目标。先写下我的个人流程及思路。 ffmpeg的命令ffmpeg api播放器流媒体RTMP,HLS 闲聊点 先说下学习命令行吧,学习命令行是为了…

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第29课-会员制展厅

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第29课-会员制展厅 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎&…

记一次安卓“Low on memory“崩溃问题

前言 最近再调人脸识别算法相关demo,发现调试期间总是偶发性崩溃,捕获不到异常的那种,看日志发现原因是Low on memory,一开始还疑惑 App内存不够应该是OOM啊,怎么会出现这种问题,百思不得其解,直到我打开了 Android s…

HTML+CSS+JS(web前端大作业)~致敬鸟山明简略版

HTMLCSSJS【动漫网站】网页设计期末课程大作业 web前端开发技术 web课程设计 文章目录 一、网站题目 二、网站描述 三、网站介绍 四、网站效果 五、 网站代码 文章目录 一、 网站题目 动漫网站-鸟山明-龙珠超 二、 网站描述 页面分为页头、菜单导航栏(最好可下拉&…

Web Server项目实战2-Linux上的五种IO模型

上一节内容的补充:I/O多路复用是同步的,只有调用某些API才是异步的 Unix/Linux上的五种IO模型 a.阻塞 blocking 调用者调用了某个函数,等待这个函数返回,期间什么也不做,不停地去检查这个函数有没有返回&#xff0c…

前端---闭包【防抖以及节流】----面试高频!

1.什么闭包 释放闭包 从以上看出:一般函数调用一次会把内部的数据进行清除--但是这种操作却可以一起保留局部作用域的数据 // 优点:1、可以读取函数内部的变量 2、让这些变量始中存在局部作用域当中 2.闭包产生的两种业务场景:防抖、节流 2.1防抖 举…

PLC_博图系列☞R_TRIG:检测信号上升沿

PLC_博图系列☞R_TRIG:检测信号上升沿 文章目录 PLC_博图系列☞R_TRIG:检测信号上升沿背景介绍R_TRIG: 检测信号上升沿说明参数示例 关键字: PLC、 西门子、 博图、 Siemens 、 R_TRIG 背景介绍 这是一篇关于PLC编程的文章&a…

【微服务】springboot 构建镜像多种模式使用详解

目录 一、前言 二、微服务常用的镜像构建方案 3.1 使用Dockerfile 3.2 使用docker plugin插件 3.3 使用docker compose 编排文件 三、环境准备 3.1 服务器 3.2 安装JDK环境 3.2.1 创建目录 3.2.2 下载安装包 3.2.3 配置环境变量 2.2.4 查看java版本 3.3 安装maven …

Neural Networks and Deep Learning环境搭建

1.进入Anaconda prompt 2.创建虚拟环境 (1)最简单的创建 python 虚拟环境的命令是: conda create -n your_env_name # your_env_name 为你虚拟环境名(2)我在这里创建一个名为:deep_study的 python2.7版…

Outlook关闭垃圾邮件过滤的方法

Outlook关闭垃圾邮件过滤的方法 | LogDicthttps://www.logdict.com/archives/outlookguan-bi-la-ji-you-jian-guo-lu-de-fang-fa

解决vite打包只生成了一个css和js文件问题

文章目录 1. 打包遇到的问题2. 问题原因及修改3. 调整后再次打包🆗 1. 打包遇到的问题 今天整了一个项目,试了下打包,发下打包后只生成了一个css文件,和一个js文件, 这样肯定是不行的,因为这样这个文件的包…

CSS常用设置

对于前端开发人员来说&#xff0c;最难的一步莫过于CSS&#xff08;是否同感&#xff1f;&#xff09; 在最近的项目中学习了一些CSS设置&#xff0c;特意来分享~ 容器内容水平垂直居中 先准备个容器和内容&#xff08;一个盒子&#xff09; <div id"app">…

Elasticsearch集群许可证过期问题解决方法汇总

最近在使用elasticsearch的过程中,使用elastic-head进行可视化展示集群的状态和信息,从2024年5月18日突然elastic-head无法现在集群的状态界面啦,elasticsearch集群状态是正常,命令如下: curl -X GET "localhost:9200/_cluster/health?pretty" 在google页面上通过…

JavaWeb-JS

目录 学习重点 什么是 JavaScript? Web标准 JS的引入方式 JS的基本语法 JS的函数 JS的对象 JS事件监听 学习重点 js 引入方式 js 基础语法 js 函数 js 对象 js 事件监听 什么是 JavaScript? Web标准 Web 标准也称为网页标准 &#xff0c;由一系列的标准组成&#xff0…