[python3]Excel解析库-xlwings

`xlwings` 是一个强大的 Python 库,它允许你直接与 Microsoft Excel 进行交互。通过 `xlwings`,你可以轻松地在 Python 脚本或 Jupyter Notebook 中读取、写入和操作 Excel 文件,而无需手动打开 Excel 应用程序。此外,`xlwings` 还支持将 Python 函数作为宏(User Defined Functions, UDFs)嵌入到 Excel 中,从而扩展了 Excel 的功能。

安装

要使用 `xlwings`,首先需要安装它。可以通过 `pip` 来安装最新版本:

```bash
pip install xlwings
```

对于 Windows 用户,还需要确保已经安装了 Microsoft Excel。Mac 用户则可以使用自带的 Numbers 或者安装 Excel for Mac。

基本用法

#### 创建新的工作簿```python
import xlwings as xw# 创建一个新的工作簿
wb = xw.Book()# 获取活动的工作表
sheet = wb.sheets[0]# 写入数据到单元格
sheet.range('A1').value = 'Hello'
sheet.range('B1').value = 'World'# 保存文件
wb.save('example.xlsx')# 关闭工作簿
wb.close()
```#### 打开现有的工作簿```python
# 打开现有的工作簿
wb = xw.Book('existing_file.xlsx')# 获取所有工作表的名字
print(wb.sheet_names)# 选择特定的工作表
sheet = wb.sheets['Sheet1']# 或者通过索引获取第一个工作表
sheet = wb.sheets[0]
```#### 读取和写入数据```python
# 写入单个值
sheet.range('A1').value = 'Hello'# 写入多个值
sheet.range('A2').options(transpose=True).value = ['Python', 'is', 'awesome']# 读取单个值
cell_value = sheet.range('A1').value
print(cell_value)  # 输出: Hello# 读取多个值
cell_values = sheet.range('A2:A4').value
print(cell_values)  # 输出: ['Python', 'is', 'awesome']
```#### 遍历工作表中的行和列```python
# 遍历所有非空行
for row in sheet.used_range.rows:print([cell.value for cell in row])# 遍历指定范围内的行
for row in sheet.range('A1:B3').rows:print([cell.value for cell in row])
```#### 添加图表```python
import numpy as np# 准备一些数据
data = np.random.rand(5, 3)
sheet.range('A1').value = data# 插入柱状图
chart = sheet.charts.add(left=200, top=20, width=400, height=300)
chart.set_source_data(sheet.range('A1:C6'))
chart.chart_type = 'column_clustered'
```### 高级特性#### 将 Python 函数作为宏嵌入到 Excel 中`xlwings` 支持将 Python 函数注册为 Excel 中的 UDF(用户定义函数),这使得你可以在 Excel 公式中调用 Python 代码。1. **创建一个包含 UDF 的 Python 文件**:```pythonimport xlwings as xw@xw.funcdef hello(name):return f"Hello {name}!"```2. **在 Excel 中运行 Python 函数**:- 在 Excel 中按 `Alt + F11` 打开 VBA 编辑器。- 插入模块并添加以下代码来启动 Python 解释器:```vbaSub RunPython()RunPython ("import udf_module; udf_module.hello('World')")End Sub```- 或者直接在 Excel 单元格中使用公式调用 Python 函数:```excel=hello("World")```#### 使用 `xlwings` 与 Pandas 结合`xlwings` 和 `pandas` 结合得非常好,可以方便地将 DataFrame 读入或写出 Excel 文件。```python
import pandas as pd
import xlwings as xw# 创建一个示例 DataFrame
df = pd.DataFrame({'Column1': [1, 2, 3],'Column2': ['A', 'B', 'C']
})# 写入 DataFrame 到 Excel
wb = xw.Book()
sheet = wb.sheets[0]
sheet.range('A1').value = df# 从 Excel 读取 DataFrame
df_from_excel = sheet.range('A1').options(pd.DataFrame, expand='table').value
print(df_from_excel)
```### 示例:完整代码示例以下是一个完整的例子,演示了如何使用 `xlwings` 创建包含图表的工作簿,并将其保存到文件系统中:```python
import xlwings as xw
import numpy as npdef create_workbook_with_chart():# 创建一个新的工作簿wb = xw.Book()# 获取活动的工作表sheet = wb.sheets[0]# 准备一些随机数据data = np.random.rand(5, 3)sheet.range('A1').value = data# 插入柱状图chart = sheet.charts.add(left=200, top=20, width=400, height=300)chart.set_source_data(sheet.range('A1:C6'))chart.chart_type = 'column_clustered'# 保存文件wb.save('workbook_with_chart.xlsx')# 关闭工作簿wb.close()if __name__ == "__main__":create_workbook_with_chart()
```

总结

`xlwings` 是一个非常灵活且功能丰富的库,适用于需要与 Excel 紧密集成的应用场景。它不仅简化了 Python 和 Excel 之间的数据交换,还提供了将 Python 逻辑嵌入 Excel 的强大能力。

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

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

相关文章

Kafka 消费者专题

目录 消费者消费者组消费方式消费规则独立消费主题代码示例(极简)代码示例(独立消费分区) offset自动提交代码示例(自动提交)手动提交代码示例(同步)代码示例(异步&#…

【游戏设计原理】47 - 超游戏思维

对于这条原理,我首先想到的是开放世界,或者探索性游戏,这是最能包容各类玩家的游戏类型。这类游戏定义了基本规则,玩家的可操作性很强。就像上图里的沙池一样,里面有滑梯,是规则性比较明确的,而…

奥迪TT MK1(初代奥迪TT、第一代奥迪TT)仪表盘故障/不精准/水温/剩余油量不准,如何修复、测试、复位?

故障现象 水温不准,冷启动就130℃汽油加满,指针依然在中间偏左的位置 如下图: 诊断过程 通过VAG KKL 409 USB OBD接口读取水温和油位数值正常,故判断是仪表指针马达损坏或需要重置指针位置 维修步骤 推荐选择CH340(老…

Nginx——服务器端集群搭建与扩展模块(五/五)

目录 1.Nginx实现服务器端集群搭建1.1.Nginx 与 Tomcat 部署1.1.1.环境准备 (Tomcat)1.1.2.环境准备 (Nginx) 1.2.Nginx实现动静分离1.2.1.概述1.2.2.需求分析1.2.3.动静分离实现步骤 1.3.Nginx 实现 Tomcat 集群搭建1.4.Nginx 高可用解决方案1.4.1.概述1.4.2.Keepalived 介绍1…

轻量级通信协议 JSON-RPC 2.0 详解

目录 JSON-RPC 2.0 简介 请求对象 响应对象 通知 批量请求 错误码 使用场景 文档和版本控制 社区和支持 小结 参考资料 JSON-RPC 2.0 简介 JSON-RPC (JavaScript Object Notation - Remote Procedure Call) 是一种轻量级的远程过程调用协议,使用 JSON&am…

ffmpeg之h264格式转yuv

h264格式转yuv详细步骤 初始化FFmpeg库:通过av_register_all()来初始化必要的组件。打开输入文件并查找解码器:使用avformat_open_input和 avcodec_find_decoder 打开H.264文件,并查找视频流。分配并配置解码上下文:使用 avcodec…

创建VUE脚手架

1.输入 npm create vuelatest2.创建完成

vue3如何实现防抖?

第一 防抖就是我们设置一个调用时间&#xff0c;点击后设置时间开始倒计时&#xff0c;如果再次点击会重新倒计时 npm或yarn安装&#xff1a; npm install lodash <template><div click"debouncedInputHandler"><button>打印</button>…

JavaWeb开发(六)XML介绍

1. XML介绍 1.1. 什么是XML &#xff08;1&#xff09;XML 指可扩展标记语言(EXtensible Markup Language)XML 是一种很像HTML的标记语言。   &#xff08;2&#xff09;XML 的设计宗旨是传输数据(目前主要是作为配置文件)&#xff0c;而不是显示数据。   &#xff08;3&a…

用shell把(1到100)100个整数写入到二进制文件

author: hjjdebug date: 2025年 01月 05日 星期日 16:14:41 CST description: 用shell把(1到100)100个整数写入到二进制文件 1. 问题分析(需求分析) 在c语言下, 整数int 是按4个字节存储的,能表示最大0xffffffff的范围 但shell并没有一条命令能够实现把一个整数写入二进制文件…

SpringBoot下载文件的几种方式

小文件&#xff1a;直接将文件一次性读取到内存中&#xff0c;文件大可能会导致OOM GetMapping("/download1")public void download1(HttpServletResponse response) throws IOException {// 指定要下载的文件File file new File("C:\\Users\\syd\\Desktop\\do…

Flink使用

Window下启动支持 下载或复制老版本的放在bin目录下即可&#xff1b; flink.bat echo off setlocalSET bin%~dp0 SET FLINK_HOME%bin%.. SET FLINK_LIB_DIR%FLINK_HOME%\lib SET FLINK_PLUGINS_DIR%FLINK_HOME%\pluginsSET JVM_ARGS-Xmx512mSET FLINK_JM_CLASSPATH%FLINK_LI…

Python基础知识回顾-数据结构

Tuple 在 Python 中&#xff0c;我们经常使用 Tuple 来将相关数据分组。Tuple 指的是有序且不可变的元素集合。 形式&#xff1a;通常以逗号分隔的元素写在括号"() "中。 数据类型和索引&#xff1a;包含 String、整数和浮点数&#xff0c;并使用正索引和负索引访问…

8. C++ 面向对象之特性一(封装)

面向对象主要包括三大类&#xff1a;封装&#xff0c;继承&#xff0c;多态 1.类和对象 c认为&#xff0c;万物皆为对象&#xff0c;对象上有其属性和行为 人可以作为对象&#xff0c;属性有姓名、年龄、身高、体重...&#xff0c;行为有走、跑、跳、吃饭、唱歌... 车也可以作…

WebRtc02:WebRtc架构、目录结构、运行机制

整体架构 WebRtc主要分为三层&#xff1a; CAPI层&#xff1a;外层调用Session管理核心层&#xff1a;包括视频引擎、音频引擎、网络传输 可由使用者重写视频引擎&#xff1a;编解码器、视频缓存、视频增强音频引擎&#xff1a;编解码器、音频缓存、回音消除、降噪传输&#x…

【Qt】快速添加对应类所需的头文件包含

快速添加对应类所需的头文件包含 一&#xff0c;简介二&#xff0c;操作步骤 一&#xff0c;简介 本文介绍一下&#xff0c;如何快速添加对应类所需要包含的头文件&#xff0c;可以提高开发效率&#xff0c;供参考。 二&#xff0c;操作步骤 以QTime类为例&#xff1a; 选中…

Apache MINA 反序列化漏洞CVE-2024-52046

漏洞描述&#xff1a; Apache MINA 是一个功能强大、灵活且高性能的网络应用框架。它通过抽象网络层的复杂性&#xff0c;提供了事件驱动架构和灵活的 Filter 链机制&#xff0c;使得开发者可以更容易地开发各种类型的网络应用。 Apache MINA 框架的 ObjectSerializationDeco…

服务器docker配置过程

1.docker安装 参考官方文档&#xff1a;https://docker.cadn.net.cn/manuals/engine_install_ubuntu 2.docker镜像源替换 官方文档&#xff1a;https://cloud.tencent.com/document/product/1207/45596 镜像源根据你租了哪家的去找官方文档即可。

RabbitMQ通过代码创建交换机和队列

常见交换机 RabbitMQ提供的交换机一共的四种&#xff0c;分别是&#xff1a; 1. Fanout&#xff1a;采用广播形式来发送消息&#xff0c;会将消息路由到所有绑定了的队列之中。 2. Direct&#xff1a;通过Binding Key与队列绑定&#xff0c;生产者在发送信息的时候会通过Routin…

js es6 reduce函数, 通过规格生成sku

const specs [{ name: 颜色, values: [红色, 蓝色, 绿色] },{ name: 尺寸, values: [S, M, L] } ];function generateSKUs(specs) {return specs.reduce((acc, spec) > {const newAcc [];for (const combination of acc) {for (const value of spec.values) {newAcc.push(…