当前位置: 首页 > news >正文

Python 之 Excel 表格常用操作

示例文件 test.xlsx

   

将各个表单拆分成单独的 Excel 文件

import os.pathimport openpyxl
import pandasdef handle_excel(file_path):dirname = os.path.dirname(file_path)basename = os.path.basename(file_path).split(".")[0]wb = openpyxl.load_workbook(file_path)sheet_names = wb.sheetnamesprint(sheet_names)for sheet_name in sheet_names:sheet_info = pandas.read_excel(file_path, dtype='str', sheet_name=sheet_name)new_file_path = os.path.join(dirname, f"{basename}_{sheet_name}.xlsx")print(new_file_path)sheet_info.to_excel(new_file_path, index=False)if __name__ == '__main__':file_path = os.path.join(os.getcwd(), "test.xlsx")handle_excel(file_path)
['Sheet1', 'Sheet2']
E:\lky_project\tmp_project\test_project\test_Sheet1.xlsx
E:\lky_project\tmp_project\test_project\test_Sheet2.xlsx

数据分组后按分组结果生成多个 Excel

import os.pathimport openpyxl
import pandasdef handle_excel(file_path):dirname = os.path.dirname(file_path)basename = os.path.basename(file_path).split(".")[0]wb = openpyxl.load_workbook(file_path)sheet_names = wb.sheetnamesprint(sheet_names)sheet_name = sheet_names[1]sheet_info = pandas.read_excel(file_path, dtype='str', sheet_name=sheet_name)group_info = sheet_info.groupby("省份")for key, value in group_info:print(key, value)new_file_path = os.path.join(dirname, f"{basename}_{sheet_name}_{key}.xlsx")print(new_file_path)value.to_excel(new_file_path, index=False)if __name__ == '__main__':file_path = os.path.join(os.getcwd(), "test.xlsx")handle_excel(file_path)
['Sheet1', 'Sheet2']
四川序号  省份 月份  金额
0  1  四川  1  10
1  2  四川  2  20
E:\lky_project\tmp_project\test_project\test_Sheet2_四川.xlsx
陕西序号  省份 月份  金额
2  3  陕西  1  30
E:\lky_project\tmp_project\test_project\test_Sheet2_陕西.xlsx

对 Excel 有效使用区域进行截图保存

import os.path
import xlwings
from PIL import ImageGrab, Image
from xlwings._xlwindows import COMRetryObjectWrapper, App
from win32com.client import DispatchExdef handle_excel(file_path):_xl = COMRetryObjectWrapper(DispatchEx("ket.Application"))impl = App(visible=False, add_book=False, xl=_xl)app = xlwings.App(visible=False, add_book=False, impl=impl)  # 如果运行中不想看到打开 Excel 的操作,设置 visible 为 Falsewb = app.books.open(file_path)sheet = wb.sheets["Sheet1"]all = sheet.used_range  # 获取表格数据使用范围# all = sheet.range("Sheet1!$A$1:$E$4")  # 带表单名称# all = sheet.range("$A$1:$E$4")  # 也可以自定义数据范围,通过对角元素的坐标进行范围限定print(all)all.api.CopyPicture()  # 复制使用范围sheet.api.Paste()  # 粘贴pic = sheet.pictures[0]  # 获取当前图片pic.api.Copy()  # 复制图片到剪切板img = ImageGrab.grabclipboard()  # 获取剪切板的图片数据x, y = img.sizep = Image.new('RGBA', img.size, (255, 255, 255))  # 重新设置背景颜色,不然背景是透明的p.paste(img, (0, 0, x, y), img)  # 将截图粘贴到图片对象p.save("test.png")  # 图片保存pic.delete()  # 删除 sheet 表单粘贴的图片,避免截图影响 Excel 原始数据# wb.save()  # 保存退出wb.close()app.quit()if __name__ == '__main__':file_path = os.path.join(os.getcwd(), "test_Sheet2_四川.xlsx")handle_excel(file_path)

当然,也可以自定义数据截图范围。 

上传文件自动选择

这个和 Excel 没有关系,夹带的私货。

在打开的 windows 窗口自动选择文件并确认

