python文件操作相关(excel)

python文件操作相关(excel)

  • 1. openpyxl 库
    • openpyxl其他用法
      • 创建与删除
      • 操作单元格
      • 追加数据
      • 格式化单元格
      • 合并单元格
      • 插入图片
      • 公式
      • 打印设置
      • 保护工作表
      • 其他功能
  • 2. pandas 库
  • 3. xlrd 和 xlwt 库
  • 4. xlsxwriter 库
  • 5. pyxlsb 库
  • 应用场景
  • 参考资料

在 Python 中,操作 Excel 文件通常使用 openpyxl、pandas 和 xlrd/xlwt 等库

  • openpyxl:适合读写 .xlsx 文件,支持高级功能
  • pandas:适合数据分析和处理,支持读写 .xlsx 和 .xls 文件
  • xlrd/xlwt:适合读写旧版 .xls 文件
  • xlsxwriter:适合创建复杂的 .xlsx 文件
  • pyxlsb:适合读取 .xlsb 文件

1. openpyxl 库

openpyxl 是一个专门用于读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件的库,它支持 Excel的高级功能,如公式、图表、样式等

主要功能

  • 读取 Excel 文件:加载 Excel 文件并读取数据
  • 写入 Excel 文件:创建或修改 Excel 文件并保存
  • 操作工作表:添加、删除、重命名工作表
  • 单元格操作:读取、写入、修改单元格内容
  • 样式设置:设置单元格的字体、颜色、边框等样式。
from openpyxl import Workbook, load_workbook# 创建一个新的 Excel 文件
wb = Workbook()
ws = wb.active
ws.title = "Sheet1"# 写入数据
ws['A1'] = "Name"
ws['B1'] = "Age"
ws['A2'] = "Alice"
ws['B2'] = 25
ws['A3'] = "Bob"
ws['B3'] = 30# 保存文件
wb.save("example.xlsx")# 读取 Excel 文件
wb = load_workbook("example.xlsx")
ws = wb["Sheet1"]# 读取单元格数据
for row in ws.iter_rows(min_row=1, max_col=2, max_row=3, values_only=True):print(row)

openpyxl其他用法

创建与删除

  1. 创建新的工作表:

    wb.create_sheet('NewSheet')
    
  2. 删除工作表:

    del wb['SheetName']
    

操作单元格

  1. 访问单元格:

    • 通过坐标访问:
      cell = ws['A1']
      
    • 通过行和列索引访问:
      cell = ws.cell(row=1, column=1)
      
  2. 获取单元格的值:

    value = ws['A1'].value
    
  3. 遍历行和列:

    • 遍历所有行:
      for row in ws.iter_rows():for cell in row:print(cell.value)
      
    • 遍历特定范围的单元格:
      for row in ws['A1':'C3']:for cell in row:print(cell.value)
      

追加数据

  1. 在现有工作表末尾追加一行:

    from openpyxl import load_workbookwb = load_workbook('example.xlsx')
    ws = wb.active# 获取当前最后一行的行号
    max_row = ws.max_row# 追加新行
    new_row = ['Value1', 'Value2', 'Value3']
    for col_idx, value in enumerate(new_row, start=1):cell = ws.cell(row=max_row + 1, column=col_idx)cell.value = valuewb.save('example.xlsx')
    
  2. 使用 openpyxl.utils 追加数据:

    from openpyxl import load_workbook
    from openpyxl.utils import get_column_letterwb = load_workbook('example.xlsx')
    ws = wb.activemax_row = ws.max_row
    new_data = [['Value1', 'Value2', 'Value3'],['Value4', 'Value5', 'Value6']
    ]for row_idx, row_data in enumerate(new_data, start=max_row + 1):for col_idx, value in enumerate(row_data, start=1):col_letter = get_column_letter(col_idx)cell = ws[f'{col_letter}{row_idx}']cell.value = valuewb.save('example.xlsx')
    
  3. 使用 ws.append 追加数据:

ws.append 方法接受一个列表作为参数,列表中的每个元素会被依次写入工作表当前最后一行的每个单元格中

  1. 创建一个新的工作簿并追加数据:

    from openpyxl import Workbook# 创建一个新的工作簿
    wb = Workbook()
    ws = wb.active# 追加一行数据
    ws.append(['Value1', 'Value2', 'Value3'])# 保存工作簿
    wb.save('example.xlsx')
    
  2. 在现有工作簿中追加数据:

    from openpyxl import load_workbook# 加载现有的工作簿
    wb = load_workbook('example.xlsx')
    ws = wb.active# 追加多行数据
    ws.append(['Value4', 'Value5', 'Value6'])
    ws.append(['Value7', 'Value8', 'Value9'])# 保存工作簿
    wb.save('example.xlsx')
    
  3. 追加包含公式的行:

    from openpyxl import load_workbook# 加载现有的工作簿
    wb = load_workbook('example.xlsx')
    ws = wb.active# 追加包含公式的行
    ws.append(['SUM(A1:A10)', 'AVERAGE(B1:B10)'])# 保存工作簿
    wb.save('example.xlsx')
    

