Python 之 Excel 表格常用操作

示例文件 test.xlsx

   

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

import os.path

import openpyxl
import pandas


def 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.sheetnames
    print(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.path

import openpyxl
import pandas


def 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.sheetnames
    print(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 DispatchEx


def 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 为 False
    wb = 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.size
    p = 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 = 3
    while retry_times > 0:
        time.sleep(3)
        dialog = win32gui.FindWindow('#32770', '打开')
        if dialog:
            break
        retry_times -= 1
    time.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 True


if __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 win32gui

LANGUAGE = {
    '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 的图标,如果你本身没有安装英文输入法的话是没办法切换的哟。

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

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

相关文章

01学习预热篇(D6_正式踏入JVM深入学习前的铺垫)

目录 学习前言 一、虚拟机的结构 1. Java虚拟机参数设置 2. java 堆 3. 出入栈 4. 局部变量表 1> 局部变量的剖析 2> 局部变量的回收 5. 操作数栈 1> 常量入栈指令 2> 局部变量值转载到栈中指令 3> 将栈顶值保存到局部变量中指令 6. 帧数据区 7. 栈…

知识库建设对提升团队协作与创新能力的影响分析

内容概要 在当今快速变革的商业环境中,知识库建设的重要性愈发凸显。它不仅是信息存储的载体,更是推动组织内部沟通与协作的基石。通过系统整理与管理企业知识,团队成员能够便捷地访问相关信息,使得协作过程更为流畅,…

C语言字符串详解

1. C语言中的字符串基础 C语言中的字符串是程序设计中不可忽视的部分。与现代高级编程语言不同,C语言对字符串的处理方式直接、灵活,并且强大。在C语言中,字符串并不是一种特殊的数据类型,而是字符数组的一种表现形式。字符串通常…

神经网络的通俗介绍

人工神经网络,是一种模仿人类大脑工作原理的数学模型。人类的大脑是由无数的小“工作站”组成的,每个工作站叫做“神经元”。这些神经元通过“电线”互相连接,负责接收、处理和传递信息。 一、人类大脑神经网络 人类大脑的神经网络大概长这…

SpringBoot中Excel表的导入、导出功能的实现

文章目录 一、easyExcel简介二、Excel表的导出2.1 添加 Maven 依赖2.2 创建导出数据的实体类4. 编写导出接口5. 前端代码6. 实现效果 三、excel表的导出1. Excel表导入的整体流程1.1 配置文件存储路径 2. 前端实现2.1 文件上传组件 2.2 文件上传逻辑3. 后端实现3.1 文件上传接口…

vim交换文件的工作原理

在vim中,交换文件是一个临时文件,当我们使用vim打开一个文件进行编辑(一定得是做出了修改才会产生交换文件)时候,vim就会自动创建一个交换文件,而之后我们对于文件的一系列修改都是在交换文件中进行的&…

C++/stack_queue

目录 1.stack 1.1stack的介绍 1.2stack的使用 练习题: 1.3stack的模拟实现 2.queue的介绍和使用 2.1queue的介绍 2.2queue的使用 2.3queue的模拟实现 3.priority_queue的介绍和使用 3.1priority_queue的介绍 3.2priority_queue的使用 欢迎 1.stack 1.1stack…

5分钟带你获取deepseek api并搭建简易问答应用

目录 1、获取api 2、获取base_url和chat_model 3、配置模型参数 方法一:终端中临时将加入 方法二:创建.env文件 4、 配置client 5、利用deepseek大模型实现简易问答 deepseek-v3是截止博文撰写之日,无论是国内还是国际上发布的大模型中…

机器学习day4

自定义数据集 使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测 import numpy as np import torch import torch.nn as nn import torch.optim as optimizer import matplotlib.pyplot as pltclass1_points np.array([[2.1, 1.8],[1.9, 2…

58.界面参数传递给Command C#例子 WPF例子

界面参数的传递,界面参数是如何从前台传送到后台的。 param 参数是从界面传递到命令的。这个过程通常涉及以下几个步骤: 数据绑定:界面元素(如按钮)的 Command 属性绑定到视图模型中的 RelayCommand 实例。同时&#x…

Julius AI 人工智能数据分析工具介绍

Julius AI 是一款由 Casera Labs 开发的人工智能数据分析工具,旨在通过自然语言交互和强大的算法能力,帮助用户快速分析和可视化复杂数据。这款工具特别适合没有数据科学背景的用户,使数据分析变得简单高效。 核心功能 自然语言交互&#x…

【JavaEE进阶】应用分层

目录 🎋序言 🍃什么是应用分层 🎍为什么需要应用分层 🍀如何分层(三层架构) 🎄MVC和三层架构的区别和联系 🌳什么是高内聚低耦合 🎋序言 通过上⾯的练习,我们学习了SpringMVC简单功能的开…

在 Ubuntu22.04 上安装 Splunk

ELK感觉太麻烦了,换个日志收集工具 Splunk 是一种 IT 工具,可帮助在任何设备上收集日志、分析、可视化、审计和创建报告。简单来说,它将“机器生成的数据转换为人类可读的数据”。它支持从虚拟机、网络设备、防火墙、基于 Unix 和基于 Windo…

ES设置证书和创建用户,kibana连接es

1、启动好es 2、进入es容器 docker exec -it es /bin/bash 3、生成ca证书 ./bin/elasticsearch-certutil ca 注:两个红方框位置直接回车 4、生成cert证书 ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 注:前两个红框直接回车&am…

python + ollama 手敲实现私有大模型知识库

在不依赖 LangChain、LlamaIndex 等框架,以及各种知识问答软件的情况下,尽量减少第三方库的使用,仅通过 Ollama 和 NumPy 两个外部库来实现 RAG(Retrieval-Augmented Generation)应用。 一、安装python 下载&#xf…

TypeScript中的函数:类型安全与高级特性

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

EasyExcel使用详解

文章目录 EasyExcel使用详解一、引言二、环境准备与基础配置1、添加依赖2、定义实体类 三、Excel 读取详解1、基础读取2、自定义监听器3、多 Sheet 处理 四、Excel 写入详解1、基础写入2、动态列与复杂表头3、样式与模板填充 五、总结 EasyExcel使用详解 一、引言 EasyExcel 是…

概率论里的特征函数,如何用卷积定理去理解

概率论里的特征函数,如何用卷积定理去理解_哔哩哔哩_bilibili

具身智能技术趋势

参考: 【北京大学-董豪】具身智能技术趋势分析 2024.8 回答了具身智能技术G3、G4的必要性,以及真实数据、仿真数据、互联网数据之间的关系 具身智能趋势 趋势:寻求一个通用路径实现所有的上肢操作 要求:① 低成本 ② 拓展到所有…

新型智慧城市解决方案-3

智慧城市概述 智慧城市是运用物联网、云计算、大数据等现代科技手段,构建集网络化、信息化、智能化于一体的新型城市模式,涵盖智慧管理、智慧产业、智慧民生等核心内容。 智慧城市建设背景 随着城镇化快速发展,城市病问题日益突出&#x…