python-读写Excel:xlwings库操作

news2024/11/13 16:21:35

几种操作Excel的python库对比

安装:pip install xlwings

目录

APP实例化对象

工作薄对象

创建工作薄

打开工作薄

工作薄属性

工作表对象

新增工作表

复制表

获取工作表对象

工作表属性

删除和清除表数据及表格式

工作表行高列宽(自动调整)

单元格对象

获取单元格对象

1、字母表示法

2、坐标法

3、切片法

单元格属性

单元格插入内容

name:给单元格命名

value:修改或写入文本内容

add_hyperlink:添加超链接

pictures.add:给单元格添加图片

api.AddComment:添加批注

formula:添加或修改函数表达式

添加统计图表

单元格数据类型设置

  ​编辑

单元格样式设置

autofit:设置单元格自适应宽高

Font:字体样式

Borders:边框样式

api.HorizontalAlignment:单元格对齐方式

合并和取消合并单元格

单元格颜色设置

保存退出操作

将Excel转为PDF文件

保存

关闭和退出


APP实例化对象

参数:visible表示实例化的对象是否可见(值为True时会调用系统默认设置打开Excel文件的程序,如打开wps),add_book表示是否在这个工作簿中默认新增工作表。

import xlwings as xw
app = xw.App(visible=False, add_book=False)  
app.display_alerts = False  # 关闭提示信息
app.screen_updating = False  # 关闭显示更新

工作薄对象

创建工作薄

workbook = app.books.add()   # 创建新的工作簿

打开工作薄

workbook = app.books.open(r'C:\Users\Administrator\Desktop\ceshi.xls')  # 打开指定的工作簿

工作薄属性

print(workbook.name)  # 返回工作簿名字

print(workbook.sheets)  # 返回工作薄中所有sheet表的列表,列表内容为所有工作表对象
for sh_name in workbook.sheets:
    print(sh_name.name)

print(workbook.app)  # 返回工作簿所在的App对象[Excel程序]

工作表对象

新增工作表

创建新的sheet工作表对象,可选before或者after参数,指定插入表格的位置在指定表之前或之后。

workbook.sheets.add('工资表', before='Sheet3') 

复制表

参数:name(可选,str)副本的名字;before(可选,sheet对象)复制到哪个工作表之前;after(可选,sheet对象)复制到哪个工作表之后

sheet1.copy()
sheet1.copy(name='复制表重名命测试', after=sheet1)
sheet1.copy(name='复制表重名命测试2', before=sheet1)

获取工作表对象

有三种不同的方法可以获取表对象:表名、表索引、表序号

sheet1 = workbook.sheets['工资']  # 通过表名获取指定工作表对象
sheet1 = workbook.sheets[0]  # 通过表索引获取指定工作表对象
sheet1 = workbook.sheets(1)  # 通过表需要获取指定工作表对象,注意序号和索引的区别:()根据序号选择,从1开始;[]根据索引选择,从0开始。

工作表属性

有效行used_range.rows和有效列used_range.columns是比较实用的方法,可以方便获取有效数据进行遍历 

print(str(sheet1.name))  # 获取表名
print(sheet1.index)  # 获取当前表的序号(索引加1)
print(sheet1.used_range.rows, sheet1.used_range.columns)  # 获取有效单元格行和列对象


# 获取有效行和有效列
nrow = sheet1.api.UsedRange.Rows.count  # 有效行数,同sheet1.used_range.rows.count,也可通过长度计算len(sheet1.used_range.rows)
ncol = sheet1.api.UsedRange.Columns.count  # 有效列数,同sheet1.used_range.columns.count,,也可通过长度计算len(sheet1.used_range.columns)
print(nrow, ncol)
# 最大行,最大列:结果同有效行和列
print(sheet1.used_range.last_cell.row)
print(sheet1.used_range.last_cell.column)


for i in sheet1.used_range.columns:  # 可通过有效行或列遍历有效数据
    print(i.value)

删除和清除表数据及表格式

sheet1.clear()  # 清除工作表所有内容和格式
sheet1.clear_contents()  # 清除工作表的所有内容但是保留原有格式
sheet1.clear_formats()   # 删除样式但保留文本
sheet1.delete()  # 删除工作表

工作表行高列宽(自动调整)

sheet1.autofit('c')  # 自动调整列宽
sheet1.autofit('r')  # 自动调整行高
sheet1.autofit()  # 自动调整行高列宽,如上可指定axis参数只设置行或列,无参数时同时设置行和列

单元格对象

获取单元格对象

三种不同的获取单元格对象的方法

1、字母表示法
cell = sheet1.range('F1')  # 获取单个单元格对象
more_cells = sheet1.range('B2:F1')  # 获取单元格区域
2、坐标法

一行一列为起始坐标1,1

cell = sheet1.range(2, 3)  # 获取单个单元格对象,第2行3列
more_cell

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

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

相关文章

【hot100篇-python刷题记录】【旋转图像】

