精华内容
下载资源
问答
  • xlwings是一个获得BSD许可的Python库,可以很容易地从Excel调用Python,反之亦然。 它适用于Windows和Mac上的Microsoft Excel。 在官方文档里找不到具体怎么生成图表,和一些参数设置。 这里自己整理了一下。 ...
  • docs-xlwings-org-zh_CN-stable
  • xlwings 操作excel def open(filename=None,visible=False, readonly=False, password=None,write_password=None): #filename 文件路径,打开,没有文件名则创建 #visible 打开是否可见 #readonly 是否打开只读 #...
  • xlwings

    2021-07-29 15:06:50
    xlwings模块简介 xlwings模块是python中对excel进行操作的一个模块。相对于其他支持excel操作的模块来讲,xlwings是目前最为全能,且运行效率较高,即综合评分较高的一个模块,且支持win和mac os系统。 主要用法介绍...

    xlwings模块简介

    xlwings模块是python中对excel进行操作的一个模块。相对于其他支持excel操作的模块来讲,xlwings是目前最为全能,且运行效率较高,即综合评分较高的一个模块,且支持win和mac os系统。

    主要用法介绍

    在介绍用法之前,先对模块中的对象做一下简单描述

    • App :对应的就是excel程序
    • Book :对应为excel文件(即工作簿workbook)
    • Sheet :对应的excel文件中每个页
    • Range:对应的就是每个sheet里的单元格
    • N个Excel程序则由apps表示,N个工作簿由books表示,以此类推。可以通过xlwings.App()/xlwings.Book()/xlwings.Sheet()/

    以上将excel中的对象划分上下级关系,要调用任一级别的对象,必须先要有父级的对象,比如要打开一个workbook,就必须要先有app_obj,然后对这app_obj操作workbook。这与实际的excel操作逻辑其实是一致,即要打开一个workbook,必须先要运行一个excel程序。
    各级关系图
    同时要注意区分App和apps,Book和books的区别

    App

    打开/关闭excel程序

    • 创建一个app对象:
      运行程序会打开一个excel程序,但是不会打开book
    app_obj = xlwings.App()
    
    • 关闭excel程序
    app_obj.quit()
    
    • app的一些属性
      当一些功能不需要的时候,可以通过相关属性关闭,提高程序运行效率
    # 关闭显示报警(默认)
    app_obj.display_alerts=False
    # 关闭屏幕更新(默认)
    app_obj.screen_updating=False
    

    Book(工作簿)

    工作簿的操作,都基于app对象。

    常用方法

    • xlwings.books.active ->引用激活的
    • book_obj = app_obj.books[‘bookName’] -> 引用
    • app_obj.books.add() -> 新增
    • app_obj.books.save(filePath) -> 保存(filePath为空,则保存在当前路径)
    • app_obj.books.open(filePath) -> 打开
    • app_obj.books.activate() -> 激活该工作簿

    属性

    • book_obj.name : 返回工作簿的名称
    • book_obj.fullname : 返回工作簿的绝对路径

    示例

    import xlwings
    
    app_obj = xlwings.App()
    
    for i in range(1, 3):
        book_obj = app_obj.books.add()
        book_obj.save('new%d.xlsx' % i)
        
        book_name = book_obj.name
        book_path = book_obj.fullname
        print('%s创建并保存成功,路径为%s' % (book_name,book_path))
        
        book_obj.close()
    
    # new1.xlsx创建并保存成功,路径为/Users/apple/xlwings/new1.xlsx
    # new2.xlsx创建并保存成功,路径为/Users/apple/xlwings/new2.xlsx
    

    Sheet(工作页)

    工作页的操作

    常用方法

    • sheet_obj=app_obj.books[‘工作簿名称’].sheets[‘sheet的名称’] ->引用工作页
    • sheet_obj.activate() -> 激活工作页
    • sheet_obj.clear() -> 清除sheet的内容和格式
    • sheet_obj.clear_contents() -> 清除sheet的内容,保留格式
    • sheet_obj.delete() -> 删除工作页

    示例

    import xlwings
    
    app_obj = xlwings.App()
    
    book_obj = app_obj.books.open('new.xlsx')
    sheet_obj = app_obj.books['new.xlsx'].sheets['sheet2']
    
    print(sheet_obj.name)
    sheet_obj.clear_contents()
    sheet_obj.clear()
    sheet_obj.delete()
    

    Range(单元格)

    常用API

    单元格引用

    # 引用A1单元格
    range_obj = sheet_obj.range('A1')
    # 快速引用A1单元格,效果同上
    range_obj = sheet_obj['A1']
    #返回range的所有行
    rows_obj = range_obj.rows
    # range的第一行
    range_obj.rows[0]
    # range的第一列
    range_obj.columns[0]
    # 选取第一列
    range_obj = sheet_obj.range('A1').expand('down')
    # 选取第一行
    range_obj = sheet_obj.range('A1').expand('right')
    # 选取表格
    rng.sht.range('A1').expand('table')
    # 返回range所在的sheet
    range_obj.sheet
    

    行列相关

    # range的总行数
    range_obj.rows.count
    # range的第一行行标
    range_obj.row
    
    # 返回range的列数
    range_obj.columns.count
    # range的第一列列标
    range_obj.column
    
    # 返回range的行数和列数
    rng.shape
    

    单元格位移/高宽

    # 行的高度,所有行一样高返回行高,不一样返回None
    rng.row_height
    # 返回range的总高度
    rng.height
    # 获得列宽
    rng.column_width
    # 返回range的总宽度
    rng.width
    # 所有range的大小自适应
    rng.autofit()
    # 所有列宽度自适应
    rng.columns.autofit()
    # 所有行宽度自适应
    rng.rows.autofit()
    
    # range平移
    rng.offset(row_offset=0,column_offset=0)
    #range进行resize改变range的大小
    rng.resize(row_size=None,column_size=None)
    

    其他

    # 清除range的内容
    rng.clear_contents()
    # 清除格式和内容
    rng.clear()
    # 取得range的背景色,以元组形式返回RGB值
    rng.color
    # 设置range的颜色
    rng.color=(255,255,255)
    # 清除range的背景色
    rng.color=None
    # 加入超链接
    rng.add_hyperlink(r'www.baidu.com','百度',‘提示:点击即链接到百度')
    # 取得当前range的地址
    rng.address
    rng.get_address()
    
    # 返回range中单元格的数据
    rng.count
    # 返回current_region
    rng.current_region
    # 返回ctrl + 方向
    rng.end('down')
    # 获取公式或者输入公式
    rng.formula='=SUM(B1:B5)'
    # 数组公式
    rng.formula_array
    # 获得单元格的绝对地址
    rng.get_address(row_absolute=True, column_absolute=True,include_sheetname=False, external=False)
    

    存储数据

    储存单个值

    range_obj.value=666 
    

    储存列表

    • 横向存储
    sheet_obj.range('A1').value=[1,2,3]
    # 将列表[1,2,3]储存在A1:C1中,A1为默认开始的单元格位置
    
    sheet_obj.range('a1:c1').value = [1,2,3]
    # 等同于上述操作,即横向存储,明确定义了范围a1:c1
    
    • 纵向储存
    sheet_obj.range('A1').options(transpose=True).value=[1,2,3]
    # 将列表[1,2,3]储存在A1:A3中 ,
    # transpose注意拼写,如果打错,程序不会报错,而会按默认的行来写入
    

    注意: 即便sheet_obj.range(‘A1:A3’).value=[1,2,3] 写明了’A1:A3’,依然会以行的形式保存,即[1,2,3]将对应存储在A1:C1中

    储存二维数组

    sheet_obj.range('A1').options(expand='table').value=[[1,2],[3,4]] 
    # 将2x2表格,储存在A1:B2中,如第一行1,2,第二行3,4
    
    sheet_obj.range('A1').expand('table').value =[[1,2],[3,4]]
    # 效果同上
    

    读取数据

    读取单个值

    a=sheet_obj.range('A1').value
    # 将A1的值,读取到a变量中
    

    读取多个值

    获取精确范围内的值

    a1toa2=sheet_obj.range('A1:A2').value
    #将A1到A2的值,读取到a列表中
    
    a1tob2=sheet_obj.range('A1:B2').value
    # 将第一行和第二行的数据按二维数组的方式读取,如[[1,2],[3,4]]
    

    获取不确定范围内的值

    当我们不清楚一个表有多少行/列数据时,可以使用以下方式,直接获取整个连续且有值的范围的值,可指定某个单元格开始向右下方的所有连续值

    n = sheet_obj.range('b6').expand('table').value
    

    获取特定列/行的值

    结合上面的方法和单元格的属性,我们可以获取特定某行/列的值

    # 1. 先获取整个有数据范围的单元格对象
    range_obj = sheet_obj.range('A1').expand('table')
    # 2. 获取整个表格的行/列
    rows_count = range_obj.rows.count
    columns_count = range_obj.columns.count
    print('行:',rows_count,'列:',columns_count)
    # 3. 获取某行/列的值
    # 3.1 获取A列的数据
    column_data = sheet_obj.range('A1:A%s' % rows_count).value
    # 利用指定单元格名称范围来获取对象
    column_data1 = sheet_obj[:rows_count, 0].value
    # 通过切片形式获取第一列对象
    column_data2 = range_obj.columns[0].value
    # 利用列对象引用方式获取第一列对象
    print(column_data)
    print(column_data1)
    print(column_data2)
    # 效果一样
    
    # 3.2 获取第一行数据
    row_data = sheet_obj[0, :columns_count].value
    row_data1 = range_obj.rows[0].value
    print(row_data)
    print(row_data1)
    
    展开全文
  • docs-xlwings-org-zh_CN-stable.zip 虽然是中文文档,但是想到一部分内容还是英文的,
  • 本篇结合实际工作内容,使用xlwings包实现excel表格相关最最常用功能。 介绍 py版本:python 3.7 目标在历史账期文件的基础上,把一堆文件按照格式整合成一个文件。 原创文章 51获赞 8访问量 3万+ 关注 私信
  • xlwings.pdf

    2019-06-13 15:07:17
    xlwings 原版官方最新手册,有很多实例, Make Excel Fly!
  • xlwings是python对excel操作的一个第三方库,融合了pandas数据分析工具,比其他的python操作excel 好用。xlwings自定义函数和宏。
  • xlwings-源码

    2021-03-16 10:01:34
    xlwings-使Excel与Python一起飞行! xlwings CE xlwings CE是Python库,可轻松从Excel调用Python,反之亦然: 脚本编写:使用接近VBA的语法从Python中自动与Excel交互。 宏:用干净且功能强大的Python代码替换您...
  • 为文章“使用Python第三方库xlwings按条件将单个excel工作表拆分为多个工作表“的相关资源 文章链接:https://blog.csdn.net/qq_55292642/article/details/120106438 百度网盘链接:...
  • python 的xlwings

    2019-04-11 14:36:21
    对于非程序员来说,后者更加普遍,毕竟Excel是世界上使用最广泛的数据分析工具 用xlwings来实现 保存数据 更新数据 .......
  • xlwings-0.15.10.tar.gz

    2019-09-30 16:33:23
    python读写Excel表格工具,方便对Excel表格进行读取,写入。以及修改Excel表格数据。
  • Xlwings-源码

    2021-03-15 15:38:01
    Xlwings
  • Python xlwings模块简单使用

    万次阅读 多人点赞 2019-06-04 17:01:45
    Python xlwings模块操作excel xlwings 安装 xlwings 基础 xlwings 安装 操作excel模块的比较 xlwings官方文档 基本操作 安装 pip install xlwings xlwings 基础

    Python xlwings模块简单使用

    xlwings 安装

    xlwings 打开-新建

    • 打开excel文件
    • 多个excel操作
    import time
    import xlwings as xw
    
    """
    visible
    Ture:可见excel
    False:不可见excel
    
    add_book
    True:打开excel并且新建工作簿
    False:不新建工作簿
    
    
    if not os.path.exists('./a.xlsx'):
        print("第一次创建excel文件")
        excelFile= app.books.add()
        excelFile.save("./a.xlsx")
    
    """
    app = xw.App(visible=True, add_book=False)
    
    
    wb = app.books.open('./a.xlsx')
    wb2 = app.books.open("./b.xlsx")
    
    # 打印当前活跃的books-<Book [b.xlsx]>
    print(app.books.active)
    
    # 打印当前的book-Books([<Book [a.xlsx]>, <Book [b.xlsx]>])
    print(app.books)
    
    wb.save()
    
    # 关闭a.xlsx文件-指定操作的excel
    # wb.close()
    app.books[0].close()
    
    time.sleep(3)
    app.quit()
    
    
    • 新建excel文件
    import xlwings as xw
    
    app = xw.App(visible=True, add_book=False)
    
    # 添加一个新的工作薄
    wb = app.books.add()
    
    # 保存文件
    wb.save('./a2.xlsx')
    wb.close()
    app.quit()
    

    xlwings sheet-api

    • 新建sheet
    wb.sheets.add("sheet2")
    
    • 删除sheet
    wb.sheets["sheet2"].delete()
    
    • 查看当前表格名
    wb.sheets[1].name
    
    • 重命名表格sheet
    wb.sheets[1].name=“abc”
    
    • 清空整张表格的内容和格式
    wb.sheets[1].clear()
    
    • 查看当前活跃的sheet
    wb.sheets.active
    sh = wb.sheets.active
    sh.range("A1").value="A1"
    
    • 激活指定的sheet
    wb.sheets["sheet1"].activate()
    

    xlwings 操作数据

    • 引用单元格
    import xlwings as xw
    import time
    
    app = xw.App(visible=True, add_book=False)
    wb = app.books.open("./a.xlsx")
    sht = wb.sheets["sheet1"]
    # TODO 待输入-见下面示例
    
    # A1 单元格
    wb.sheets["sheet1"].range("A1")
    
    # A2 单元格
    sht.range("A2")
    
    # A3单元格-xw-当前活跃的app-book-sheet
    xw.Range("A3")
    
    # A4单元格
    rng_a4 = sht["A4"]
    
    # A1:B3 单元格
    rng_a1_b3 = sht["A1:B3"]
    rng_a1_b3_2 = sht.range("A1:B3")
    xw.Range((1, 1), (3, 2))
    
    # C1单元格
    rng_c1 = sht[0, 2]
    
    time.sleep(3)
    wb.save()
    wb.close()
    app.quit()
    
    • 写入数据
    1. 单个单元格输入
    sht.range("A1").value="A1"
    

    在这里插入图片描述

    1. 输入行-- 在A2输入1,B2输入2
    sht.range("A2").value=[1,2]
    

    在这里插入图片描述

    1. 输入行-A3-A4-A5赋值
    sht.range("A3").options(transpose=True).value = ["行", "行", "行"]
    

    在这里插入图片描述

    1. 输入表格
    sht.range('A4').options(expand='table').value = [[1, 2], [3, 4]]
    sht.range("A4:B5").value = [[1, 2], [3, 4]]
    

    在这里插入图片描述

    xlwings 读取数据

    • 读取
    sht.range("A1").value
    
    sht.range("A1:A3").value
    
    sht.range("A1:B3").value
    
    xw.Range("A1").value
    
    
    展开全文
  • xlwings 教程.docx

    2019-08-26 15:21:26
    xlwings如何设置字体、颜色等属性?参考晚上资源,记录xlwings包含格式、字体的设置。
  • xlwings_demo.zip

    2020-04-25 04:31:35
    excel 测试文件和 python 脚本文件 https://blog.csdn.net/cuncaojin/article/details/105686750
  • 基于xlwings的Documents写的中文实用教程代码版
  • 0、前言  因产品的同学试着用python统计Excel表格,但百度的程序又一直有各种问题, 所以叫我帮用python实现一个统计Excel表格程序;我之前也没有写过python操作Excel表格的程序,快速搜索实现了一下,还是发现一些...
  • xlwings库的基本使用笔记

    千次阅读 2019-08-22 08:37:51
    xlwings的安装; 在cmd命令窗口下pip下xlwings库 具体在cmd下输入命令行:pip install xlwings 安装失败,根据报错自行百度。 导入xlwings库 import xlwings as xw 总结操纵打开excel的方式: 1.利用...

    xlwings的安装;

    在cmd命令窗口下pip下xlwings库

    具体在cmd下输入命令行:pip install xlwings

    安装失败,根据报错自行百度。

    导入xlwings库

    import xlwings as xw

     

    总结操纵打开excel的方式:

    1.利用xlwings中的Book

    filepath=r'C:\Users\gztsalfiel\Desktop\helpdesk 任务mark表.xlsx'
    wb=xw.Book(filepath)#利用该方式操纵excel 
    sht=wb.sheets[0]

    2.创建应用打开excel,但这种方式需要注意打开后记得关闭

    app = xw.App(visible=False, add_book=False)
    wb=app.books.open(filepath)
    sht=wb.sheets[0]
    wb.close()
    app.quit()
    app.kill()

    3.可以选择创建新的sheet表

    wb=app.books.add()

    这种情况在操纵excel的时候需要注意;当遇到错误的时候,需要扑捉异常,关闭相关打开的excel应用。

    操纵excel的方法;

    1.建立好相关的应用后读取工作表

    sht=wb.sheets[0]

    2.读取表中单元格中的值及赋值

    taskdata=sht.range('A1').expand('table').value  #整表读取
    sht.range('A{}'.format(nrow)).value=datares  #写入表格

    3.操纵excel 的一些方法

    1.sheet 常用的api


    # 引用某指定sheet
    sht=xw.books['工作簿名称'].sheets['sheet的名称']
    # 激活sheet为活动工作表
    sht.activate()
    # 清除sheet的内容和格式
    sht.clear()
    # 清除sheet的内容
    sht.contents()
    # 获取sheet的名称
    sht.name
    # 删除sheet
    sht.delete

    2.range常用的api

     

    # 引用当前活动工作表的单元格

    rng=xw.Range('A1')


    # 加入超链接
    # rng.add_hyperlink(r'www.baidu.com','百度',‘提示:点击即链接到百度')


    # 取得当前range的地址
    rng.address
    rng.get_address()


    # 清除range的内容
    rng.clear_contents()


    # 清除格式和内容
    rng.clear()


    # 取得range的背景色,以元组形式返回RGB值
    rng.color


    # 设置range的颜色
    rng.color=(255,255,255)


    # 清除range的背景色
    rng.color=None


    # 获得range的第一列列标
    rng.column


    # 返回range中单元格的数据
    rng.count


    # 返回current_region
    rng.current_region


    # 返回ctrl + 方向
    rng.end('down')


    # 获取公式或者输入公式
    rng.formula='=SUM(B1:B5)'


    # 数组公式
    rng.formula_array


    # 获得单元格的绝对地址
    rng.get_address(row_absolute=True, column_absolute=True,include_sheetname=False, external=False)


    # 获得列宽
    rng.column_width


    # 返回range的总宽度
    rng.width


    # 获得range的超链接
    rng.hyperlink


    # 获得range中右下角最后一个单元格
    rng.last_cell


    # range平移
    rng.offset(row_offset=0,column_offset=0)


    #range进行resize改变range的大小
    rng.resize(row_size=None,column_size=None)


    # range的第一行行标
    rng.row


    # 行的高度,所有行一样高返回行高,不一样返回None
    rng.row_height


    # 返回range的总高度
    rng.height


    # 返回range的行数和列数
    rng.shape


    # 返回range所在的sheet
    rng.sheet


    #返回range的所有行
    rng.rows


    # range的第一行
    rng.rows[0]


    # range的总行数
    rng.rows.count


    # 返回range的所有列
    rng.columns


    # 返回range的第一列
    rng.columns[0]


    # 返回range的列数
    rng.columns.count


    # 所有range的大小自适应
    rng.autofit()


    # 所有列宽度自适应
    rng.columns.autofit()


    # 所有行宽度自适应
    rng.rows.autofit()

     

     

    books 工作簿集合的api
    # 新建工作簿
    xw.books.add()
    # 引用当前活动工作簿
    xw.books.active

     

     

    sheets 工作表的集合
    # 新建工作表
    xw.sheets.add(name=None,before=None,after=None)
    # 引用当前活动sheet
    xw.sheets.active

     

     

    调用相关的api时可以参照vba的函数方法进行调用

    调用api其实质是调用的win32com中的方法调用vba中自带的方法

    利用xlwings调用相关的api查看调用的参数可以在xlwings中的constants中查看

    由于vba  excel 有工作簿和工作表及应用的对象,相关调用的方法在相关的对象之后添加 .api.方法进行调用。

    可以参照vba的官方教程:vba官方教程

    相关调用api的时候可以适当的增加一些vba的结构语法

    展开全文
  • python与xlwings的交互
  • xlwingsxlwings是BSD许可的Python库,可以轻松地从Excel调用Python,反之亦然。 它可以在Windows和macOS上与Microsoft Excel一起使用。 订阅新闻通讯或通过以下方式在Twitter上关注我们
  • Python-xlwings-调用Excel的工具.pdf
  • xlwings使用教程

    万次阅读 多人点赞 2019-10-21 15:34:11
    python操作Excel的模块,网上提到的模块大致有:xlwings、xlrd、xlwt、openpyxl、pyxll等,他们提供的功能归纳起来有两种:一、用python读写Excel文件,实际上就是读写有格式的文本文件,操作excel文件和操作text、...

    (一)

    python操作Excel的模块,网上提到的模块大致有:xlwings、xlrd、xlwt、openpyxl、pyxll等,他们提供的功能归纳起来有两种:一、用python读写Excel文件,实际上就是读写有格式的文本文件,操作excel文件和操作text、csv文件没有区别,Excel文件只是用来储存数据。二、除了操作数据,还可以调整Excel文件的表格宽度、字体颜色等。另外需要提到的是用COM调用Excel的API操作Excel文档也是可行的,相当麻烦基本和VBA没有区别。

    xlwings官网.png


    xlwings的特色

     

    • xlwings能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改
    • 可以和matplotlib以及pandas无缝连接
    • 可以调用Excel文件中VBA写好的程序,也可以让VBA调用用Python写的程序。
    • 开源免费,一直在更新

    基本操作

    xlwings基本对象

    1. 打开已保存的Excel文档
      # 导入xlwings模块,打开Excel程序,默认设置:程序可见,只打开不新建工作薄,屏幕更新关闭
      import xlwings as xw
      app=xw.App(visible=True,add_book=False)
      app.display_alerts=False
      app.screen_updating=False
      # 文件位置:filepath,打开test文档,然后保存,关闭,结束程序
      filepath=r'g:\Python Scripts\test.xlsx'
      wb=app.books.open(filepath)
      wb.save()
      wb.close()
      app.quit()
    2. 新建Excel文档,命名为test.xlsx,并保存在D盘。
      import xlwings as xw
      app=xw.App(visible=True,add_book=False)
      wb=app.books.add()
      wb.save(r'd:\test.xlsx')
      wb.close()
      app.quit()
    3. 在单元格输入值
      新建test.xlsx,在sheet1的第一个单元格输入 “人生” ,然后保存关闭,退出Excel程序。
      import xlwings as xw
      app=xw.App(visible=True,add_book=False)
      wb=app.books.add()
      # wb就是新建的工作簿(workbook),下面则对wb的sheet1的A1单元格赋值
      wb.sheets['sheet1'].range('A1').value='人生'
      wb.save(r'd:\test.xlsx')
      wb.close()
      app.quit()
      打开已保存的test.xlsx,在sheet2的第二个单元格输入“苦短”,然后保存关闭,退出Excel程序
      import xlwings as xw
      app=xw.App(visible=True,add_book=False)
      wb=app.books.open(r'd:\test.xlsx')
      # wb就是新建的工作簿(workbook),下面则对wb的sheet1的A1单元格赋值
      wb.sheets['sheet1'].range('A1').value='苦短'
      wb.save()
      wb.close()
      app.quit()
      掌握以上代码,已经完全可以把Excel当作一个txt文本进行数据储存了,也可以读取Excel文件的数据,进行计算后,并将结果保存在Excel中。

    引用工作簿、工作表和单元格

    1. 引用工作簿,注意工作簿应该首先被打开
      wb.=xw.books['工作簿的名字‘]
    2. 引用活动工作簿
      wb=xw.books.active
    3. 引用工作簿中的sheet
      sht=xw.books['工作簿的名字‘].sheets['sheet的名字']
      # 或者
      wb=xw.books['工作簿的名字']
      sht=wb.sheets[sheet的名字]
    4. 引用活动sheet
      sht=xw.sheets.active
    5. 引用A1单元格
      rng=xw.books['工作簿的名字‘].sheets['sheet的名字']
      # 或者
      sht=xw.books['工作簿的名字‘].sheets['sheet的名字']
      rng=sht.range('A1')
    6. 引用活动sheet上的单元格
      # 注意Range首字母大写
      rng=xw.Range('A1')
      其中需要注意的是单元格的完全引用路径是:
      # 第一个Excel程序的第一个工作薄的第一张sheet的第一个单元格
      xw.apps[0].books[0].sheets[0].range('A1')
      迅速引用单元格的方式是
      sht=xw.books['名字'].sheets['名字']
      # A1单元格
      rng=sht[’A1']
      # A1:B5单元格
      rng=sht['A1:B5']
      # 在第i+1行,第j+1列的单元格
      # B1单元格
      rng=sht[0,1]
      # A1:J10
      rng=sht[:10,:10]

    PS: 对于单元格也可以用表示行列的tuple进行引用
    # A1单元格的引用
    xw.Range(1,1)
    #A1:C3单元格的引用
    xw.Range((1,1),(3,3))

    储存数据

    1. 储存单个值
      # 注意".value“
      sht.range('A1').value=1
    2. 储存列表
      # 将列表[1,2,3]储存在A1:C1中
      sht.range('A1').value=[1,2,3]
      # 将列表[1,2,3]储存在A1:A3中
      sht.range('A1').options(transpose=True).value=[1,2,3]
      # 将2x2表格,即二维数组,储存在A1:B2中,如第一行1,2,第二行3,4
      sht.range('A1').options(expand='table').value=[[1,2],[3,4]]

    读取数据

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

    (二)

    在上一篇插上翅膀,让Excel飞起来——xlwings(一)中提到利用xlwings模块,用python操作Excel有如下的优点:

    • xlwings能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改
    • 可以和matplotlib以及pandas无缝连接
    • 可以调用Excel文件中VBA写好的程序,也可以让VBA调用用Python写的程序。
    • 开源免费,一直在更新

    本文紧接着上文介绍了xlwings模块一些常用的api

     

    xlwings基本对象

    常用函数和方法

    1. Book 工作簿常用的api
      wb=xw.books[‘工作簿名称']
      • wb.activate()激活为当前工作簿
      • wb.fullname 返回工作簿的绝对路径
      • wb.name 返回工作簿的名称
      • wb.save(path=None) 保存工作簿,默认路径为工作簿原路径,若未保存则为脚本所在的路径
        -wb. close() 关闭工作簿
        代码例子:
        # 引用Excel程序中,当前的工作簿
        wb=xw.books.acitve
        # 返回工作簿的绝对路径
        x=wb.fullname
        # 返回工作簿的名称
        x=wb.name
        # 保存工作簿,默认路径为工作簿原路径,若未保存则为脚本所在的路径
        x=wb.save(path=None)
        # 关闭工作簿
        x=wb.close()
    2. sheet 常用的api
      # 引用某指定sheet
      sht=xw.books['工作簿名称'].sheets['sheet的名称']
      # 激活sheet为活动工作表
      sht.activate()
      # 清除sheet的内容和格式
      sht.clear()
      # 清除sheet的内容
      sht.contents()
      # 获取sheet的名称
      sht.name
      # 删除sheet
      sht.delete
    3. range常用的api
      # 引用当前活动工作表的单元格
      rng=xw.Range('A1')
      # 加入超链接
      # rng.add_hyperlink(r'www.baidu.com','百度',‘提示:点击即链接到百度')
      # 取得当前range的地址
      rng.address
      rng.get_address()
      # 清除range的内容
      rng.clear_contents()
      # 清除格式和内容
      rng.clear()
      # 取得range的背景色,以元组形式返回RGB值
      rng.color
      # 设置range的颜色
      rng.color=(255,255,255)
      # 清除range的背景色
      rng.color=None
      # 获得range的第一列列标
      rng.column
      # 返回range中单元格的数据
      rng.count
      # 返回current_region
      rng.current_region
      # 返回ctrl + 方向
      rng.end('down')
      # 获取公式或者输入公式
      rng.formula='=SUM(B1:B5)'
      # 数组公式
      rng.formula_array
      # 获得单元格的绝对地址
      rng.get_address(row_absolute=True, column_absolute=True,include_sheetname=False, external=False)
      # 获得列宽
      rng.column_width
      # 返回range的总宽度
      rng.width
      # 获得range的超链接
      rng.hyperlink
      # 获得range中右下角最后一个单元格
      rng.last_cell
      # range平移
      rng.offset(row_offset=0,column_offset=0)
      #range进行resize改变range的大小
      rng.resize(row_size=None,column_size=None)
      # range的第一行行标
      rng.row
      # 行的高度,所有行一样高返回行高,不一样返回None
      rng.row_height
      # 返回range的总高度
      rng.height
      # 返回range的行数和列数
      rng.shape
      # 返回range所在的sheet
      rng.sheet
      #返回range的所有行
      rng.rows
      # range的第一行
      rng.rows[0]
      # range的总行数
      rng.rows.count
      # 返回range的所有列
      rng.columns
      # 返回range的第一列
      rng.columns[0]
      # 返回range的列数
      rng.columns.count
      # 所有range的大小自适应
      rng.autofit()
      # 所有列宽度自适应
      rng.columns.autofit()
      # 所有行宽度自适应
      rng.rows.autofit()
    4. books 工作簿集合的api
      # 新建工作簿
      xw.books.add()
      # 引用当前活动工作簿
      xw.books.active
    5. sheets 工作表的集合
      # 新建工作表
      xw.sheets.add(name=None,before=None,after=None)
      # 引用当前活动sheet
      xw.sheets.active

    实例

    大Z老师,教了小z同学怎么用python操作Excel之后,利用第一篇和第二篇的知识,编写了一个python小脚本,给小Z同学演示了一下怎么用python调整单元格的行宽、列宽和背景色,做一些Interesting的事。

    大Z老师的作品.png

    小Z同学在看了这么cliche但是好玩的东西之后,自己果断地修改了代码,改变了单元格的颜色,并在sheet里面进行了题字,然后,便有新的作品:

    小z的作品.png

    下一课有机会教小z同学,利用python自带的time模块,让Excel中静态的画和字动起来,成为像gif一样的图片。

     

    (三)

    【剧情回顾】

    1. xlwings基本对象

       

      xlwings基本对象

       

      App相当于Excel程序,Book相当于工作簿。N个Excel程序则由apps表示,N个工作簿由books表示。

    2. 对工作簿的操作
    #导入xlwings模块
    import xlwings as xw
    #新建工作簿,这里默认为新建了一个App,即打开Excel程序,并新建一个工作簿
    xw.Book()
    #引用工作簿
    xw.Book('工作簿3')
    # 引用工作簿也可以用books
    xw.books['工作簿3’]
    #打开已有工作簿
    xw.Book(r'e:\myworkbook.xlsx')
    
    1. 对sheet以及Range的操作
    import xlwings as xw
    wb=xw.Book()
    # 引用名字为"sheet2"的sheet
    sht=wb.sheets['sheet2']
    # 引用"sheet2"中的B1单元格
    rng=sht.range('B1')
    # 将B1单元格的值改为666
    rng.value=666
    

    数据结构

    1. 一维数据
      python的列表,可以和Excel中的行列进行数据交换,python中的一维列表,在Excel中默认为一行数据
     import xlwings as xw
    sht=xw.sheets.active
    # 将1,2,3分别写入了A1,B1,C1单元格中
    sht.range('A1').value=[1,2,3]
    # 将A1,B1,C1单元格的值存入list1列表中
    list1=sht.range('A1:C1').value
    # 将1,2,3分别写入了A1,A2,A3单元格中
    sht.range('A1').options(transpose=True).value=[1,2,3]
    # 将A1,A2,A3单元格中值存入list1列表中
    list1=sht.range('A1:A3').value
    
    1. 二维数据
      python的二维列表,可以转换为Excel中的行列。二维列表,即列表中的元素还是列表。在Excel中,二维列表中的列表元素,代表Excel表格中的一列。例如:
    # 将a1,a2,a3输入第一列,b1,b2,b3输入第二列
    list1=[[‘a1’,'a2','a3'],['b1','b2','b3']]
    sht.range('A1').value=list1
    

    运行结果

    # 将A1:B3的值赋给二维列表list1
    list1=sht.range('A1:B3‘).value
    
    1. Excel中区域的选取表格
    # 选取第一列
    rng=sht. range('A1').expand('down')
    rng.value=['a1','a2','a3']
    

     

    第一列

    # 选取第一行
    rng=sht.range('A1').expand('right')
    rng=['a1','b1']
    

    第一行

    # 选取表格
    rng.sht.range('A1').expand('table')
    rng.value=[[‘a1’,'a2','a3'],['b1','b2','b3']]
    

    表格

    结束

    • 本文首先简单介绍了,通过Python运用xlwings模块,对Excel工作簿、工作表和单元格的操作。
    • 再介绍了xlwings,如何对Excel表格的行和列写入和引用数据
    • 通过二维或者一维列表对Excel工作表的数据进行写入或者引用,既简化了代码,也提高了程序的效率。因为python读写Excel表格的速度,原小于python程序自身的运行速度。

    (四)

    前言

    当年看《别怕,Excel VBA其实很简单》相见恨晚,看了第一版电子版之后,买了纸质版,然后将其送人。而后,发现出了第二版,买之收藏。之后,发现Python这一编程语言,简直是逆天,业余非程序员的福音。人生苦短,我用python。简短几句代码,实现好多自己不敢想的功能。
    自学VBA发现对VBA和python,我有着这样几个看法:(只是针对自动化办公)

    • 非专业表哥,只是普通办公,希望偶尔遇到点重复的工作可以自动化一下。VBA对于我来说,要记得东西还是太多了,语法上不简洁。每写一个功能,代码太长了。
    • VBA虽然在很多程序都有接口,但是,应用范围还是略窄,对于一般用户深入学习后,但是,应用场景太少。有任务驱动,才有动力去提高水平。
    • Python运行速度绝对不算快的,但是,绝对比在Excel中运行VBA的速度还是要快很多
    • Python语言简洁(python大法好),模块丰富,有好多大神造好的轮子等着我们去用。
    • Python应用范围广,既能帮我解决偶尔遇到的表格问题,也能和其他各种软件或者平台联接起来。

    运用Python自定义宏(仅限Windows)

    1. 准备工作
    2. 安装xlwings模块
    • 下载模版文件,百度网盘链接:xlwings自定义宏和函数模版

      文件列表


      其中,自定义模版可以修改名称,mymacro为自定义宏的python文件,myfun为自定义函数的python文件。
    • 设置Excel信任中心,信任对VBA工程对象模型的访问

       

      信任中心设置

    1. 自定义宏
      用记事本打开mymacro0,输入下列语句:
    import xlwings as xw
    @xw.sub
    def my_macro():
        wb = xw.Book.caller()
        wb.sheets[0].range('A1').value = wb.name
    

    则宏名称为my_macro的宏就编写好了,将工作簿的名称输入到A1单元格。自定义宏只需要前两句不变,后面内容自己编写,即自定义宏需要以下面的语句为开头

    import xlwings as xw
    @xw.sub
    

    运行方式:先alt+F8运行ImportPythonUDFs内置宏,导入我们的自定义宏和函数,导入后,再运行我定义的my_macro宏。

     

    执行

    1. 自定义函数
      准备工作是一致的,打开myfun0,写入第一个自定义函数:
    import xlwings as xw
    @xw.func
    def myfun():
        wb = xw.Book.caller()
        return wb.name
    

    注意,开头语句为@xw.func而不是@xw.sub了,然后函数相对于宏,有返回值,所以用了return语句。自定义好函数之后,刚可以像Excel自带函数一样的去使用了。如在A1单元格输入”=myfun()",则会得到工作簿的名称。

    结束

    本文给出了xlwings模块自定义宏和函数的模版,然后简单介绍了如何去定义宏和函数。注意:

    • 一个python文件,只能定义一个宏或者函数,所以模版中已经默认分别给出了三个宏和函数文件,方便直接使用。
    • python文件的名称和相对文件位置不能改变,Excel文件的文件位置不能改变,名称可以改变。如需修改,请参考xlwings官方文档。

    作者:LuckyFrog
    链接:https://www.jianshu.com/p/e21894fc5501
    来源:简书
    著作权归作者所有。

     

    参考资料:

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

    https://www.kancloud.cn/gnefnuy/xlwings-docs/1127450

    展开全文
  • Xlwings学习笔记Python基本延时函数代码换行反斜杠 \ ——不影响输出结果的代码换行三引号 ''' ''' —— 令字符串的打印结果换行Xlwings导入xlwings模块打开、保存、关闭Excel文档在多个工作簿或sheet之间工作工作...
  • Python xlwings - API

    2021-04-03 14:56:17
    Python xlwings - API https://docs.xlwings.org/en/stable/api.html # 官方文档 xw - apps(app) - books(book) - sheets(sheet) - range(range_row,range_column) 顶级方法 1. xlwings.view(obj, sheet=None, ...
  • xlwings库的常规操作

    2021-05-30 10:38:00
    xlwings的使用,必须先导入 import xlwings 在程序中使用xlwings,必须首先创建一个app,在这个app下才能继续创建一个或多个work_book,在work_book下才能创建一个或多个work_sheet,这是xlwings的基本操作逻辑。 ...
  • xlwings模块学习

    2019-12-07 09:29:58
    xlwings的优点 xlwings能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改 可以和matplotlib以及pandas无缝连接 可以调用Excel文件中VBA写好的程序,也可以让VBA调用用Python写的程序。 开源免费...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,475
精华内容 1,390
关键字:

xlwings