格式化单元格

  1. 设置字体样式:

    from openpyxl.styles import Fontcell = ws['A1']
    cell.font = Font(size=14, bold=True, color='FF0000')
    
  2. 设置单元格填充颜色:

    from openpyxl.styles import PatternFillfill = PatternFill(start_color='FFFF00', end_color='FFFF00', fill_type='solid')
    cell.fill = fill
    
  3. 设置边框:

    from openpyxl.styles import Border, Sidethin = Side(border_style='thin', color='000000')
    border = Border(left=thin, right=thin, top=thin, bottom=thin)
    cell.border = border
    

合并单元格

  1. 合并单元格:

    ws.merge_cells('A1:B1')
    
  2. 取消合并单元格:

    ws.unmerge_cells('A1:B1')
    

插入图片

  1. 插入图片:
    from openpyxl.drawing.image import Imageimg = Image('example.png')
    ws.add_image(img, 'A1')
    

公式

  1. 设置公式:
    cell = ws['A1']
    cell.value = '=SUM(B1:B10)'
    

打印设置

  1. 设置打印区域:

    ws.print_area = 'A1:D10'
    
  2. 设置页眉和页脚:

    ws.header_footer.center_header.text = "&[Date]"
    ws.header_footer.right_footer.text = "&[Page] of &[Pages]"
    

保护工作表

  1. 保护工作表:

    ws.protection.password = 'password'
    ws.protection.enable()
    
  2. 取消保护工作表:

    ws.protection.disable()
    

其他功能

  • 条件格式化:

    from openpyxl.formatting import Rule
    from openpyxl.styles import PatternFill
    from openpyxl.styles.differential import DifferentialStylered_fill = PatternFill(start_color='FF0000', end_color='FF0000', fill_type='solid')
    dxf = DifferentialStyle(fill=red_fill)
    rule = Rule(type='expression', dxf=dxf, formula=['A1>10'])
    ws.conditional_formatting.add('A1:A10', rule)
    
  • 数据验证:

    from openpyxl.worksheet.datavalidation import DataValidationdv = DataValidation(type='list', formula1='"Item1,Item2,Item3"', allow_blank=True)
    dv.add('A1')
    ws.add_data_validation(dv)
    
  • 超链接:

    from openpyxl.cell import Cell
    from openpyxl.worksheet.hyperlink import Hyperlinkcell = ws['A1']
    cell.value = 'Click here'
    cell.hyperlink = Hyperlink(display='Click here', ref='A1', location='https://www.example.com')
    

2. pandas 库

pandas 是一个强大的数据分析库,支持读取和写入 Excel 文件。它通常用于处理结构化数据,如表格数据

主要功能

  • 读取 Excel 文件:将 Excel 文件加载为 DataFrame
  • 写入 Excel 文件:将 DataFrame 保存为 Excel 文件
  • 数据处理:支持数据筛选、排序、聚合等操作
  • 多工作表操作:支持读取和写入多个工作表
import pandas as pd# 读取 Excel 文件
df = pd.read_excel("example.xlsx", sheet_name="Sheet1", engine='openpyxl')
print(df)# 数据处理
df['Age'] = df['Age'] + 1  # 将年龄加 1
print(df)# 写入 Excel 文件
df.to_excel("modified_example.xlsx", index=False)

3. xlrd 和 xlwt 库

xlrd 用于读取 Excel 文件(仅支持旧版 .xls 格式),xlwt 用于写入 Excel 文件(仅支持旧版 .xls 格式)

主要功能

  • 读取 Excel 文件:xlrd 可以读取 .xls 文件的内容
  • 写入 Excel 文件:xlwt 可以创建或修改 .xls 文件
import xlrd
import xlwt# 读取 Excel 文件
workbook = xlrd.open_workbook("example.xls")
sheet = workbook.sheet_by_index(0)
for row in range(sheet.nrows):print(sheet.row_values(row))# 写入 Excel 文件
workbook = xlwt.Workbook()
sheet = workbook.add_sheet("Sheet1")
sheet.write(0, 0, "Name")
sheet.write(0, 1, "Age")
sheet.write(1, 0, "Alice")
sheet.write(1, 1, 25)
workbook.save("example.xls")