import os.path
import time
import win32con
import win32gui# 自动选择文件并确认
def file_upload(file):retry_times = 3while retry_times > 0:time.sleep(3)dialog = win32gui.FindWindow('#32770', '打开')if dialog:breakretry_times -= 1time.sleep(3)ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None)ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None)Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None)Button = win32gui.FindWindowEx(dialog, 0, 'Button', None)win32gui.SendMessage(Edit, win32con.WM_SETTEXT, None, file)time.sleep(1)win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, Button)time.sleep(1)return Trueif __name__ == '__main__':file = os.path.join(os.getcwd(), "test.txt")print(file)file_upload(file)

pip 本地安装依赖包出现 ERROR: No matching distribution found for 报错时:

pip install --no-build-isolation --no-index --find-links=./ fairscale

切换输入法为英文

import win32api
import win32con
import win32guiLANGUAGE = {'ZH': 0x0804,  # 中文(中国)"EN": 0x0409,  # 英语(美国) 美式键盘
}def change_language(language="EN"):language = LANGUAGE.get(language)hwnd = win32gui.GetForegroundWindow()win32api.SendMessage(hwnd, win32con.WM_INPUTLANGCHANGEREQUEST, 0, language)if __name__ == '__main__':change_language('EN')

切换成功以后,右下角的输入法展示会显示一个 ENG 的图标,如果你本身没有安装英文输入法的话是没办法切换的哟。

相关文章:

Python 之 Excel 表格常用操作

