• xlwings模块(数据保存为xlsx文件)


    目录

    安装

    使用

    创建App

    工作簿Book与Books

    工作表Sheet

    引用区域与单元格操作


    xlwings是一个可以实现从Excel调用Python,也可在python中调用Excel的库。开源免费,一直在更新。特点:

    • xlwings支持.xls读,支持.xlsx文件读写。 
    • 支持Excel操作。 
    • 支持VBA。 
    • 强大的转换器可以处理大部分数据类型,包括在两个方向上的numpy array和pandas DataFrame。

    文档链接:

    xlwings 文档https://docs.xlwings.org/en/stable/index.html

    安装

    pip install xlwings

    使用

    在我们操作之前可以先了解下,如下内容:

    • 新建:创建一个不存在的工作薄或者工作表
    • 打开:打开一个已经存在的工作薄
    • 引用:就是告诉程序,你要操作哪个对象。比如你打开了A、B、C三个工作薄,现在你想操作A工作薄,就要先引用A
    • 激活:我们可以同时打开多个工作薄,但是一次只能操作一个工作簿,我们正在操作的这个工作薄称为当前活动工作薄。

    在xlwings中

    • Excel程序用App来表示,多个Excel程序集合用Apps表示;
    • 单个工作簿用Book表示,工作簿集合用Books表示;
    • 单个工作表用Sheet表示,工作表集合用Sheets表示;
    • 区域用Range表示,既可以是一个单元格,也可以是一片单元格区域。

    对Excel进行操作主要使用如下三个类:

    1. import xlwings as xw
    2. xw.App 打开一个excel应用
    3. xw.Book 创建一个工作薄
    4. xw.Sheet 创建一个工作表

    创建App

    app=xw.App(visible=True,add_book=False)

    参数visible:用来设置程序是否可见,True表示可见(默认),Flase不可见

    参数add_book用来设置是否自动创建工作簿,True表示自动创建(默认),False不创建。当设置成add_book=False时,可以创建App,但是还未生成PID,只有当这个App创建了工作簿后,才会生成自己的PID 。

    app.pid

    即可查看创建的app的pid值。

    在操作一个app对象的时候要先引用工作薄,但是引用并不代表激活,激活就是当前操作的工作薄。

    wb=app.books.add()

    表示在该app下创建一个工作簿。

    关闭app有两种方式:

    1. app.kill():通过杀掉进程,强制Excel app退出
    2. app.quit():退出excel程序,不保存任何工作簿

    工作簿Book与Books

    一个app可以包含多个工作薄,创建工作薄有两种方式:

    • xw.Book()
      • 方式1是创建一个新的App,并在新App中新建一个Book
    • xw.books.add()
      • 是在当前App下新建一个Book

    如果是打开一个已存在的则可以

    1. wb = app.books.open('绝对或者相对路径的excel文件')
    2. '或者
    3. wb = xw.Book('绝对或者相对路径的excel文件')

    激活工作簿

    1. wb.activate()
    2. # 如果steal_focus=True, 则把窗口显示到最上层,并且把焦点从Python切换到Excel
    3. wb.activate(steal_focus=True)

    保存工作薄:

    1. wb.save()
    2. # 或者使用指定路径保存
    3. wb.save('存储路径')

    关闭工作薄:

    wb.close()

    需要注意的是,关闭工作簿并不会保存,所以在关闭前记得保存一下。 也可以与with语句一起使用,实现关闭资源。

    工作表Sheet

    新建Sheet

    1. sht = wb.sheets.add()
    2. # 或者
    3. sht = wb.sheets.add('test',after='sheet2')

     参数1为工作表名称,省略的话为Excel默认名称,参数2为插入位置,可选before或者after

    引用某一个Sheet,可以通过下面方式

    1. sht = wb.sheets('sheet1') # 指定名称获取sheet工作表
    2. sht = wb.sheets(1) # 根据序号获取
    3. sht = xw.sheets.active #获取当前活动的工作表

     sheet对象可以调用的常用方法有:

    1. # 清除工作表所有内容和格式
    2. sht.clear()
    3. # 清除工作表的所有内容但是保留原有格式
    4. sht.clear_contents()
    5. # 删除工作表
    6. sht.delete()
    7. # 自动调整行高列宽
    8. sht.autofit('c')
    9. # 在活动工作簿中选择
    10. sht.select()

    引用区域与单元格操作

    在操作区域或者单元格之前,首先就要引用他们,其实就是表明你要操作的区域或者单元格是哪些。可以认为区域是多个单元格。

    引用区域的方式有很多种,下面列举一下常见的引用方式:

    1. xw.Range('A1:D4')
    2. xw.Range((1,1), (44))
    3. xw.Range(xw.Range('A1'),xw.Range('D4'))
    4. xw.Range(xw.Range('A1:E6'),xw.Range('C3:D7'))
    5. xw.Range('NamedRange')
    6. app.range("A1") # 注意是小写的range
    7. sht.range('A1')
    8. xw.books['MyBook.xlsx'].sheets[0].range('A1')
    9. sht['A1']
    10. sht['A1:D4']
    11. sht[0,5]
    12. sht[:5,:5]

    对区域或单元格进行操作:

    • 存储数据
    1. # 存储单个数据
    2. sht.range('a1').value = 'id'
    3. # 存储单行数据
    4. sht.range('a2').value = ['id', '姓名', '年龄']
    5. # 存储多行数据
    6. sht.range('a3').value = [['1', '2', '3'], ['4', '5', '6']]

    存储多行数据的时候,需要是二维数组,内部的每一个数组则是一行数据

     

     最后则是这样的效果。

    读取数据

    1. 读取单个值
    2. # 将A1的值,读取到a变量中
    3. a=sht.range('A1').value
    4. 将值读取到列表中
    5. #将A1到A2的值,读取到a列表中
    6. a=sht.range('A1:A2').value
    7. # 将第一行和第二行的数据按二维数组的方式读取
    8. a=sht.range('A1:B2').value

    清除与删除

    1. # 清除range的内容
    2. rng.clear_contents()
    3. # 清除格式和内容
    4. rng.clear()
    5. # 删除
    6. rng.delete(shift=None)

    rng表示引用的区域 

    有关xlwings模块的使用看下面链接

    零基础学习xlwings,看这篇文章就够了_qfxietian的博客-CSDN博客_xlwingsicon-default.png?t=M666https://blog.csdn.net/qfxietian/article/details/123822358?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165969529116781432917563%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165969529116781432917563&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-123822358-null-null.142^v39^pc_rank_34,185^v2^control&utm_term=xlwings&spm=1018.2226.3001.4187

  • 相关阅读:
    067:mapboxGL上传CSV文件,显示图形,导出为Geojson文件
    【微信小程序】授权登录流程解析
    百度智能云章淼:详解企业级七层负载均衡开源软件BFE
    GBase 8c V3.0.0数据类型——数字操作函数
    医院微信预约挂号小程序开发_分享医院做预约挂号小程序的可以实现什么功能
    Java中的抽象类和接口
    yolov5及yolov7实战之剪枝
    A. Morning Sandwich
    【电子通识】USB3.0和USB2.0有什么区别?
    「PAT乙级真题解析」Basic Level 1109 擅长C (问题分析+完整步骤+伪代码描述+提交通过代码)
  • 原文地址:https://blog.csdn.net/HHYZBC/article/details/126183615