4. xlsxwriter 库

xlsxwriter 一个专门用于写入 Excel 文件的库,支持创建复杂的 Excel 文件,如添加图表、公式、条件格式等

主要功能

  • 创建 Excel 文件:支持创建 .xlsx 文件
  • 高级功能:支持图表、公式、条件格式、数据验证等
  • 样式设置:支持设置单元格样式
import xlsxwriter# 创建一个新的 Excel 文件
workbook = xlsxwriter.Workbook('example.xlsx')
worksheet = workbook.add_worksheet('Sheet1')# 写入数据
worksheet.write('A1', 'Name')
worksheet.write('B1', 'Age')
worksheet.write('A2', 'Alice')
worksheet.write('B2', 25)# 添加图表
chart = workbook.add_chart({'type': 'column'})
chart.add_series({'values': '=Sheet1!B2:B2'})
worksheet.insert_chart('D2', chart)# 保存文件
workbook.close()

5. pyxlsb 库

pyxlsb 用于读取 Excel 二进制文件(.xlsb 格式)

主要功能

  • 读取 .xlsb** 文件**:支持读取 Excel 二进制文件
from pyxlsb import open_workbook# 读取 Excel 二进制文件
with open_workbook('example.xlsb') as wb:with wb.get_sheet(1) as sheet:for row in sheet.rows():print([item.v for item in row])

应用场景

  • 数据导入导出:将数据库或其他数据源的数据导出为 Excel 文件,或从 Excel 文件中导入数据
  • 报表生成:使用 openpyxl 或 xlsxwriter 生成带有图表和样式的报表
  • 数据分析:使用 pandas 对 Excel 文件中的数据进行清洗、分析和可视化
  • 自动化任务:批量处理多个 Excel 文件,如合并、拆分、格式转换等

参考资料

  • openpyxl 官方文档
  • pandas 官方文档
  • xlrd 官方文档
  • xlwt 官方文档
  • xlsxwriter 官方文档
  • pyxlsb 官方文档

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

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

相关文章

yolo小damo合集

效果如下:这个是图片检测 效果如下:这个是视频检测 效果如下:这个是摄像头检测 1 相关库 除了yolov11所用库之外,本文所用到的额外库为pyqt5,输入指令进行安装 pip install pyqt5 导入所需要的库 import sys fro…

【蓝桥杯研究生组】第14届Java试题答案整理

试题链接&#xff1a;链接 A题 满足条件的答案有&#xff1a;35813116 public class TianShu {public static void main(String[] args) {int ans 0;// 2000.1.1 - 2000000.1.1// 年份是月份的倍数&#xff0c;也是日的倍数for (int year2000; year<2000000; year) {for …

基于Java的超级玛丽游戏的设计与实现【源码+文档+部署讲解】

目 录 1、绪论 1.1背景以及现状 1.2 Java语言的特点 1.3 系统运行环境及开发软件&#xff1a; 1.4 可行性的分析 1.4.1 技术可行性 1.4.2 经济可行性 1.4.3 操作可行性 2、 需求分析 2.1 用户需求分析 2.2功能需求分析 2.3界面设计需求分析…

25考研王道数据机构课后习题-----顺序表链表部分

文章目录 1.顺序表题目2.链表相关题目3.我的个人总结 声明&#xff1a;以下内容来自于B站知名up主白话拆解数据结构&#xff0c;望获悉&#xff1b; 1.顺序表题目 下面的这个说的是&#xff1a;下面的哪一个是组成我们的顺序表的有限序列&#xff0c;这个应该是数据元素&#x…

LLM - 使用 LLaMA-Factory 部署大模型 HTTP 多模态服务 (4)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/144881432 大模型的 HTTP 服务&#xff0c;通过网络接口&#xff0c;提供 AI 模型功能的服务&#xff0c;允许通过发送 HTTP 请求&#xff0c;交互…

学英语学压测:02jmeter组件-测试计划和线程组ramp-up参数的作用

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#xff1a;先看关键单词&#xff0c;再看英文&#xff0c;最后看中文总结&#xff0c;再回头看一遍英文原文&#xff0c;效果更佳&#xff01;&#xff01; 关键词 Functional Testing功能测试[ˈfʌŋkʃənəl ˈtɛstɪŋ]Sample样…

多线程访问FFmpegFrameGrabber.start方法阻塞问题

一、背景 项目集成网络摄像头实现直播功能需要用到ffmpeg处理rtmp视频流进行web端播放 通过网上资源找到大神的springboot项目实现了rtmp视频流转为http请求进行视频中转功能&#xff0c;其底层利用javacv的FFmpegFrameGrabber进行拉流、推流&#xff0c;进而实现了视频中转。 …