R7-矩阵篇 印象题: 思路: 先转置,转置完我们按照列的中间进行对称交换就可以了。 class Solution:def rotate(self, matrix: List[List[int]]) -> None:"""Do not return anything, modify matrix in-place instead.&qu…

【微机原理】指令JZ和JNZ的区别

🌟 嗨,我是命运之光! 🌍 2024,每日百字,记录时光,感谢有你一路同行。 🚀 携手启航,探索未知,激发潜能,每一步都意义非凡。 JZ(Jump …

祝贺严建兵教授任华中农业大学校长

公众号:生信漫谈,获取最新科研信息! 祝贺严建兵教授任华中农业大学校长https://mp.weixin.qq.com/s?__bizMzkwNjQyNTUwMw&mid2247487040&idx1&sn6800055c9944754be11dc77a30ee1906&chksmc0e9ebb0f79e62a64634d5cd057578ca5…

Java 入门指南:Java 并发编程 —— AQS、AQLS、AOS 锁与同步器的框架

AQS AQS 是 AbstractQueuedSynchronizer 的缩写,即 抽象队列同步器,是 Java.util.concurrent 中的一个基础工具类,用于实现同步器(Synchronizer)的开发。 AQS 提供了一种实现锁和同步器的框架,使用 AQS 能…

Mysql高级篇(上)

Mysql高级篇(上) Mysql架构介绍(一)1、Linux环境下的MySQL的安装与使用2、MySQL请求到响应字符集变化(了解)3、MySQL8 的主要目录结构4、数据库和文件系统关系(1)默认数据库(2)数据库…

C语言程序设计之基础易错题锦集6

C语言程序设计之基础易错题锦集6 问题 6_0解析 6_0 问题 6_0 将形参 s 所指字符串中字母字符顺序前移,其他字符顺序后移,处理后将新字符串的首地址作为函数值返回。 例如:输入 :“asd123fgh456df”, 输出:“a…

React基础面试题

React 面试题 以下是面试官最有可能问到的 50 个 React 面试题和答案。为方便你学习,我对它们进行了分类: 基本知识React 组件React ReduxReact 路由 基本知识 1. 区分Real DOM和Virtual DOM Real DOMVirtual DOM1. 更新缓慢。1. 更新更快。2. 可以…

简化理解:Tomcat 和 Servlet 规范

有时候,我们会把复杂的技术概念弄得很复杂,其实这些东西可以用更简单的语言来理解。我们来看看 Tomcat 和 Servlet 规范到底是怎么回事。 1. 什么是 Servlet 规范? 简单来说,Sun 公司(现在是 Oracle)定了…

YOLOv9改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型

一、本文介绍 本文记录的是基于MobileNet V3的YOLOv9目标检测轻量化改进方法研究。MobileNet V3的模型结构是通过网络搜索得来的,其中的基础模块结合了MobileNet V1的深度可分离卷积、MobileNet V2的线性瓶颈和倒置残差结构以及MnasNet中基于挤压和激励的轻量级注意…

注意力机制(Attention mechanism)(上篇)

在图像识别的时候,假设输入的图像大小都是一样的。但如果问题变得复杂,如图1所 示,输入是一组向量,并且输入的向量的数量是会改变的,即每次模型输入的序列长度都不一 样,这个时候应该要怎么处理呢&#xff…

随笔十、音频扩展模块测试

本项测试简单,对购买的音频扩展模块进行录音放音测试 按照使用说明,连接音频小板,一个喇叭一个麦克风,4根线,buildroot系统镜像 录音测试 rootRK356X:/# arecord -c 1 -r 44100 -f S16_LE /tmp/record.wav Recording …

Java-多线程入门

多线程是指在软件或硬件上实现多个线程并发执行的技术。为了更好地理解多线程,首先需要了解几个基本概念: 了解概念 1.程序 程序是为完成特定任务、用某种语言编写的一组指令的集合。它是一个静态的概念,通常存储在磁盘或其他非易失性存储器…

vxe-table 更新到最新版本

当前版本: "vxe-table": "^4.3.0-beta.3" 更新后: "vxe-table": "^4.7.75" 需要调整代码: 更改前main.js 更改后:

Jenkins Environment Injector Plugin 插件详解

引言 在做自动化测试的过程中,我们需要经常发送测试报告给相关研发、产品和上级,但是Jenkins邮件模板不支持Javascritpt脚本来动态生成数据,只支持静态的HTML代码,那么我们就没有办法了吗?非也,我们可以通…

SQL进阶技巧:经典问题题-换座位

目录 0 问题描述 1 数据准备 2 问题分析 3 小结 0 问题描述 表 seat中有2个字段id和student id 是该表的主键(唯一值)列,student表示学生姓名。 该表的每一行都表示学生的姓名和 ID。 id 是一个连续的增量。 编写解决方案来交换每两个连续的学生的座位号。如果学生的数量…

Windows下Nacos安装与配置

目录 1. 下载Nacos 2. 解压安装包 3. 配置系统环境变量 4. 启动Nacos 5. 配置数据库为mysql 6. 配置鉴权默认值 1. 下载Nacos 我下载的版本是2.3.0。 下载地址:Nacos Server 下载 | Nacos 官网 但是我从官方那里下载超级慢,找了一个链接下载&#…

Milvus 向量数据库进阶系列丨构建 RAG 多租户/多用户系统 (下)

本系列文章介绍 在和社区小伙伴们交流的过程中,我们发现大家最关心的问题从来不是某个具体的功能如何使用,而是面对一个具体的实战场景时,如何选择合适的向量数据库解决方案或最优的功能组合。在 “Milvus 向量数据库进阶” 这个系列文章中&a…

Python将两个Excel文件按相同字段合并到一起

在工作中我们需要将两个有关联的数据文件合并成一个Excel 1. 创建两个excel文件 test1 test2 2. 使用Pandas 数据分析工具进行合并 Pandas 一个强大的分析结构化数据的工具集,提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据&#x…

Linux操作系统软件管理

一.软件安装包类型 1.常见软件安装包格式 源码软件 .tar.gz,.tar.bz2 优点:从功能使用的角度来讲,比rpm软件安装包更加灵活, 比如 在使用源码软件安装包的时候,可以自行选择安装软件的目录,这样操作便…

TypeScript与vue

一、为组件的props标注类型 - 在没有使用TS之前,是这样接受props: - 在TS环境中,是这样接受props: - 对于props的可选项如何限制呢? 1、类型限制 类型限制在接收的时候就已经定义好了 2、可选属性(必填限制…