示例文件 test.xlsx 将各个表单拆分成单独的 Excel 文件 import os.pathimport openpyxl import pandasdef handle_excel(file_path):dirname os.path.dirname(file_path)basename os.path.basename(file_path).split(".")[0]wb openpyxl.load_workbook(file_pat…...

2025春招 SpringCloud 面试题汇总

大家好,我是 V 哥。SpringCloud 在面试中属于重灾区,不仅是基础概念、组件细节,还有高级特性、性能优化,关键是项目实践经验的解决方案,都是需要掌握的内容,正所谓打有准备的仗,秒杀面试官&…...

jupyter版本所引起的扩展插件问题

文章目录 如何永久切换python安装源为https://mirrors.aliyun.com/pypi/simple方法一:通过配置文件永久设置(推荐)步骤 1:创建或修改 pip 配置文件步骤 2:验证配置是否生效 方法二:通过命令行直接配置效果验…...

01机器学习入门

机器学习入门可以分为以下几个阶段,逐步掌握核心概念和技能: 1. 基础准备 数学基础 线性代数:矩阵运算、向量空间(推荐《线性代数及其应用》)。概率与统计:概率分布、贝叶斯定理、假设检验(推…...

实现一个安全且高效的图片上传接口:使用ASP.NET Core和SHA256哈希

实现一个安全且高效的图片上传接口:使用ASP.NET Core和SHA256哈希 在现代Web应用程序中,图片上传功能是常见的需求之一。无论是用户头像、产品图片还是文档附件,确保文件上传的安全性和效率至关重要。本文将详细介绍如何使用ASP.NET Core构建…...

PyTorch中的movedim、transpose与permute

在PyTorch中,movedim、transpose 和 permute这三个操作都可以用来重新排列张量(tensor)的维度,它们功能相似却又有所不同。 movedim 🔗 torch.movedim 用途:将张量的一个或多个维度移动到新的位置。参数&…...

HTTP(1)

HTTP协议 HTTP是什么 HTTP(全称为"超文本传输协议")是一种应用非常广泛的基于TCP协议的应用层协议。 常见的应用场景: 浏览器与服务器之间的交互(访问网站)手机与服务器之间的通信多个服务器之间进行通信 …...

C#常考随笔2:函数中多次使用string的+=处理,为什么会产生大量内存垃圾(垃圾碎片),有什么好的方法可以解决?

在 C# 中,由于string类型是不可变的,当在函数中多次使用操作符来拼接字符串时,每次操作都会创建一个新的string对象,旧的对象则成为垃圾对象,这会导致大量的内存分配和垃圾回收,产生内存垃圾和碎片。 在需…...

leetcode刷题记录(一百)——121. 买卖股票的最佳时机

(一)问题描述 121. 买卖股票的最佳时机 - 力扣(LeetCode)121. 买卖股票的最佳时机 - 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并…...

MATLAB绘图时线段颜色、数据点形状与颜色等设置,介绍

MATLAB在绘图时,设置线段颜色和数据点的形状与颜色是提高图形可读性与美观性的重要手段。本文将详细介绍如何在 MATLAB 中设置这些属性。 文章目录 线段颜色设置单字母颜色表示法RGB 值表示法 数据点的形状与颜色设置设置数据点颜色和形状示例代码 运行结果小结 线段…...

CIMRTS材质美化--放大采样、缩小采样

最新的CIMRTS v1.0.10中在要素管理中的材质美化增加「放大采样」和「缩小采样」参数,对于透明树叶可以达到较好效果。 在CesiumLab中,一棵树处理完成后,在EarthSDK中,就是呈现这样缩小就会有树叶丢失的情况。效果如下&#xff1a…...

P8738 [蓝桥杯 2020 国 C] 天干地支

两种方法 #include<bits/stdc.h> using namespace std;int main(){int year;cin>>year;string tg[10] {"geng", "xin", "ren", "gui","jia", "yi", "bing", "ding", "wu&…...

PyCharm接入DeepSeek实现AI编程

目录 效果演示 创建API key 在PyCharm中下载CodeGPT插件 配置Continue DeepSeek 是一家专注于人工智能技术研发的公司&#xff0c;致力于开发高性能、低成本的 AI 模型。DeepSeek-V3 是 DeepSeek 公司推出的最新一代 AI 模型。其前身是 DeepSeek-V2.5&#xff0c;经过持续的…...

Java编程语言:辉煌的历史与未来前景

如果将软件开发世界比喻成一个宇宙&#xff0c;Java 无疑是其中最亮的星星之一。它从诞生起就改变了软件开发世界的格局。发展到今天&#xff0c;Java仍然是这个世界上最重要的编程语言之一。当然&#xff0c;它也面临着新的挑战。 Java的诞生 回溯到 1991 年&#xff0c;在 …...

麦田物语学习笔记:保存和加载场景中的物品

目录 基本流程 1.代码思路 2.代码实现 最终效果 补充知识点 1.序列化 2.委托 基本流程 现在在切换场景后,场景中的物品即使被拾取了,也还是会被重新加载出来,所以本篇文章的任务是在切换场景前后能保留当前场景的数据 1.代码思路 (1)为了保留处在地上的物品数据,就需要…...

页高速缓存与缓冲区缓存的应用差异

页高速缓存&#xff08;Page Cache&#xff09;与缓冲区缓存&#xff08;Buffer Cache&#xff09;是计算机系统中用于提高数据访问性能的两种不同类型的缓存机制&#xff0c;它们的差异主要体现在以下几个方面&#xff1a; 缓存目的 页高速缓存&#xff1a;主要用于加速对磁…...

深度学习 Pytorch 单层神经网络

神经网络是模仿人类大脑结构所构建的算法&#xff0c;在人脑里&#xff0c;我们有轴突连接神经元&#xff0c;在算法中&#xff0c;我们用圆表示神经元&#xff0c;用线表示神经元之间的连接&#xff0c;数据从神经网络的左侧输入&#xff0c;让神经元处理之后&#xff0c;从右…...

一文读懂 HTTP:Web 数据交换的基石

HTTP 概述 HTTP 是一种用作获取诸如 HTML 文档这类资源的协议。它是 Web 上进行任何数据交换的基础&#xff0c;同时&#xff0c;也是一种客户端—服务器&#xff08;client-server&#xff09;协议&#xff0c;也就是说&#xff0c;请求是由接受方——通常是 Web 浏览器——发…...

算法知识补充2

一部分&#xff1a;Tire树&#xff1a;高效地存储和查找字符串集合的数据结构acwing835 #include<iostream> #include<cstring> using namespace std; const int N100010; int son[N][26],cnt[N],idx; char str[N]; void insert(char str[]){int p0;for(int i0;st…...

Vue.js组件开发-实现对视频预览

在 Vue 中实现视频文件预览 实现步骤 创建 Vue 组件&#xff1a;构建一个 Vue 组件用于处理视频文件的选择和预览。文件选择&#xff1a;添加一个文件输入框&#xff0c;允许用户选择视频文件。读取文件&#xff1a;监听文件选择事件&#xff0c;使用 FileReader API 读取所选…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...