医学图像分析工具01:FreeSurfer || Recon -all 全流程MRI皮质表面重建

FreeSurfer是什么 FreeSurfer 是一个功能强大的神经影像学分析软件包&#xff0c;广泛用于处理和可视化大脑的横断面和纵向研究数据。该软件由马萨诸塞州总医院的Martinos生物医学成像中心的计算神经影像实验室开发&#xff0c;旨在为神经科学研究人员提供一个高效、精确的数据…

OKHttp调用第三方接口,响应转string报错okhttp3.internal.http.RealResponseBody@4a3d0218

原因分析 通过OkHttp请求网络&#xff0c;结果请求下来的数据一直无法解析并且报错&#xff0c;因解析时String res response.body().toString() 将toString改为string即可&#xff01;

oceanbase集群访问异常问题处理

1.报错现象 2.问题排查 检查obproxy状态发现为不可用状态 重启obproxy 依次重启Obproxy集群 观察任务状态 重启完成 Obproxy状态正常 3.验证登录 登录成功

ruckus R510升级到Unleashe后不能访问

ruckus R510 是IPQ4019&#xff0c;升级到Unleashe&#xff0c;它弹窗提示 但是这个IP没办法用&#xff0c;访问不了AP。 必应了一下&#xff0c;官方提示用advance ip scanner扫描。 扫描持续好久&#xff0c;发现IP竟然是从主路由获得。 9090的端口不用填&#xff0c;甚至不…

使用R语言绘制标准的中国地图和世界地图

在日常的学习和生活中&#xff0c;有时我们常常需要制作带有国界线的地图。这个时候绘制标准的国家地图就显得很重要。目前国家标准地图服务系统向全社会公布的标准中国地图数据&#xff0c;是最权威的地图数据。 今天介绍的R包“ggmapcn”&#xff0c;就是基于最新公布的地图…

linux上安装MySQL教程

1.准备好MySQL压缩包&#xff0c;并进行解压 tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar -C /usr/local 2.检查是否有mariadb数据库 rpm -aq|grep mariadb 关于mariadb:是MySQL的一个分支&#xff0c;主要由开源社区在维护&#xff0c;采用GPL授权许可 MariaDB的目…

计算机网络基础(7)中科大郑铨老师笔记

应用层 目标&#xff1a;  网络应用的 原理&#xff1a;网络应用协议的概念和实现方面 传输层的服务模型 客户-服务器模式 对等模式(peerto-peer) 内容分发网络  网络应用的 实例&#xff1a;互联网流行的应用层协 议  HTTP  FTP  SMTP / POP3 / IMAP  DNS…

Spring源码分析之事件机制——观察者模式(二)

目录 获取监听器的入口方法 实际检索监听器的核心方法 监听器类型检查方法 监听器的注册过程 监听器的存储结构 过程总结 Spring源码分析之事件机制——观察者模式&#xff08;一&#xff09;-CSDN博客 Spring源码分析之事件机制——观察者模式&#xff08;二&#xff…

CSS——4. 行内样式和内部样式(即CSS引入方式)

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>方法1&#xff1a;行内样式</title></head><body><!--css引入方式&#xff1a;--><!--css的引入的第一种方法叫&#xff1a;行内样式将css代码写…

python之移动端测试---appium

Appium Appium介绍环境准备新版本appium的用法介绍元素定位函数被封装&#xff0c;统一使用By.xxx(定位方式)&#xff1a;通过文本定位的写法 一个简单的请求示例APP操作api基础apk安装卸载发送&#xff0c;拉取文件uiautomatorviewer工具使用获取页面元素及属性模拟事件操作模…

剑指Offer|LCR 021. 删除链表的倒数第 N 个结点

LCR 021. 删除链表的倒数第 N 个结点 给定一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1…

基于物联网疫苗冷链物流监测系统设计

1. 项目开发背景 随着全球对疫苗运输要求的提高&#xff0c;特别是针对温度敏感型药品&#xff08;如疫苗&#xff09;的冷链管理&#xff0c;如何保证疫苗在运输过程中的温度、湿度、震动等环境因素的稳定性已成为亟需解决的问题。疫苗运输过程中&#xff0c;任何温度或湿度的…

软件逆向之标志位

进位标志CF&#xff08;Carry Flag&#xff09; 介绍&#xff1a;如果运算结果的最高位产生了一个进位&#xff08;加法&#xff09;或借位&#xff08;减法&#xff09;&#xff0c;那么&#xff0c;其值为1&#xff0c;否则其值为0。无符号数。 示例&#xff1a; mov al&…