• xlwings笔记


    在这里插入图片描述

    文章目录

    介绍

    1. pypi
    2. 官网英文文档
    3. 官方中文文档
      1. 好像翻译的不太好
    4. API文档
    5. xlwings只能用在安装了office的windows系统上
    6. 逻辑关系
      在这里插入图片描述
    7. Excel程序用App来表示,多个Excel程序集合用Apps表示;
    8. 单个工作簿用Book表示,工作簿集合用Books表示;
    9. 单个工作表用Sheet表示,工作表集合用Sheets表示;
    10. 区域用Range表示,既可以是一个单元格,也可以是一片单元格区域。
    11. 注意,在xlwings中是不区分大小写的,SHEET1和sheet1的含义一样。

    xlwings 常用实例

    读取、写入单元格

    1. 代码
      import xlwings as xw
      
      excel_file = r"D:\Users\Liu\Desktop\cameras.xlsx"
      app = xw.App(visible=True,add_book=False)
      wb = app.books.open(excel_file) # 打开指定的excel文件
      #sht1 = wb.sheets['cameras'] # 指定工作表的名称
      sht1 = xw.sheets.active # 当前活动工作表
      cell_1 = sht1.range("A3") # 指定单元格
      cell_2 = sht1.range(3,4) # 指定单元格,3行4列
      con = cell_1.value # 读取单元格内容
      cell_2.value = con # 将con内容写入到cell_2单元格
      wb.save(excel_file) # 保存文件
      wb.close() # 关闭文件
      app.quit() # 退出应用
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14

    将列表写入某个范围

    1. 代码
      import xlwings as xw
      
      excel_file = r"D:\新建 Microsoft Excel 工作表.xlsx"
      app = xw.App(visible=True,add_book=False)
      wb = app.books.open(excel_file) # 打开指定的excel文件
      sht1 = xw.sheets.active # 当前活动工作表
      list1 = ['a','b','c','d']
      sht1.range('A1').options(transpose=True).value = list1 # 列方式写入列表,每个单元格1个元素
      sht1.range('c1').value = list1 # 行方式写入列表,每个单元格1个元素
      #wb.save(excel_file) # 保存文件
      #wb.close() # 关闭文件
      #app.quit() # 退出应用
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12

    xlwings 安装

    1. 安装
      pip3 install xlwings
      
      • 1
    2. 安装excel插件,在excel中显示xlwings标签
      xlwings addin install
      
      • 1

    顶级函数

    顶级函数xlwings.load

    1. 介绍
      1. 将活动工作簿的选定单元格加载到 pandas DataFrame 中
      2. 如果您选择具有相邻单元格的单个单元格,则范围会自动扩展(通过当前区域)并变成 pandas DataFrame。
      3. 如果您没有安装 pandas,它会将值作为嵌套列表返回。
      4. 注意:
        1. 只能在交互式环境中使用它,例如 Jupyter!不要在脚本中使用它,因为它取决于活动的工作薄。
    2. 语法
      xlwings.load(index=1, header=1, chunksize=5000)
      
      • 1
    3. 参数
      参数取值范围说明
      indexbool或int,默认1定义左侧将转换为 DataFrame 索引的列数
      headerbool或int,默认1定义顶部的行数,这些行数将变成 DataFrame 的列
      chunksizeint , 默认 5000对大数组的加载进行分块
    4. 示例
      import xlwings as xw
      xw.load()
      
      • 1
      • 2

    顶级函数xlwings.view

    1. 介绍
      1. 默认情况下,打开一个新工作簿并在其第一个工作表上显示一个对象。
      2. 如果您提供工作表对象,它将在现有工作表上显示对象之前清除工作表。
      3. 注意:
        1. 只能在交互式环境中使用它,例如 Jupyter!不要在脚本中使用它,因为它取决于活动的工作薄。
    2. 语法
      xlwings.view(obj, sheet=None, table=True, chunksize=5000)
      
      • 1
    3. 参数
      参数取值范围说明
      obj任何带有内置转换器的类型要显示的对象,例如数字、字符串、列表、numpy 数组、pandas DataFrames
      sheetSheet ,默认 None工作表对象。如果未提供,则使用新工作簿的第一个。
      tablebool , 默认 True如果你的对象是 pandas DataFrame,默认情况下它被格式化为 Excel Table
      chunksizeint , 默认 5000对大数组的加载进行分块
    4. 示例
      import xlwings as xw
      import pandas as pd
      import numpy as np
      df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
      xw.view(df)
      
      • 1
      • 2
      • 3
      • 4
      • 5

    apps

    apps 介绍

    1. 所有app对象的集合
    2. 打开屏幕更新,我们可以看到xlwings对Excel进行操作的过程,关闭更新可以加速脚本运行。默认是打开的。如果关闭了,脚本运行完毕之后,记住把screen_updating属性值改回 True

    apps属性

    1. 属性
      属性取值范围说明
      api返回正在使用的引擎的本机对象(pywin32或appscriptobj)
      books当前打开的所有 Book 对象的集合
      calculation‘manual’, ‘automatic’,‘semiautomatic’计算模式
      cut_copy_mode获取或设置剪切或复制模式的状态
      display_alertsbool,默认 True在代码运行时抑制提示和警报消息,
      enable_eventsbool事件
      hwnd返回窗口句柄(仅限 Windows)
      interactivebool如果将此属性设置为False,Excel 将阻止来自键盘和鼠标的所有输入(除了代码显示的对话框的输入)
      macro(name)带有或不带有模块名称的子或函数的名称在 Excel VBA 中运行不属于特定工作簿但属于加载项的子程序或函数。
      pid返回程序的pid
      quit()退出应用程序而不保存任何工作簿
      selection将选定的单元格返回为 Range。
      startup_path返回XLSTART通过执行将 xlwings 加载项复制到的路径
      status_barbool,str获取或设置状态栏的值
      version显示Excel的版本号

    查看Apps包含的所有App

    Apps = xw.apps
    print ("查看Apps包含的所有App:",Apps)
    
    • 1
    • 2

    返回App总数

    count = xw.apps.count
    print ("返回App总数:",count)
    
    • 1
    • 2

    查看所有的PID

    keys = xw.apps.keys()
    print ("查看所有的PID:",keys)
    
    • 1
    • 2

    返回当前活动App

    app = xw.apps.active
    
    • 1

    激活App

    app.activate()
    
    • 1

    设置计算模式

    import xlwings as xw
    wb = xw.Book()
    wb.app.calculation = 'manual' # 模式:'manual', 'automatic','semiautomatic'
    
    • 1
    • 2
    • 3

    传入参数

    app.activate(steal_focus=True)
    
    • 1

    退出App

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

    VBA使用示例

    1. 在工作薄中插入模块,定义VBA
      Function MySum(x, y)
          MySum = x + y
      End Function
      
      • 1
      • 2
      • 3
    2. 在Python中调用定义的VBA函数
      import xlwings as xw
      app = xw.App()
      my_sum = app.macro('MySum')
      
      • 1
      • 2
      • 3

    App对象引用

    # 引用app,使用PID引用
    app = xw.apps[1668]
    
    • 1
    • 2

    屏幕更新_screen_updating

    1. 关闭屏幕更新,看不到操作过程,速度快
    2. 关请记住在脚本结束时将 screen_updating 属性设置回 True
      app.screen_updating # 返回屏幕更新状态
      app.screen_updating = False # 设置屏幕更新状态
      
      • 1
      • 2

    App可见性

    1. visible用来设置程序是否可见,True表示可见(默认),Flase不可见。
    2. 可以设置,可以查看,为布尔类型
      app.visible # 返回状态
      app.visible = True # 设置App为可见
      
      • 1
      • 2

    获取创建工作簿的App

    wb.app
    
    • 1

    创建App

    1. add_book用来设置是否自动创建工作簿,True表示自动创建(默认),False不创建
    2. 当设置成add_book=False时,可以创建App,但是还未生成PID,只有当这个App创建了工作簿后,才会生成自己的PID
    3. 示例
      # 创建App
      app = xw.App()
      app = xw.App(visible=True,add_book=False)
      
      • 1
      • 2
      • 3

    计算公式

    1. 重新计算一遍所有工作簿里的公式
      app.calculate()
      
      • 1

    提醒信息是否显示

    1. 示例
      app.display_alerts=False  #
      cut_copy_mode
      
      • 1
      • 2

    工作薄book

    工作薄的引用

    当前活动App的工作簿集合
    1. 代码
      books = xw.books
      
      • 1
    指定App的所有工作簿的集合
    1. 代码
      books = app.books
      
      • 1
    在当前App中引用
    1. 只可以引用工作簿。不能打开工作簿
    2. 代码
      books = app.books
      
      • 1
    在新App中引用
    1. 既可以打开工作薄也可以引用工作簿。也就是说,当工作簿未打开时,它可以打开工作薄,当工作簿处于打开状态时,它可以引用工作簿
    2. 代码
      wb = xw.Book('test.xlsx')
      
      • 1
    引用活动工作簿
    1. 代码
      wb = app.books.active
      
      • 1

    工作薄属性

    全名_fullname
    1. 以字符串形式返回对象的名称,包括其在磁盘上的路径。只读字符串
    2. 语法
      工作薄对象.fullname
      
      • 1
    名称_name
    1. 以 str 形式返回工作薄名称
    2. 包含文件名及扩展名,不包含目录信息
    3. 语法
      工作薄对象.name
      
      • 1
    名称集合names
    1. 返回一个名称集合,该集合表示指定书中的所有名称(包括所有特定于工作表的名称)
    2. 语法
      工作薄对象.names
      
      • 1
    名称集合selection
    1. 将选定的单元格返回为 Range
    2. 语法
      工作薄对象.selection
      
      • 1
    3. 输出示例
      Range [test.xlsx]test3!$A$1:$C$11
      
      • 1
    工作薄集合sheets
    1. 返回代表书中所有工作表的工作表集合
    2. 语法
      工作薄对象.sheets
      
      • 1

    工作薄方法

    创建工作薄即excel文件_add()
    1. 创建工作薄。新工作薄成为活动工作薄。返回一个 工作薄 对象
    2. 代码
      import xlwings as xw
      excel_file = "D:\\test.xlsx"
      app = xw.App(visible=True,add_book=False)
      wb = app.books.add()
      wb.close()
      app.quit()
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    打开读取工作薄_open()
    1. 如果一个工作薄尚未打开,则打开它并返回它。
    2. 如果它已经打开,它不会引发异常,而只是返回 Book 对象
    3. 语法
      open(fullname=None, update_links=None, read_only=None, format=None, password=None, write_res_password=None, ignore_read_only_recommended=None, origin=None, delimiter=None, editable=None, notify=None, converter=None, add_to_mru=None, local=None, corrupt_load=None, json=None)
      
      • 1
    4. 参数
      参数取值范围说明
      fullnamestr或路径对象如果没有完整路径,它会在当前工作目录中查找文件
      update_linksbool默认 None如果省略此参数,则提示用户指定如何更新链接
      read_onlybool,默认 False以只读模式打开工作簿
      formatstr如果打开文本文件,指定分隔符
      passwordstr指定工作簿的密码
      write_res_passwordstr写入保留写入工作簿的密码
      ignore_read_only_recommendedbool , 默认 False设置True为静音只读推荐消息
      originint仅适用于文本文件。指定它的来源。使用平台常量
      delimiterstr如果格式参数为 6,则指定分隔符
      editablebool, 默认 False此选项仅适用于旧版 Microsoft Excel 4.0 插件
      notifybool , 默认 False当文件可用时通知用户如果文件无法以读/写模式打开
      converterint打开文件时要尝试的第一个文件转换器的索引
      add_to_mrubool , 默认 False将此工作簿添加到最近添加的工作簿列表中
      localbool , 默认 False如果是 True, 根据 Excel 的语言保存文件,否则根据 VBA 的语言保存文件。在 macOS 上不支持
      corrupt_loadint , 默认 xlNormalLoad可以是 xlNormalLoad、xlRepairFile 或 xlExtractData 之一。在 macOS 上不支持。
      jsondict由 MS Office Scripts 或 Google Apps Script xlwings 模块提供的 JSON 对象,但采用反序列化形式,即作为字典
    5. 示例
      import xlwings as xw
      excel_file = "D:\\test.xlsx"
      app = xw.App(visible=True,add_book=False)
      # 在当前App下打开代码所在路径下的工作簿
      wb = app.books.open(excel_file)
      print(wb.name)
      wb.close()
      app.quit()
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
    连接到工作薄
    1. 连接到工作薄的最简单方法是xw.Book
    2. 语法
      class xlwings.Book(fullname=None, update_links=None, read_only=None, format=None, password=None, write_res_password=None, ignore_read_only_recommended=None, origin=None, delimiter=None, editable=None, notify=None, converter=None, add_to_mru=None, local=None, corrupt_load=None, impl=None, json=None)
      
      • 1
    3. 参数参考上面的打开读取工作薄(open)
    4. 示例
      app = xw.App()
      app.books['Book1']
      
      • 1
      • 2
    激活工作薄_activate()
    1. 激活工作薄
    2. 语法
      activate(steal_focus=True)
      
      • 1
    3. steal_focus ( bool ,默认 False ) – 如果为 True,则创建最前面的窗口并将焦点从 Python 移交给 Excel。
    _caller()
    1. 当 Python 函数通过 Excel 从 Excel 调用时引用调用书 RunPython。将其打包到从 Excel 调用的函数中
    2. 为了能够轻松地从 Python 调用此类代码进行调试,请使用 xw.Book.set_mock_caller()
    3. 示例
      import xlwings as xw
      
      def my_macro():
         wb = xw.Book.caller()
         wb.sheets[0].range('A1').value = 1
      
      • 1
      • 2
      • 3
      • 4
      • 5
    关闭close()
    1. 关闭工作薄而不保存
    2. 语法
      工作薄对象.close()
      
      • 1
    保存save()
    1. 保存工作簿。如果提供了路径,则其工作方式类似于 Excel 中的 SaveAs()
    2. 如果没有指定路径并且文件之前没有保存过,那么它会以当前文件名保存在当前工作目录中
    3. 现有文件会在不提示的情况下被覆盖
    4. 语法
      save(path=None, password=None)
      
      • 1
    5. 属性
      属性取值范围说明
      pathstr或路径对象,默认 None工作簿的完整路径
      passwordstr ,默认无最大保护密码 15 个字符
    设置Python代码从Excel中运行set_mock_caller ( )
    1. 设置当从 Python 调用代码而不是通过 Excel 从 Excel 调用代码时用于模拟的 Excel 文件RunPython
    2. 示例
      # 这段代码通过RunPython在Excel中运行,而不是直接从Python中运行
      import os
      import xlwings as xw
      
      def my_macro():
         sht = xw.Book.caller().sheets[0]
         sht.range('A1').value = 'Hello xlwings!'
      
      if __name__ == '__main__':
         xw.Book('file.xlsm').set_mock_caller()
         my_macro()
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
    导出到pdf_to_pdf()
    1. 将整个 Excel 工作簿或工作表的子集导出到 PDF 文件
    2. 如果要打印隐藏的工作表,则需要在 下明确列出它们include
    3. 语法
      to_pdf(path=None, include=None, exclude=None, layout=None, exclude_start_string='#', show=False, quality='standard')
      
      • 1
    4. 属性
      属性取值范围说明
      pathstr或路径对象,默认 NonePDF 文件的路径,默认与工作簿同名,在同一目录中。对于未保存的工作簿,它默认为当前工作目录
      includeint或str或list ,默认 None要包括哪些工作表:以工作表索引(如 Excel 中的 1 为基础)或工作表名称的形式提供工作表选择。可以是单个工作表的 int/str 或多个工作表的 int/str 列表
      excludeint或str或list ,默认 None要排除哪些工作表:以工作表索引(如 Excel 中的 1 为基础)或工作表名称的形式提供工作表选择。可以是单个工作表的 int/str 或多个工作表的 int/str 列表
      layoutstr or 路径对象, 默认 None此参数需要 xlwings PRO
      exclude_start_stringstr,默认’#’不会打印以此字符/字符串开头的工作表名称
      show (bool, 默认 False创建后,使用默认应用程序打开 PDF 文件
      qualitystr, 默认 ‘standard’PDF 文件的质量。可以是’standard’或’minimum’

    工作表

    工作表的引用

    指定工作表
    1. 引用第一个工作表,如果使用()表示从1开始,如果使用[]表示从0开始
    2. 代码
      import xlwings as xw
      wb = xw.Book()
      sht1 = wb.sheets[0] # 指定工作表的序号,使用[],表示从0开始
      sht2 = wb.sheets['Sheet1'] # 指定工作表的名称
      sht3 = wb.sheets(1) # 指定工作表的序号,使用(),表示从1开始
      sht4 = xw.sheets.active # 当前活动工作表
      print(sht1.name,sht2.name,sht3.name,sht4.name)
      wb.close()
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

    工作表的属性

    所有工作表的集合_books
    1. 代码
      import xlwings as xw
      excel_file = "D:\\test.xlsx"
      app = xw.App(visible=True,add_book=False)
      wb = app.books.open(excel_file) # 在当前App下打开代码所在路径下的工作簿
      print(xw.sheets) # 激活工作薄
      wb.close()
      app.quit()
      print(xw.Book(excel_file).sheets) # 指定工作薄
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
    活动的工作表_active
    1. 返回活动工作表
    2. 代码
      import xlwings as xw
      excel_file = "D:\\test.xlsx"
      app = xw.App(visible=True,add_book=False)
      wb = app.books.open(excel_file) # 在当前App下打开代码所在路径下的工作簿
      print(xw.sheets.active) # 返回活动的工作表
      wb.close()
      app.quit()
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    工作表所在工作薄_book
    1. 返回指定工作表的工作薄,只读
    2. 代码
      print(工作表对象.book)
      
      • 1
    所有单元格_cells
    1. 返回一个 Range 对象,该对象表示工作表上的所有单元格(不仅仅是当前正在使用的单元格)
    2. 代码
      print(工作表对象.cells)
      
      • 1
    所有图表_charts
    1. 代码
      print(工作表对象.charts)
      
      • 1
    索引_index
    1. 代码
      print(工作表对象.index)
      
      • 1
    名称_name
    1. 代码
      print(工作表对象.name)
      
      • 1
    名称集_names
    1. 回一个名称集合,该集合表示所有特定于工作表的名称(使用“SheetName!”前缀定义的名称)
    2. 代码
      
      
      • 1
    页面设置对象_page_setup
    1. 返回的是一个对象
    2. 代码
      print(wb.sheets['数据'].page_setup)
      
      • 1
    页面设置对象_page_setup
    1. 返回的是一个对象
    2. 代码
      print(wb.sheets['数据'].page_setup)
      
      • 1
    图片_pictures
    1. 代码
      print(wb.sheets['数据'].pictures)
      
      • 1
    图片_pictures
    1. 代码
      print(wb.sheets['数据'].pictures)
      
      • 1
    形状_shapes
    1. 代码
      print(wb.sheets['查询'].shapes)
      
      • 1
    表_tables
    1. 代码
      print(wb.sheets['查询'].tables)
      
      • 1
    表_used_range
    1. 使用的工作表范围
    2. 返回类型:xw.范围
    3. 代码
      print(wb.sheets['查询'].used_range)
      
      • 1
    可见性_visible
    1. 获取或设置 Sheet (bool) 的可见性
    2. -1可见,0不可见(隐藏)
    3. 代码
      print(wb.sheets['数据'].visible)
      
      • 1

    工作表的方法

    创建工作表_add()
    1. 创建一个新工作表并使其成为活动工作表
    2. 语法
      add(name=None, before=None, after=None)
      
      • 1
    3. 属性
      属性取值范围说明
      namestr , 默认 None新工作表的名称。如果没有,将默认为 Excel 的默认名称(如Sheet1)。
      beforeSheet , 默认 None一个对象,在此工作表之前添加新工作表
      afterSheet , 默认 None一个对象,在此工作表之后添加新工作表
    4. 示例
      import xlwings as xw
      excel_file = "D:\\test.xlsx"
      app = xw.App(visible=True,add_book=False)
      wb = app.books.open(excel_file) # 在当前App下打开代码所在路径下的工作簿
      sht = wb.sheets.add('test20',after='sheet1')
      wb.save()
      wb.close()
      app.quit()
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
    激活工作表_activate()
    1. 激活工作表并将其返回
    2. 语法
      activate()
      
      • 1
    自动行高和列宽_autofit()
    1. 在整个工作表上自动调整列、行或两者的宽度
    2. 语法
      autofit(axis=None)
      
      • 1
    3. 属性
      属性取值范围说明
      axisstr,默认无rows或r表示行高,columns或c,表示列宽,无,表示行高和列宽
    4. 示例
      import xlwings as xw
      excel_file = "D:\\test.xlsx"
      app = xw.App(visible=True,add_book=False)
      wb = app.books.open(excel_file) # 在当前App下打开代码所在路径下的工作簿
      sht1 = wb.sheets['test20'].autofit() # 当前工作表所有列,自动列宽
      sht2 = wb.sheets['Sheet1'].autofit('c') # 当前工作表仅C列,自动列宽
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    清除整个工作表的内容和格式_autofit()
    1. 不清除图表
    2. 语法
      clear()
      
      • 1
    3. 示例
      工作表对象.clear()
      
      • 1
    清除整个工作表的内容,但保留格式_clear_contents()
    1. 语法
      clear_contents()
      
      • 1
    2. 示例
      工作表对象.clear_contents
      
      • 1
    清除整个工作表的格式,但保留内容_clear_formats()
    1. 语法
      clear_formats()
      
      • 1
    2. 示例
      工作表对象.clear_formats
      
      • 1
    复制工作表_copy()
    1. 将工作表复制到当前或新工作薄。默认情况下,它会将复制的工作表放在当前工作薄中所有现有工作表之后。返回复制的工作表
    2. 语法
      copy(before=None, after=None, name=None)
      
      • 1
    3. 属性
      属性取值范围说明
      before工作表对象,默认无复制到此工作表之前
      after工作表对象,默认无复制到此工作表之后
      namestr,默认无新工作表的名称
    4. 示例
      工作表对象.copy(after=工作薄对象.sheets[0],name='copied') # 工作薄对象为其他工作薄即可跨工作薄复制
      
      • 1
    删除工作表_delete()
    1. 删除工作表。
    2. 语法
      工作表对象.delete()
      
      • 1
    返回range对象_range()
    1. 返回的是对象
    2. 语法
      print(wb.sheets['数据'].range('B1',"C2"))
      
      • 1
    选择_select()
    1. 选择仅适用于活动工作薄
    2. 语法
      wb.sheets['查询'].select
      
      • 1
    导出到pdf_to_pdf()
    1. 将整个 Excel 工作簿或工作表的子集导出到 PDF 文件
    2. 如果要打印隐藏的工作表,则需要在 下明确列出它们include
    3. 语法
      to_pdf(path=None, include=None, exclude=None, layout=None, exclude_start_string='#', show=False, quality='standard')
      
      • 1
    4. 属性
      属性取值范围说明
      pathstr或路径对象,默认 NonePDF 文件的路径,默认与工作簿同名,在同一目录中。对于未保存的工作簿,它默认为当前工作目录
      includeint或str或list ,默认 None要包括哪些工作表:以工作表索引(如 Excel 中的 1 为基础)或工作表名称的形式提供工作表选择。可以是单个工作表的 int/str 或多个工作表的 int/str 列表
      excludeint或str或list ,默认 None要排除哪些工作表:以工作表索引(如 Excel 中的 1 为基础)或工作表名称的形式提供工作表选择。可以是单个工作表的 int/str 或多个工作表的 int/str 列表
      layoutstr or 路径对象, 默认 None此参数需要 xlwings PRO
      exclude_start_stringstr,默认’#’不会打印以此字符/字符串开头的工作表名称
      show (bool, 默认 False创建后,使用默认应用程序打开 PDF 文件
      qualitystr, 默认 ‘standard’PDF 文件的质量。可以是’standard’或’minimum’

    range

    range类_Range
    1. 返回一个 Range 对象,该对象表示一个单元格或一系列单元格
    2. 语法
      xlwings.Range(cell1=None, cell2=None, **options)
      
      • 1
    3. 参数
      参数取值范围说明
      cell1str or tuple or Range左上角范围的名称,以 A1 表示法或索引元组或名称或 xw.Range 对象。它还可以使用范围运算符(冒号)指定范围,例如 ‘A1:B2’
      cell2str or tuple or Range , 默认 None右下角范围的名称,以 A1 表示法或索引元组或名称或 xw.Range 对象
    4. 示例
      print(xw.Range("A1"))  # 活动表,R是大写
      print(wb.sheets['查询'].range("A1")) #具体表 r是小写
      
      • 1
      • 2

    range的引用

    1. 示例
      xw.Range((1,1), (3,3))
      sht.range((1,1), (3,3))
      sht.range("A2")
      sht.range("A2:C3")
      
      • 1
      • 2
      • 3
      • 4

    range的属性

    地址_address
    1. 返回表示范围引用的字符串值。用于get_address()能够提供参数
    2. 示例
      wb.sheets['查询'].range("A1").address
      
      • 1
    填充颜色_color
    1. 获取和设置指定 Range 的背景颜色
    2. 要设置颜色,请使用 RGB 元组或十六进制字符串或 Excel 颜色常量
    3. 要移除背景,请将颜色设置为,请参阅示例。(0, 0, 0)
    4. 示例
      wb.sheets['查询'].range("A1:G20").color = (255, 0, 0)
      
      • 1
    列_column
    1. 返回指定范围内第一列的编号。只读
    2. 返回类型:int
    3. 示例
      print(wb.sheets['查询'].range("A1:G20").column)
      
      • 1
    列宽_column_width
    1. 获取或设置 Range 的宽度(以字符为单位)
    2. 一个列宽单位等于 Normal 样式中一个字符的宽度。对于比例字体,使用字符 0(零)的宽度
    3. 如果 Range 中的所有列都具有相同的宽度,则返回宽度。如果 Range 中的列具有不同的宽度,则返回 None
    4. column_width 必须在以下范围内:0 <= column_width <= 255
    5. 如果 Range 超出了 Worksheet 的使用范围,并且 Range 中的列具有不同的宽度,则返回第一列的宽度
    6. 返回类型:Integer
    7. 示例
      print(wb.sheets['查询'].range("A1").column_width)  # 查看A列列宽
      工作表对象.range('B1').column_width = 60 # 设置B列列宽
      
      • 1
      • 2
    列_columns
    1. 返回一个RangeColumns表示指定范围内的列的对象
    2. 示例
      print(wb.sheets['查询'].range("A1:E20").columns)
      
      • 1
    计数_count
    1. 返回单元格的数量
    2. 示例
      print(wb.sheets['查询'].range("A1:A5").count)
      
      • 1
    当前区域_current_region
    1. 返回一个 Range 对象
    2. 该对象表示由(但不包括)空白行和空白列的任意组合或工作表边缘限定的范围
    3. 示例
      print(wb.sheets['查询'].range("A4").current_region)
      
      • 1
    公式_formula
    1. 获取或设置给定 Range 的公式
    2. 示例
      工作表对象.range("C16").formula = "=COUNTA(C1:C15)"
      
      • 1
    公式2_formula2
    1. 获取或设置给定 Range 的公式2
    2. 示例
      
      
      • 1
    数组公式_formula_array
    1. 获取或设置给定 Range 的数组公式
    2. 示例
      
      
      • 1
    has_数组_has_array
    1. 如果范围是旧 CSE 数组公式的一部分为True,否则False。
    2. 示例
      
      
      • 1
    高度_height
    1. 返回 Range 的高度(以磅为单位)。只读。
    2. 示例
      print(sht.range("C3").height)
      
      • 1
    超链接_hyperlink
    1. 返回指定 Range 的超链接地址(仅限单个 Cell)
    2. 示例
      print(sht.range("C3").hyperlink)
      
      • 1
    超链接_last_cell
    1. 返回指定范围的右下角单元格。只读
    2. 示例
      print(sht.range("C3:D5").last_cell)
      
      • 1
    左_left
    1. 返回从 A 列左边缘到范围左边缘的距离(以磅为单位)。只读。
    2. 示例
      print(sht.range("C3").left)
      
      • 1
    合并区域_merge_area
    1. 返回一个 Range 对象
    2. 该对象表示包含指定单元格的合并 Range
    3. 如果指定的单元格不在合并范围内,则此属性返回指定的单元格。
    4. 示例
      
      
      • 1
    合并区域_merge_cells
    1. 如果 Range 包含合并的单元格,则返回True,否则False
    2. 示例
      sht.range("C3:C5").merge_cells
      
      • 1
    名称_name
    1. 设置或获取范围的名称
    2. 示例
      sht.range("C3:C5").name = 'test1'
      
      • 1
    名称_note
    1. 返回一个 Note 对象。在引入线程注释之前,注释被称为注释
    2. 示例
      print(sht.range("C3:C5").note)
      
      • 1
    数字格式_number_format
    1. 获取和设置 Range 的 number_format
    2. 示例
      print(sht.range("d1").number_format) # 显示
      sht.range("d1").number_format = '0.00%' # 设置
      
      • 1
      • 2
    原始值_raw_value
    1. 直接获取和设置从正在使用的引擎(pywin32或appscript)传递/接受的值,而无需经过任何 xlwings 的数据清理/转换
    2. 如果速度是一个问题,这可能会有所帮助,但自然是特定于引擎的,即可能会删除跨平台兼容性
    3. 示例
      print(sht.range("a2:d10").raw_value)
      
      • 1
    行_row
    1. 回指定范围内第一行的编号。只读。
    2. 返回类型:int
    3. 示例
      print(sht.range("a2:d10").row)
      
      • 1
    行高_row_height
    1. 获取或设置 Range 的高度(以磅为单位)
    2. 如果 Range 中的所有行都具有相同的高度,则返回高度
    3. 如果 Range 中的行具有不同的高度,则返回 None
    4. 返回类型:float
    5. 示例
      print(sht.range("a7:b10").row_height)
      
      • 1
    行_rows
    1. 返回一个RangeRows对象,该对象表示指定范围内的行
    2. 示例
      print(sht.range("a7:b10").rows)
      print(sht1.used_range.rows.count) # 最后行号
      
      • 1
      • 2
    形状_shape
    1. 范围维度的元组
    2. 示例
      print(sht.range("a7:b10").shape)
      
      • 1
    所在工作表_sheet
    1. 返回 Range 所属的 Sheet 对象
    2. 示例
      print(sht.range("a7:b10").sheet)
      
      • 1
    大小_size
    1. Range 中的元素数
    2. 空单元格也计算在内
    3. 示例
      print(sht.range("a7:b10").size)
      
      • 1
    table_table
    1. 如果范围是其中的一部分,则返回 Table 对象,否则返回None
    2. 示例
      print(sht.range("a7:b10").table)
      
      • 1
    属性_top
    1. 返回从第 1 行的上边缘到范围的上边缘的距离(以磅为单位)。只读。
    2. 返回类型:float
    3. 示例
      print(sht.range("a7:b10").top)
      
      • 1
    值_value
    1. 获取和设置给定 Range 的值
    2. 了解xlwings.Range.options() 如何设置选项,例如,将其转换为 DataFrame 或如何设置块大小
    3. 返回类型:返回的对象取决于正在使用的转换器
    4. 示例
      print(sht.range("a7:b10").top)
      
      • 1
    宽度_width
    1. 返回 Range 的宽度(以磅为单位)。只读
    2. 返回类型:float
    3. 示例
      print(sht.range("a7:b10").width)
      
      • 1
    换行文字_wrap_text
    1. 返回True是否启用了 wrap_text 属性以及False是否禁用了它
    2. 如果不是所有单元格在一个范围内都具有相同的值,则在 Windows 上它会返回 None,而在 macOS 上False
    3. 示例
      print(sht.range("a7:b10").wrap_text)
      
      • 1

    range的方法

    添加超链接_add_hyperlink()
    1. 将超链接添加到指定范围(单个单元格)
    2. 语法
      add_hyperlink(address, text_to_display=None, screen_tip=None)
      
      • 1
    3. 参数
      参数取值范围说明
      addressstr超链接的地址
      text_to_displaystr , 默认 None要为超链接显示的文本。默认为超链接地址
      screen_tipstr , default None当鼠标指针悬停在超链接上时要显示的屏幕提示。默认设置为 '
      - 单击一次即可关注。单击并按住以选择此单元格
    4. 示例
      # 网址链接
      wb.sheets['查询'].range("A1").add_hyperlink("http://www.baidu.com", text_to_display="百度", screen_tip="百度查询")
      # 文件链接
      logFile = Path("C:\Windows\System32\drivers\etc\hosts")
      wb.sheets['总结'].range("D2").add_hyperlink(str(logFile), text_to_display="文本日志", screen_tip="文本日志")
      # 工作簿的其它位置
      wb.sheets[0].api.Hyperlinks.Add(Anchor=wb.sheets[0].range((1,1)).api,Address="",SubAddress=wb.sheets[1].name+"!A1",ScreenTip="",TextToDisplay=wb.sheets[1].name)
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    自动行高、列宽_autofit()
    1. 自动调整范围内所有单元格的宽度和高度
    2. 语法
      autofit()
      
      • 1
    3. 示例
      wb.sheets['查询'].range("A1:E20").columns.autofit() # 仅自动列宽
      wb.sheets['查询'].range("A1:E20").rows.autofit() # 仅自动行高
      
      • 1
      • 2
    清除内容和格式_clear()
    1. 清除 Range 的内容和格式
    2. 示例
      wb.sheets['查询'].range("A1:E20").clear()
      
      • 1
    清除内容,保留格式_clear_contents()
    1. 清除 Range 的内容,但保留格式
    2. 示例
      wb.sheets['查询'].range("A1:E20").clear_contents()
      
      • 1
    清除格式,保留内容_clear_formats()
    1. 清除 Range 的格式,但保留内容
    2. 示例
      wb.sheets['查询'].range("A1:E20").clear_formats()
      
      • 1
    复制_copy()
    1. 将范围复制到目标范围或剪贴板
    2. 语法
      copy(destination=None)
      
      • 1
    3. 参数
      参数取值范围说明
      destinationxlwings.Rangexlwings 指定范围将被复制到的范围。如果省略,则将范围复制到剪贴板
    4. 示例
      wb.sheets['查询'].range("C14:C20").copy(wb.sheets['查询'].range("H2"))
      
      • 1
    复制图片_copy_picture()
    1. 将范围作为图片复制到剪贴板
    2. 语法
      copy_picture(appearance='screen', format='picture')
      
      • 1
    3. 参数
      参数取值范围说明
      appearancestr ,默认 ‘screen’‘screen’ 或 ‘printer’
      formatstr , 默认 ‘picture’‘picture’ 或 ‘bitmap’
    4. 示例
      wb.sheets['查询'].range("A1:A5").copy_picture(appearance='screen', format='picture')
      
      • 1
    删除_delete()
    1. 删除一个单元格或单元格范围
    2. 语法
      delete(shift=None)
      
      • 1
    3. 参数
      参数取值范围说明
      shiftstr , 默认 None使用left或up。如果省略,Excel 将根据范围的形状来决定
    4. 示例
      wb.sheets['查询'].range("A4:C5").delete()
      sht['2:2'].delete()		# 删除行
      sht[1:2, :].delete()            # 区域切片的方法
      sht['B:B'].delete()		# 删除列
      sht[:, 1:2].delete()
      sht['B2'].delete()		# 删除单元格 (缺省默认右侧左移'left',下侧上移'up')
      sht['C2:D4'].delete('up')	         # 删除区域sht[1:4, 2:4].delete('up')
      # 或者调用api
      sht.api.Rows(2).Delete() # 删除行
      sht.api.Columns(1).Delete() # 删除列
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
    结束_end()
    1. 返回一个 Range 对象,该对象表示包含源范围的区域末尾的单元格。相当于按 Ctrl+Up、Ctrl+down、Ctrl+left 或 Ctrl+right
    2. 语法
      end(direction)
      
      • 1
    3. 参数
      参数取值范围说明
      direction‘up’,‘down’,‘left’,‘right’上、下、左、右
    4. 示例
      wb.sheets['查询'].range("A4").end('up')
      lst=ws.range(“A1:A”+str(ws[“A1048576”].end(‘up’).row)).value #把excel单列值读取到列表中,str()是要把int转为string
      lst1=ws.range(“A1:C”+str(ws[“A1048576”].end(‘up’).row)).value # 把excel连续两个列的值读取到列表中
      
      lst=ws.range(“A1:A”+str(ws[“A1048576”].end(‘up’).row)).value #A列的值
      lst2=ws.range(“C1:C”+str(ws[“A1048576”].end(‘up’).row)).value#C列的值
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    展开_expand()
    1. 根据提供的模式扩展范围
    2. 忽略左上角的空单元格(与 Range.end()不同)
    3. 语法
      expand(mode='table')
      
      • 1
    4. 参数
      参数取值范围说明
      modestr, 默认 ‘table’三选一:‘table’ (=down and right), ‘down’, ‘right’
    5. 示例
      print(sht.range("B3").expand().address)
      
      • 1
    获取地址_get_address()
    1. 以指定格式返回范围的地址
    2. address如果不需要更改任何默认值,则可以使用。
    3. 语法
      get_address(row_absolute=True, column_absolute=True, include_sheetname=False, external=False)
      
      • 1
    4. 参数
      参数取值范围说明
      row_absolutebool , 默认 True设置为 True 行返回绝对引用
      column_absolutebool , 默认 True设置为 True 列返回绝对引用
      include_sheetnamebool , 默认 False设置为 True 以在地址中包含工作表名称。如果 external=True 则忽略
      externalbool , 默认 False设置为 True 以返回带有工作簿和工作表名称的外部引用
    5. 示例
      sht.range("C16").get_address(True, False, external=True)
      
      • 1
    插入_insert()
    1. 在工作表中插入一个单元格或单元格区域
    2. address如果不需要更改任何默认值,则可以使用。
    3. 语法
      insert(shift=None, copy_origin='format_from_left_or_above')
      
      • 1
    4. 参数
      参数取值范围说明
      shiftstr , 默认 None设置为 True 行返回绝对引用
      copy_originstr , default format_from_left_or_above使用format_from_left_or_aboveor format_from_right_or_below
    5. 示例
      sht.range("C3").insert(shift=None, copy_origin='format_from_right_or_below')
      sht.api.Rows(3).Insert() # 在第3行插入空行
      sht['2:2'].insert()		# 插入行
      sht['B:B'].insert()		# 插入列
      sht['B2'].insert()		# 插入单元格 (缺省默认'down', 可选 'right')
      sht['B2:C3'].insert()	        # 插入区域
      # 或者调用api
      sht.api.Rows(1).Insert()    # 插入行
      sht.api.Rows('2:4').Insert()
      sht.api.Columns(1).Insert()  # 插入列
      sht.api.Columns('2:4').Insert()
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
    合并_merge()
    1. 从指定的 Range 对象创建一个合并单元格
    2. 语法
      merge(across=False)
      
      • 1
    3. 参数
      参数取值范围说明
      acrossbool , 默认 FalseTrue 表示取消合并
    4. 示例
      sht.range("C3:C5").merge(across=True)
      
      • 1
    偏移_offset()
    1. 返回一个 Range 对象
    2. 该对象表示从指定范围偏移的 Range
    3. 语法
      offset(row_offset=0, column_offset=0)
      
      • 1
    4. 参数
      参数取值范围说明
      row_offsetint行偏移量
      column_offsetint列偏移量
    5. 示例
      print(sht.range("d1").offset(row_offset=1, column_offset=3).address)
      
      • 1
    粘贴_paste()
    1. 将剪贴板中的范围粘贴到指定范围内
    2. 语法
      paste(paste=None, operation=None, skip_blanks=False, transpose=False)
      
      • 1
    3. 参数
      参数取值范围说明
      pastestr , 默认 None其中之一all_merging_conditional_formats, all, all_except_borders, all_using_source_theme, column_widths, comments, formats, formulas, formulas_and_number_formats, validation, values, values_and_number_formats
      operationstr , 默认 None“add”、“divide”、“multiply”、“subtract”之一
      skip_blanksbool , 默认 False设置True为跳过空白单元格
      transposebool , 默认 False设置为True转置行和列
    4. 示例
      sht.range("a2:d10").copy()
      sht.range("g2").paste()
      
      • 1
      • 2
    调整大小_resize()
    1. 调整指定范围的大小,(左上角不变)
    2. 返回类型:range
    3. 语法
      resize(row_size=None, column_size=None)
      
      • 1
    4. 参数
      参数取值范围说明
      row_sizeint > 0新范围内的行数(如果为 None,则范围内的行数不变) formulas_and_number_formats, validation, values, values_and_number_formats
      column_sizeint > 0新范围内的列数(如果为 None,则范围内的列数不变)
    5. 示例
      sht.range("a2:d10").resize(row_size=5, column_size=5)
      
      • 1
    选择_select()
    1. 选择范围。仅适用于活动工作薄
    2. 语法
      sht.range("a7:b10").select()
      
      • 1
    3. 参数
      参数取值范围说明
      row_sizeint > 0新范围内的行数(如果为 None,则范围内的行数不变) formulas_and_number_formats, validation, values, values_and_number_formats
      column_sizeint > 0新范围内的列数(如果为 None,则范围内的列数不变)
    4. 示例
      sht.range("a2:d10").resize(row_size=5, column_size=5)
      
      • 1
    导出到PDF_to_pdf()
    1. 将范围导出为 PDF
    2. 语法
      to_pdf(path=None, layout=None, show=None, quality='standard')
      
      • 1
    3. 参数
      参数取值范围说明
      pathstr或类似路径的对象,默认无您要存储 pdf 的路径。如果存储 Excel 文件,则默认为与 Excel 文件位于同一目录中的范围地址,否则为当前工作目录
      layoutstr或类似路径的对象,默认无此参数需要 xlwings PRO
      showbool , 默认 False创建后,使用默认应用程序打开 PDF 文件
      qualitystr, 默认 ‘standard’PDF 文件的质量。可以是’standard’或’minimum’
    4. 示例
      sht.range("a7:b10").to_pdf(path=None, layout=None, show=None, quality='standard')
      
      • 1
    导出到png图片_to_png()
    1. 将范围导出为 PNG 图片
    2. 提示需要安装Pillow库,但安装了也不行,不知道为什么
    3. 语法
      to_png(path=None)
      
      • 1
    4. 参数
      参数取值范围说明
      pathstr或类似路径的对象,默认无你要存储图片的路径。如果存储 Excel 文件,则默认为与 Excel 文件位于同一目录中的范围名称,否则为当前工作目录
    5. 示例
      sht.range("a7:b10").to_png(path=None)
      
      • 1
    取消合并_unmerge()
    1. 将合并区域分隔为单个单元格。
    2. 示例
      sht.range("a7").unmerge()
      
      • 1

    RangeRows

    1. 表示范围的行,不要使用 Range.rows
    2. 示例
      rng = xw.Range('A1:C4')
      
      • 1

    RangeRows的引用

    1. 示例
      rng = xw.Range('A1:C4')
      rng.rows[0].value = 'a'
      for r in rng.rows:
          print(r.address)
      
      • 1
      • 2
      • 3
      • 4

    RangeRows的属性

    数量_count
    1. 返回行数
    2. 示例
      print(rng.count)
      
      • 1

    RangeRows的方法

    自动行高_autofit
    1. 自动调整行的高度
    2. 示例
      rng.autofit()
      
      • 1

    RangeColumns

    1. 表示范围的列。不要直接使用Range.columns
    2. 示例
      rng = xw.Range('A1:C4')
      
      • 1

    RangeColumns的引用

    1. 示例
      rng = xw.Range('A1:C4')
      rng.rows[0].value = 'a'
      for c in rng.columns:
          print(c.address)
      
      • 1
      • 2
      • 3
      • 4

    RangeColumns的属性

    数量_count
    1. 返回列数
    2. 示例
      print(rng.count)
      
      • 1

    RangeColumns的方法

    自动列宽_autofit
    1. 自动调整列的宽度
    2. 示例
      rng.autofit()
      
      • 1

    tables

    1. 指定工作表上所有table对象的集合
    2. 示例
      sht.tables
      
      • 1

    为指定工作表添加table

    1. 为指定的工作表创建一个table
    2. 返回类型:table
    3. 语法
      add(source=None, name=None, source_type=None, link_source=None, has_headers=True, destination=None, table_style_name='TableStyleMedium2')
      
      • 1
    4. 参数
      参数取值范围说明
      sourcexlwings range , 默认 None一个 xlwings range 对象,表示数据源
      namestr , 默认 None表的名称。默认情况下,它使用 Excel 分配的自动生成名称
      source_typestr , 默认 None当前默认为xlSrcRange,即需要一个 xlwings 范围对象。目前不允许其他选项
      link_sourcebool , 默认 None目前没有实现,因为这只是在 is 的情况source_type下 xlSrcExternal
      has_headersbool或str ,默认 True指示正在导入的数据是否具有列标签。默认为 True. 可能的值:True, False,‘guess’
      destinationxlwings 范围,默认无source_type目前未实现,因为它 用于以防万一
      table_style_namestr , 默认 ‘TableStyleMedium2’可能的字符串:(‘TableStyleLightN’'其中 N 是 1-21)、 ‘TableStyleMediumN’(其中 N 是 1-28)、 ‘TableStyleDarkN’(其中 N 是 1-11)
    5. 示例
      sht = wb.sheets["sheet1"]
      bl = sht.tables.add(source = sht.range('A1:L23'), table_style_name='TableStyleMedium6')
      
      • 1
      • 2

    table

    table的引用

    1. 示例
      sht = xw.books['Book1'].sheets[0]
      sht.tables[0]  # 序号引用
      sht.tables['TableName'] # 名称引用
      
      • 1
      • 2
      • 3

    table的属性

    引擎_api
    1. 返回正在使用的引擎的本机对象(pywin32或appscriptobj)
    2. 示例
      print(sht.tables[0].api)
      
      • 1
    数据体范围_data_body_range
    1. 返回一个表示值范围的 xlwings 范围对象,不包括标题行
    2. 示例
      print(sht.tables[0].data_body_range)
      
      • 1
    显示名称_display_name
    1. 返回或设置指定 Table 对象的显示名称
    2. 示例
      sht.tables[0].display_name = '表1'
      
      • 1
    标题行范围_header_row_range
    1. 返回表示标题行范围的 xlwings 范围对象
    2. 示例
      sht.tables[0].header_row_range
      
      • 1
    插入行范围_insert_row_range
    1. 返回一个 xlwings 范围对象,表示将要插入数据的行。这仅适用于空表,否则将返回 None
    2. 示例
      sht.tables[0].insert_row_range
      
      • 1
    标题行范围_name
    1. 返回或设置表的名称
    2. 示例
      sht.tables[0].name
      
      • 1
    父级表_parent
    1. 返回表的父级
    2. 示例
      sht.tables[0].parent
      
      • 1
    范围_range
    1. 返回表的 xlwings 范围对象
    2. 示例
      sht.tables[0].range
      
      • 1
    自动过滤_show_autofilter
    1. 打开或关闭自动过滤器
    2. 示例
      sht.tables[0].show_autofilter = False
      
      • 1
    显示或隐藏标题_show_headers
    1. 显示或隐藏标题
    2. 示例
      sht.tables[0].show_headers = False
      
      • 1
    显示表格样式_show_table_style_column_stripes
    1. 没看出区别
    2. 示例
      sht.tables[0].show_table_style_column_stripes = True
      
      • 1
    首列格式化_show_table_style_first_column
    1. 返回表的 xlwings 范围对象
    2. 示例
      sht.tables[0].show_table_style_first_column = False
      
      • 1
    显示最后一列_show_table_style_last_column
    1. 显示最后一列
    2. 示例
      sht.tables[0].range
      
      • 1
    显示行的样式_show_table_style_row_stripes
    1. 显示行的样式
    2. 默认是显示的
    3. 示例
      sht.tables[0].show_table_style_row_stripes = True
      
      • 1
    显示汇总行_show_totals
    1. 相当于在table的设计标签勾选’汇总行’
    2. 示例
      sht.tables[0].show_totals = True
      
      • 1
    表样式_table_style
    1. 获取或设置表格样式
    2. 取值范围参考Tables.add中的表样式
    3. 示例
      sht.tables[0].table_style = 'TableStyleMedium28'
      
      • 1
    表示 Total 行的 xlwings 范围对象_totals_row_range
    1. 返回表示 Total 行的 xlwings 范围对象
    2. 需要在tabel的设计标签勾选’汇总行’,否则显示None
    3. 示例
      sht.tables[0].totals_row_range
      
      • 1

    table的方法

    调整大小_ resize()

    1. 通过提供 xlwings 范围对象来调整表的大小
    2. 语法
      resize(range)
      
      • 1
    3. 示例
      sht = wb.sheets["sheet1"]
      sht.tables[0].resize(sht.range('a1:d5'))
      
      • 1
      • 2

    更新_update()

    1. 使用提供的数据更新 Excel 表,目前仅限于 DataFrames
    2. 语法
      update(data, index=True)
      
      • 1
    3. 参数
      参数取值范围说明
      datapandas DataFrame目前仅限于 pandas DataFrames
      indexbool , default True是否应将 pandas DataFrame 的索引写入 Excel 表
    4. 示例
      import xlwings as xw
      import pandas as pd
      from pathlib import Path
      app = xw.App(visible=True,add_book=False)
      excel_file_test = Path("D:\\test.xlsx")
      excel_file_test = app.books.open(excel_file_test,update_links = False)
      sht = xw.sheets.active
      
      # DataFrame 数据
      nrows, ncols = 3, 3
      df = pd.DataFrame(data=nrows * [ncols * ['test']],
                        columns=['col ' + str(i) for i in range(ncols)])
      
      df = df.set_index('col 0')
      sht.tables[0].update(df)
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15

    字体_Font

    字体的引用

    1. 字体对象可以作为范围或形状对象的属性来访问
    2. 示例
      mysheet['A1'].font
      mysheet.shapes[0].font
      
      • 1
      • 2

    字体的属性

    引擎_api
    1. 返回正在使用的引擎的本机对象(pywin32或appscriptobj)
    2. 示例
      print(sht['A1'].font.api)
      
      • 1
    粗体_bold
    1. 返回或设置粗体属性
    2. 示例
      sht['A2'].font.bold = True
      
      • 1
    颜色_color
    1. 返回或设置颜色属性(元组)
    2. 示例
      sht['A2'].font.color = (255, 0, 0)
      
      • 1
    斜体_italic
    1. 回或设置斜体属性
    2. 示例
      sht['A2'].font.italic = True
      
      • 1
    字体名称_name
    1. 返回或设置字体的名称
    2. 示例
      print(sht['A2'].font.name)
      
      • 1
    字体大小_size
    1. 返回或设置大小(浮点数)
    2. 示例
      sht['A2'].font.size = 21.5
      
      • 1

    转换器和选项

    转换器

    1. 语法
      xw.Range.options(convert=None, **kwargs).value
      
      • 1
    2. 参数
      参数取值范围说明
      convert
      **kwargs可以指定特定转换器或默认转换器

    内置转换器

    1. xlwings 提供了几个内置转换器,可以将类型转换为字典、NumPy 数组、 Pandas Series和DataFrames
    字典转换器,将两个 Excel 列转换为字典
    1. 示例
      sht.range('A1:B2').options(dict).value # 数据是列方向
      sht.range('A4:B5').options(dict, transpose=True).value # 数据是行方向
      
      • 1
      • 2

    Numpy 数组转换器

    1. 语法
      dtype=None, copy=True, order=None, ndim=None
      
      • 1
    2. 解释
      1. 前 3 个选项的行为与直接使用时相同np.array()
      2. ndim对于列表(在默认转换器下)的工作方式与上面显示的相同,因此返回 numpy 标量、一维数组或二维数组
    3. 示例
      sht.range('A1').options(transpose=True).value = np.array([8, 2, 3]) # 一维数据
      sht.range('A1:A3').options(np.array, ndim=2).value # 二维数据
      
      • 1
      • 2

    Pandas 系列转换器

    1. 语法
      dtype=None, copy=False, index=1, header=True
      
      • 1
    2. 选项
      选项聚会范围说明
      dtype=None选项的行为与直接使用时相同
      copy=False选项的行为与直接使用时相同
      index整数或布尔值读取时,它需要 Excel 中显示的索引列数;编写时,通过将索引设置为True或来包含或排除索引False
      header布尔值阅读时,False如果 Excel 不显示索引或系列名称,请将其设置为;编写时,通过将其设置为True或来包含或排除索引和系列名称False
    3. 示例
      sht.range('A1').options(pd.Series, expand='table').value
      
      • 1

    Pandas DataFrame 转换器

    1. 语法
      dtype=None, copy=False, index=1, header=1
      
      • 1
    2. 选项
      选项聚会范围说明
      dtype=None选项的行为与直接使用时相同
      copy=False选项的行为与直接使用时相同
      index整数或布尔值读取时,它需要 Excel 中显示的索引列数;编写时,通过将索引设置为True或来包含或排除索引False
      header布尔值读取时,它需要 Excel 中显示的列标题数;编写时,通过将其设置为True或来包含或排除索引和系列名称False
    3. 示例
      df = sht.range('A1:D5').options(pd.DataFrame, header=2).value
      
      • 1

    转换器示例

    读取单元格的数字为int格式(再转换成str)
    1. 默认情况下,带有数字的单元格被读取为float
    2. 可以修改为读取成int格式
    3. 测试不能改成str读取成字符串格式,只能读取成int再转换成str
    4. 示例
      sht.range('A1').options(numbers=int).value
      
      • 1
    将list写入列
    1. 示例
      sht.range('A1').options(transpose=True).value = [1, 2, 3]
      
      • 1

    常见问题

    在pycharm中提示没有App()方法

    1. 在pycharm中提示没有App()方法,但在IDE和jupyter中没有问题,不知道什么原因

    在excel中增加xlwings标签功能

    xlwings addin install
    
    • 1

    将单元格的格式改为文本类型

    sht.range('a3').api.NumberFormat = "@"
    
    • 1

    窗口冻结

    1. 代码示例
      import xlwings as xw
      wb = xw.books.active
      active_window = wb.app.api.ActiveWindow
      active_window.FreezePanes = False
      active_window.SplitColumn = 4  # 冻结至哪一列
      active_window.SplitRow = 1  # 冻结至哪一行
      active_window.FreezePanes = True
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

    Excel窗口最大化

    1. 代码
      import xlwings as xw
      
      app = xw.App(visible=True,add_book=False)
      # 创建工作簿
      wb = app.books.add()
      wb.activate(steal_focus=True)
      app.api.ActiveWindow.WindowState = -4137  # -4137表示常量xlMaximized
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

    插入批注

    1. rng为range对象
    2. 代码
      sht.range("D2").api.AddComment(Text='打开文本日志文件')
      
      • 1
  • 相关阅读:
    【GlobalMapper精品教程】027:路径剖面和和视线工具的使用
    ruoyi登录功能源码分析
    .NET Emit 入门教程:第七部分:实战项目1:将 DbDataReader 转实体
    如何将python脚本变成linux命令?
    【老狗 - 笔面试记录】
    Spring核心思想和框架优势及原生的Servlet开发说明
    前端——Vuex状态管理
    redis之GEO使用
    Pve崩溃
    vue3的双向绑定原理分析
  • 原文地址:https://blog.csdn.net/liujinbao8000/article/details/127862408