文章目录
- 介绍
- xlwings 常用实例
- xlwings 安装
- 顶级函数
- 顶级函数xlwings.load
- 顶级函数xlwings.view
- apps
- apps 介绍
- apps属性
- 查看Apps包含的所有App
- 返回App总数
- 查看所有的PID
- 返回当前活动App
- 激活App
- 设置计算模式
- 传入参数
- 退出App
- VBA使用示例
- App对象引用
- 屏幕更新_screen_updating
- App可见性
- 获取创建工作簿的App
- 创建App
- 计算公式
- 提醒信息是否显示
- 工作薄book
- 工作薄的引用
- 当前活动App的工作簿集合
- 指定App的所有工作簿的集合
- 在当前App中引用
- 在新App中引用
- 引用活动工作簿
- 工作薄属性
- 全名_fullname
- 名称_name
- 名称集合names
- 名称集合selection
- 工作薄集合sheets
- 工作薄方法
- 创建工作薄即excel文件_add()
- 打开读取工作薄_open()
- 连接到工作薄
- 激活工作薄_activate()
- _caller()
- 关闭close()
- 保存save()
- 设置Python代码从Excel中运行set_mock_caller ( )
- 导出到pdf_to_pdf()
- 工作表
- 工作表的引用
- 工作表的属性
- 所有工作表的集合_books
- 活动的工作表_active
- 工作表所在工作薄_book
- 所有单元格_cells
- 所有图表_charts
- 索引_index
- 名称_name
- 名称集_names
- 页面设置对象_page_setup
- 页面设置对象_page_setup
- 图片_pictures
- 图片_pictures
- 形状_shapes
- 表_tables
- 表_used_range
- 可见性_visible
- 工作表的方法
- 创建工作表_add()
- 激活工作表_activate()
- 自动行高和列宽_autofit()
- 清除整个工作表的内容和格式_autofit()
- 清除整个工作表的内容,但保留格式_clear_contents()
- 清除整个工作表的格式,但保留内容_clear_formats()
- 复制工作表_copy()
- 删除工作表_delete()
- 返回range对象_range()
- 选择_select()
- 导出到pdf_to_pdf()
- range
- range的引用
- range的属性
- 地址_address
- 填充颜色_color
- 列_column
- 列宽_column_width
- 列_columns
- 计数_count
- 当前区域_current_region
- 公式_formula
- 公式2_formula2
- 数组公式_formula_array
- has_数组_has_array
- 高度_height
- 超链接_hyperlink
- 超链接_last_cell
- 左_left
- 合并区域_merge_area
- 合并区域_merge_cells
- 名称_name
- 名称_note
- 数字格式_number_format
- 原始值_raw_value
- 行_row
- 行高_row_height
- 行_rows
- 形状_shape
- 所在工作表_sheet
- 大小_size
- table_table
- 属性_top
- 值_value
- 宽度_width
- 换行文字_wrap_text
- range的方法
- 添加超链接_add_hyperlink()
- 自动行高、列宽_autofit()
- 清除内容和格式_clear()
- 清除内容,保留格式_clear_contents()
- 清除格式,保留内容_clear_formats()
- 复制_copy()
- 复制图片_copy_picture()
- 删除_delete()
- 结束_end()
- 展开_expand()
- 获取地址_get_address()
- 插入_insert()
- 合并_merge()
- 偏移_offset()
- 粘贴_paste()
- 调整大小_resize()
- 选择_select()
- 导出到PDF_to_pdf()
- 导出到png图片_to_png()
- 取消合并_unmerge()
- RangeRows
- RangeRows的引用
- RangeRows的属性
- RangeRows的方法
- RangeColumns
- RangeColumns的引用
- RangeColumns的属性
- RangeColumns的方法
- tables
- table
- table的引用
- table的属性
- 引擎_api
- 数据体范围_data_body_range
- 显示名称_display_name
- 标题行范围_header_row_range
- 插入行范围_insert_row_range
- 标题行范围_name
- 父级表_parent
- 范围_range
- 自动过滤_show_autofilter
- 显示或隐藏标题_show_headers
- 显示表格样式_show_table_style_column_stripes
- 首列格式化_show_table_style_first_column
- 显示最后一列_show_table_style_last_column
- 显示行的样式_show_table_style_row_stripes
- 显示汇总行_show_totals
- 表样式_table_style
- 表示 Total 行的 xlwings 范围对象_totals_row_range
- table的方法
- 调整大小_ resize()
- 更新_update()
- 字体_Font
- 字体的引用
- 字体的属性
- 引擎_api
- 粗体_bold
- 颜色_color
- 斜体_italic
- 字体名称_name
- 字体大小_size
- 转换器和选项
- 转换器
- 内置转换器
- Numpy 数组转换器
- Pandas 系列转换器
- Pandas DataFrame 转换器
- 转换器示例
- 读取单元格的数字为int格式(再转换成str)
- 将list写入列
- 常见问题
- 在pycharm中提示没有App()方法
- 在excel中增加xlwings标签功能
- 将单元格的格式改为文本类型
- 页面设置
介绍
- pypi
- 官网
- API文档
- xlwings只能用在安装了office的windows系统上
- 逻辑关系
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q7ecYluo-1668481933901)(vx_images/1901858160553.png)] - Excel程序用App来表示,多个Excel程序集合用Apps表示;
- 单个工作簿用Book表示,工作簿集合用Books表示;
- 单个工作表用Sheet表示,工作表集合用Sheets表示;
- 区域用Range表示,既可以是一个单元格,也可以是一片单元格区域。
- 注意,在xlwings中是不区分大小写的,SHEET1和sheet1的含义一样。
xlwings 常用实例
读取、写入单元格
- 代码
import xlwings as xwexcel_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() # 退出应用
将列表写入某个范围
- 代码
import xlwings as xwexcel_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() # 退出应用
xlwings 安装
- 安装
pip3 install xlwings
- 安装excel插件,在excel中显示xlwings标签
xlwings addin install
顶级函数
顶级函数xlwings.load
- 介绍
- 将活动工作簿的选定单元格加载到 pandas DataFrame 中
- 如果您选择具有相邻单元格的单个单元格,则范围会自动扩展(通过当前区域)并变成 pandas DataFrame。
- 如果您没有安装 pandas,它会将值作为嵌套列表返回。
- 注意:
- 只能在交互式环境中使用它,例如 Jupyter!不要在脚本中使用它,因为它取决于活动的工作薄。
- 语法
xlwings.load(index=1, header=1, chunksize=5000)
- 参数
参数 | 取值范围 | 说明 |
---|
index | bool或int,默认1 | 定义左侧将转换为 DataFrame 索引的列数 |
header | bool或int,默认1 | 定义顶部的行数,这些行数将变成 DataFrame 的列 |
chunksize | int , 默认 5000 | 对大数组的加载进行分块 |
- 示例
import xlwings as xw
xw.load()
顶级函数xlwings.view
- 介绍
- 默认情况下,打开一个新工作簿并在其第一个工作表上显示一个对象。
- 如果您提供工作表对象,它将在现有工作表上显示对象之前清除工作表。
- 注意:
- 只能在交互式环境中使用它,例如 Jupyter!不要在脚本中使用它,因为它取决于活动的工作薄。
- 语法
xlwings.view(obj, sheet=None, table=True, chunksize=5000)
- 参数
参数 | 取值范围 | 说明 |
---|
obj | 任何带有内置转换器的类型 | 要显示的对象,例如数字、字符串、列表、numpy 数组、pandas DataFrames |
sheet | Sheet ,默认 None | 工作表对象。如果未提供,则使用新工作簿的第一个。 |
table | bool , 默认 True | 如果你的对象是 pandas DataFrame,默认情况下它被格式化为 Excel Table |
chunksize | int , 默认 5000 | 对大数组的加载进行分块 |
- 示例
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)
apps
apps 介绍
- 所有app对象的集合
- 打开屏幕更新,我们可以看到xlwings对Excel进行操作的过程,关闭更新可以加速脚本运行。默认是打开的。如果关闭了,脚本运行完毕之后,记住把screen_updating属性值改回 True
apps属性
- 属性
属性 | 取值范围 | 说明 |
---|
api | | 返回正在使用的引擎的本机对象(pywin32或appscriptobj) |
books | | 当前打开的所有 Book 对象的集合 |
calculation | ‘manual’, ‘automatic’,‘semiautomatic’ | 计算模式 |
cut_copy_mode | | 获取或设置剪切或复制模式的状态 |
display_alerts | bool,默认 True | 在代码运行时抑制提示和警报消息, |
enable_events | bool | 事件 |
hwnd | | 返回窗口句柄(仅限 Windows) |
interactive | bool | 如果将此属性设置为False,Excel 将阻止来自键盘和鼠标的所有输入(除了代码显示的对话框的输入) |
macro(name) | 带有或不带有模块名称的子或函数的名称 | 在 Excel VBA 中运行不属于特定工作簿但属于加载项的子程序或函数。 |
pid | | 返回程序的pid |
quit() | | 退出应用程序而不保存任何工作簿 |
selection | | 将选定的单元格返回为 Range。 |
startup_path | | 返回XLSTART通过执行将 xlwings 加载项复制到的路径 |
status_bar | bool,str | 获取或设置状态栏的值 |
version | | 显示Excel的版本号 |
查看Apps包含的所有App
Apps = xw.apps
print ("查看Apps包含的所有App:",Apps)
返回App总数
count = xw.apps.count
print ("返回App总数:",count)
查看所有的PID
keys = xw.apps.keys()
print ("查看所有的PID:",keys)
返回当前活动App
app = xw.apps.active
激活App
app.activate()
设置计算模式
import xlwings as xw
wb = xw.Book()
wb.app.calculation = 'manual' # 模式:'manual', 'automatic','semiautomatic'
传入参数
app.activate(steal_focus=True)
退出App
- 通过杀掉进程强制Excel app退出
app.kill()
- 退出excel程序,不保存任何工作簿
app.quit()
VBA使用示例
- 在工作薄中插入模块,定义VBA
Function MySum(x, y)MySum = x + y
End Function
- 在Python中调用定义的VBA函数
import xlwings as xw
app = xw.App()
my_sum = app.macro('MySum')
App对象引用
# 引用app,使用PID引用
app = xw.apps[1668]
屏幕更新_screen_updating
- 关闭屏幕更新,看不到操作过程,速度快
- 关请记住在脚本结束时将 screen_updating 属性设置回 True
app.screen_updating # 返回屏幕更新状态
app.screen_updating = False # 设置屏幕更新状态
App可见性
- visible用来设置程序是否可见,True表示可见(默认),Flase不可见。
- 可以设置,可以查看,为布尔类型
app.visible # 返回状态
app.visible = True # 设置App为可见
获取创建工作簿的App
wb.app
创建App
- add_book用来设置是否自动创建工作簿,True表示自动创建(默认),False不创建
- 当设置成add_book=False时,可以创建App,但是还未生成PID,只有当这个App创建了工作簿后,才会生成自己的PID
- 示例
# 创建App
app = xw.App()
app = xw.App(visible=True,add_book=False)
计算公式
- 重新计算一遍所有工作簿里的公式
app.calculate()
提醒信息是否显示
- 示例
app.display_alerts=False #
cut_copy_mode
工作薄book
工作薄的引用
当前活动App的工作簿集合
- 代码
books = xw.books
指定App的所有工作簿的集合
- 代码
books = app.books
在当前App中引用
- 只可以引用工作簿。不能打开工作簿
- 代码
books = app.books
在新App中引用
- 既可以打开工作薄也可以引用工作簿。也就是说,当工作簿未打开时,它可以打开工作薄,当工作簿处于打开状态时,它可以引用工作簿
- 代码
wb = xw.Book('test.xlsx')
引用活动工作簿
- 代码
wb = app.books.active
工作薄属性
全名_fullname
- 以字符串形式返回对象的名称,包括其在磁盘上的路径。只读字符串
- 语法
工作薄对象.fullname
名称_name
- 以 str 形式返回工作薄名称
- 包含文件名及扩展名,不包含目录信息
- 语法
工作薄对象.name
名称集合names
- 返回一个名称集合,该集合表示指定书中的所有名称(包括所有特定于工作表的名称)
- 语法
工作薄对象.names
名称集合selection
- 将选定的单元格返回为 Range
- 语法
工作薄对象.selection
- 输出示例
Range [test.xlsx]test3!$A$1:$C$11
工作薄集合sheets
- 返回代表书中所有工作表的工作表集合
- 语法
工作薄对象.sheets
工作薄方法
创建工作薄即excel文件_add()
- 创建工作薄。新工作薄成为活动工作薄。返回一个 工作薄 对象
- 代码
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()
打开读取工作薄_open()
- 如果一个工作薄尚未打开,则打开它并返回它。
- 如果它已经打开,它不会引发异常,而只是返回 Book 对象
- 语法
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)
- 参数
参数 | 取值范围 | 说明 |
---|
fullname | str或路径对象 | 如果没有完整路径,它会在当前工作目录中查找文件 |
update_links | bool默认 None | 如果省略此参数,则提示用户指定如何更新链接 |
read_only | bool,默认 False | 以只读模式打开工作簿 |
format | str | 如果打开文本文件,指定分隔符 |
password | str | 指定工作簿的密码 |
write_res_password | str | 写入保留写入工作簿的密码 |
ignore_read_only_recommended | bool , 默认 False | 设置True为静音只读推荐消息 |
origin | int | 仅适用于文本文件。指定它的来源。使用平台常量 |
delimiter | str | 如果格式参数为 6,则指定分隔符 |
editable | bool, 默认 False | 此选项仅适用于旧版 Microsoft Excel 4.0 插件 |
notify | bool , 默认 False | 当文件可用时通知用户如果文件无法以读/写模式打开 |
converter | int | 打开文件时要尝试的第一个文件转换器的索引 |
add_to_mru | bool , 默认 False | 将此工作簿添加到最近添加的工作簿列表中 |
local | bool , 默认 False | 如果是 True, 根据 Excel 的语言保存文件,否则根据 VBA 的语言保存文件。在 macOS 上不支持 |
corrupt_load | int , 默认 xlNormalLoad | 可以是 xlNormalLoad、xlRepairFile 或 xlExtractData 之一。在 macOS 上不支持。 |
json | dict | 由 MS Office Scripts 或 Google Apps Script xlwings 模块提供的 JSON 对象,但采用反序列化形式,即作为字典 |
- 示例
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()
连接到工作薄
- 连接到工作薄的最简单方法是xw.Book
- 语法
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)
- 参数参考上面的打开读取工作薄(open)
- 示例
app = xw.App()
app.books['Book1']
激活工作薄_activate()
- 激活工作薄
- 语法
activate(steal_focus=True)
- steal_focus ( bool ,默认 False ) – 如果为 True,则创建最前面的窗口并将焦点从 Python 移交给 Excel。
_caller()
- 当 Python 函数通过 Excel 从 Excel 调用时引用调用书 RunPython。将其打包到从 Excel 调用的函数中
- 为了能够轻松地从 Python 调用此类代码进行调试,请使用 xw.Book.set_mock_caller()
- 示例
import xlwings as xwdef my_macro():wb = xw.Book.caller()wb.sheets[0].range('A1').value = 1
关闭close()
- 关闭工作薄而不保存
- 语法
工作薄对象.close()
保存save()
- 保存工作簿。如果提供了路径,则其工作方式类似于 Excel 中的 SaveAs()
- 如果没有指定路径并且文件之前没有保存过,那么它会以当前文件名保存在当前工作目录中
- 现有文件会在不提示的情况下被覆盖
- 语法
save(path=None, password=None)
- 属性
属性 | 取值范围 | 说明 |
---|
path | str或路径对象,默认 None | 工作簿的完整路径 |
password | str ,默认无 | 最大保护密码 15 个字符 |
设置Python代码从Excel中运行set_mock_caller ( )
- 设置当从 Python 调用代码而不是通过 Excel 从 Excel 调用代码时用于模拟的 Excel 文件RunPython
- 示例
# 这段代码通过RunPython在Excel中运行,而不是直接从Python中运行
import os
import xlwings as xwdef 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()
导出到pdf_to_pdf()
- 将整个 Excel 工作簿或工作表的子集导出到 PDF 文件
- 如果要打印隐藏的工作表,则需要在 下明确列出它们include
- 语法
to_pdf(path=None, include=None, exclude=None, layout=None, exclude_start_string='#', show=False, quality='standard')
- 属性
属性 | 取值范围 | 说明 |
---|
path | str或路径对象,默认 None | PDF 文件的路径,默认与工作簿同名,在同一目录中。对于未保存的工作簿,它默认为当前工作目录 |
include | int或str或list ,默认 None | 要包括哪些工作表:以工作表索引(如 Excel 中的 1 为基础)或工作表名称的形式提供工作表选择。可以是单个工作表的 int/str 或多个工作表的 int/str 列表 |
exclude | int或str或list ,默认 None | 要排除哪些工作表:以工作表索引(如 Excel 中的 1 为基础)或工作表名称的形式提供工作表选择。可以是单个工作表的 int/str 或多个工作表的 int/str 列表 |
layout | str or 路径对象, 默认 None | 此参数需要 xlwings PRO |
exclude_start_string | str,默认’#’ | 不会打印以此字符/字符串开头的工作表名称 |
show (bool, 默认 False | 创建后,使用默认应用程序打开 PDF 文件 | |
quality | str, 默认 ‘standard’ | PDF 文件的质量。可以是’standard’或’minimum’ |
工作表
工作表的引用
指定工作表
- 引用第一个工作表,如果使用()表示从1开始,如果使用[]表示从0开始
- 代码
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()
工作表的属性
所有工作表的集合_books
- 代码
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) # 指定工作薄
活动的工作表_active
- 返回活动工作表
- 代码
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()
工作表所在工作薄_book
- 返回指定工作表的工作薄,只读
- 代码
print(工作表对象.book)
所有单元格_cells
- 返回一个 Range 对象,该对象表示工作表上的所有单元格(不仅仅是当前正在使用的单元格)
- 代码
print(工作表对象.cells)
所有图表_charts
- 代码
print(工作表对象.charts)
索引_index
- 代码
print(工作表对象.index)
名称_name
- 代码
print(工作表对象.name)
名称集_names
- 回一个名称集合,该集合表示所有特定于工作表的名称(使用“SheetName!”前缀定义的名称)
- 代码
页面设置对象_page_setup
- 返回的是一个对象
- 代码
print(wb.sheets['数据'].page_setup)
页面设置对象_page_setup
- 返回的是一个对象
- 代码
print(wb.sheets['数据'].page_setup)
图片_pictures
- 代码
print(wb.sheets['数据'].pictures)
图片_pictures
- 代码
print(wb.sheets['数据'].pictures)
形状_shapes
- 代码
print(wb.sheets['查询'].shapes)
表_tables
- 代码
print(wb.sheets['查询'].tables)
表_used_range
- 使用的工作表范围
- 返回类型:xw.范围
- 代码
print(wb.sheets['查询'].used_range)
可见性_visible
- 获取或设置 Sheet (bool) 的可见性
- -1可见,0不可见(隐藏)
- 代码
print(wb.sheets['数据'].visible)
工作表的方法
创建工作表_add()
- 创建一个新工作表并使其成为活动工作表
- 语法
add(name=None, before=None, after=None)
- 属性
属性 | 取值范围 | 说明 |
---|
name | str , 默认 None | 新工作表的名称。如果没有,将默认为 Excel 的默认名称(如Sheet1)。 |
before | Sheet , 默认 None | 一个对象,在此工作表之前添加新工作表 |
after | Sheet , 默认 None | 一个对象,在此工作表之后添加新工作表 |
- 示例
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()
激活工作表_activate()
- 激活工作表并将其返回
- 语法
activate()
自动行高和列宽_autofit()
- 在整个工作表上自动调整列、行或两者的宽度
- 语法
autofit(axis=None)
- 属性
属性 | 取值范围 | 说明 |
---|
axis | str,默认无 | rows或r表示行高,columns或c,表示列宽,无,表示行高和列宽 |
- 示例
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列,自动列宽
清除整个工作表的内容和格式_autofit()
- 不清除图表
- 语法
clear()
- 示例
工作表对象.clear()
清除整个工作表的内容,但保留格式_clear_contents()
- 语法
clear_contents()
- 示例
工作表对象.clear_contents
清除整个工作表的格式,但保留内容_clear_formats()
- 语法
clear_formats()
- 示例
工作表对象.clear_formats
复制工作表_copy()
- 将工作表复制到当前或新工作薄。默认情况下,它会将复制的工作表放在当前工作薄中所有现有工作表之后。返回复制的工作表
- 语法
copy(before=None, after=None, name=None)
- 属性
属性 | 取值范围 | 说明 |
---|
before | 工作表对象,默认无 | 复制到此工作表之前 |
after | 工作表对象,默认无 | 复制到此工作表之后 |
name | str,默认无 | 新工作表的名称 |
- 示例
工作表对象.copy(after=工作薄对象.sheets[0],name='copied') # 工作薄对象为其他工作薄即可跨工作薄复制
删除工作表_delete()
- 删除工作表。
- 语法
工作表对象.delete()
返回range对象_range()
- 返回的是对象
- 语法
print(wb.sheets['数据'].range('B1',"C2"))
选择_select()
- 选择仅适用于活动工作薄
- 语法
wb.sheets['查询'].select
导出到pdf_to_pdf()
- 将整个 Excel 工作簿或工作表的子集导出到 PDF 文件
- 如果要打印隐藏的工作表,则需要在 下明确列出它们include
- 语法
to_pdf(path=None, include=None, exclude=None, layout=None, exclude_start_string='#', show=False, quality='standard')
- 属性
属性 | 取值范围 | 说明 |
---|
path | str或路径对象,默认 None | PDF 文件的路径,默认与工作簿同名,在同一目录中。对于未保存的工作簿,它默认为当前工作目录 |
include | int或str或list ,默认 None | 要包括哪些工作表:以工作表索引(如 Excel 中的 1 为基础)或工作表名称的形式提供工作表选择。可以是单个工作表的 int/str 或多个工作表的 int/str 列表 |
exclude | int或str或list ,默认 None | 要排除哪些工作表:以工作表索引(如 Excel 中的 1 为基础)或工作表名称的形式提供工作表选择。可以是单个工作表的 int/str 或多个工作表的 int/str 列表 |
layout | str or 路径对象, 默认 None | 此参数需要 xlwings PRO |
exclude_start_string | str,默认’#’ | 不会打印以此字符/字符串开头的工作表名称 |
show (bool, 默认 False | 创建后,使用默认应用程序打开 PDF 文件 | |
quality | str, 默认 ‘standard’ | PDF 文件的质量。可以是’standard’或’minimum’ |
range
range类_Range
- 返回一个 Range 对象,该对象表示一个单元格或一系列单元格
- 语法
xlwings.Range(cell1=None, cell2=None, **options)
- 参数
参数 | 取值范围 | 说明 |
---|
cell1 | str or tuple or Range | 左上角范围的名称,以 A1 表示法或索引元组或名称或 xw.Range 对象。它还可以使用范围运算符(冒号)指定范围,例如 ‘A1:B2’ |
cell2 | str or tuple or Range , 默认 None | 右下角范围的名称,以 A1 表示法或索引元组或名称或 xw.Range 对象 |
- 示例
print(xw.Range("A1")) # 活动表,R是大写
print(wb.sheets['查询'].range("A1")) #具体表 r是小写
range的引用
- 示例
xw.Range((1,1), (3,3))
sht.range((1,1), (3,3))
sht.range("A2")
sht.range("A2:C3")
range的属性
地址_address
- 返回表示范围引用的字符串值。用于get_address()能够提供参数
- 示例
wb.sheets['查询'].range("A1").address
填充颜色_color
- 获取和设置指定 Range 的背景颜色
- 要设置颜色,请使用 RGB 元组或十六进制字符串或 Excel 颜色常量
- 要移除背景,请将颜色设置为,请参阅示例。(0, 0, 0)
- 示例
wb.sheets['查询'].range("A1:G20").color = (255, 0, 0)
列_column
- 返回指定范围内第一列的编号。只读
- 返回类型:int
- 示例
print(wb.sheets['查询'].range("A1:G20").column)
列宽_column_width
- 获取或设置 Range 的宽度(以字符为单位)
- 一个列宽单位等于 Normal 样式中一个字符的宽度。对于比例字体,使用字符 0(零)的宽度
- 如果 Range 中的所有列都具有相同的宽度,则返回宽度。如果 Range 中的列具有不同的宽度,则返回 None
- column_width 必须在以下范围内:0 <= column_width <= 255
- 如果 Range 超出了 Worksheet 的使用范围,并且 Range 中的列具有不同的宽度,则返回第一列的宽度
- 返回类型:Integer
- 示例
print(wb.sheets['查询'].range("A1").column_width) # 查看A列列宽
工作表对象.range('B1').column_width = 60 # 设置B列列宽
列_columns
- 返回一个RangeColumns表示指定范围内的列的对象
- 示例
print(wb.sheets['查询'].range("A1:E20").columns)
计数_count
- 返回单元格的数量
- 示例
print(wb.sheets['查询'].range("A1:A5").count)
当前区域_current_region
- 返回一个 Range 对象
- 该对象表示由(但不包括)空白行和空白列的任意组合或工作表边缘限定的范围
- 示例
print(wb.sheets['查询'].range("A4").current_region)
公式_formula
- 获取或设置给定 Range 的公式
- 示例
工作表对象.range("C16").formula = "=COUNTA(C1:C15)"
公式2_formula2
- 获取或设置给定 Range 的公式2
- 示例
数组公式_formula_array
- 获取或设置给定 Range 的数组公式
- 示例
has_数组_has_array
- 如果范围是旧 CSE 数组公式的一部分为True,否则False。
- 示例
高度_height
- 返回 Range 的高度(以磅为单位)。只读。
- 示例
print(sht.range("C3").height)
超链接_hyperlink
- 返回指定 Range 的超链接地址(仅限单个 Cell)
- 示例
print(sht.range("C3").hyperlink)
超链接_last_cell
- 返回指定范围的右下角单元格。只读
- 示例
print(sht.range("C3:D5").last_cell)
左_left
- 返回从 A 列左边缘到范围左边缘的距离(以磅为单位)。只读。
- 示例
print(sht.range("C3").left)
合并区域_merge_area
- 返回一个 Range 对象
- 该对象表示包含指定单元格的合并 Range
- 如果指定的单元格不在合并范围内,则此属性返回指定的单元格。
- 示例
合并区域_merge_cells
- 如果 Range 包含合并的单元格,则返回True,否则False
- 示例
sht.range("C3:C5").merge_cells
名称_name
- 设置或获取范围的名称
- 示例
sht.range("C3:C5").name = 'test1'
名称_note
- 返回一个 Note 对象。在引入线程注释之前,注释被称为注释
- 示例
print(sht.range("C3:C5").note)
数字格式_number_format
- 获取和设置 Range 的 number_format
- 示例
print(sht.range("d1").number_format) # 显示
sht.range("d1").number_format = '0.00%' # 设置
原始值_raw_value
- 直接获取和设置从正在使用的引擎(pywin32或appscript)传递/接受的值,而无需经过任何 xlwings 的数据清理/转换
- 如果速度是一个问题,这可能会有所帮助,但自然是特定于引擎的,即可能会删除跨平台兼容性
- 示例
print(sht.range("a2:d10").raw_value)
行_row
- 回指定范围内第一行的编号。只读。
- 返回类型:int
- 示例
print(sht.range("a2:d10").row)
行高_row_height
- 获取或设置 Range 的高度(以磅为单位)
- 如果 Range 中的所有行都具有相同的高度,则返回高度
- 如果 Range 中的行具有不同的高度,则返回 None
- 返回类型:float
- 示例
print(sht.range("a7:b10").row_height)
行_rows
- 返回一个RangeRows对象,该对象表示指定范围内的行
- 示例
print(sht.range("a7:b10").rows)
print(sht1.used_range.rows.count) # 最后行号
形状_shape
- 范围维度的元组
- 示例
print(sht.range("a7:b10").shape)
所在工作表_sheet
- 返回 Range 所属的 Sheet 对象
- 示例
print(sht.range("a7:b10").sheet)
大小_size
- Range 中的元素数
- 空单元格也计算在内
- 示例
print(sht.range("a7:b10").size)
table_table
- 如果范围是其中的一部分,则返回 Table 对象,否则返回None
- 示例
print(sht.range("a7:b10").table)
属性_top
- 返回从第 1 行的上边缘到范围的上边缘的距离(以磅为单位)。只读。
- 返回类型:float
- 示例
print(sht.range("a7:b10").top)
值_value
- 获取和设置给定 Range 的值
- 了解xlwings.Range.options() 如何设置选项,例如,将其转换为 DataFrame 或如何设置块大小
- 返回类型:返回的对象取决于正在使用的转换器
- 示例
print(sht.range("a7:b10").top)
宽度_width
- 返回 Range 的宽度(以磅为单位)。只读
- 返回类型:float
- 示例
print(sht.range("a7:b10").width)
换行文字_wrap_text
- 返回True是否启用了 wrap_text 属性以及False是否禁用了它
- 如果不是所有单元格在一个范围内都具有相同的值,则在 Windows 上它会返回 None,而在 macOS 上False
- 示例
print(sht.range("a7:b10").wrap_text)
range的方法
添加超链接_add_hyperlink()
- 将超链接添加到指定范围(单个单元格)
- 语法
add_hyperlink(address, text_to_display=None, screen_tip=None)
- 参数
参数 | 取值范围 | 说明 |
---|
address | str | 超链接的地址 |
text_to_display | str , 默认 None | 要为超链接显示的文本。默认为超链接地址 |
screen_tip | str , default None | 当鼠标指针悬停在超链接上时要显示的屏幕提示。默认设置为 ' - 单击一次即可关注。单击并按住以选择此单元格 |
- 示例
wb.sheets['查询'].range("A1").add_hyperlink("http://www.baidu.com", text_to_display="百度", screen_tip="百度查询")
自动行高、列宽_autofit()
- 自动调整范围内所有单元格的宽度和高度
- 语法
autofit()
- 示例
wb.sheets['查询'].range("A1:E20").columns.autofit() # 仅自动列宽
wb.sheets['查询'].range("A1:E20").rows.autofit() # 仅自动行高
清除内容和格式_clear()
- 清除 Range 的内容和格式
- 示例
wb.sheets['查询'].range("A1:E20").clear()
清除内容,保留格式_clear_contents()
- 清除 Range 的内容,但保留格式
- 示例
wb.sheets['查询'].range("A1:E20").clear_contents()
清除格式,保留内容_clear_formats()
- 清除 Range 的格式,但保留内容
- 示例
wb.sheets['查询'].range("A1:E20").clear_formats()
复制_copy()
- 将范围复制到目标范围或剪贴板
- 语法
copy(destination=None)
- 参数
参数 | 取值范围 | 说明 |
---|
destination | xlwings.Range | xlwings 指定范围将被复制到的范围。如果省略,则将范围复制到剪贴板 |
- 示例
wb.sheets['查询'].range("C14:C20").copy(wb.sheets['查询'].range("H2"))
复制图片_copy_picture()
- 将范围作为图片复制到剪贴板
- 语法
copy_picture(appearance='screen', format='picture')
- 参数
参数 | 取值范围 | 说明 |
---|
appearance | str ,默认 ‘screen’ | ‘screen’ 或 ‘printer’ |
format | str , 默认 ‘picture’ | ‘picture’ 或 ‘bitmap’ |
- 示例
wb.sheets['查询'].range("A1:A5").copy_picture(appearance='screen', format='picture')
删除_delete()
- 删除一个单元格或单元格范围
- 语法
delete(shift=None)
- 参数
参数 | 取值范围 | 说明 |
---|
shift | str , 默认 None | 使用left或up。如果省略,Excel 将根据范围的形状来决定 |
- 示例
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() # 删除列
结束_end()
- 返回一个 Range 对象,该对象表示包含源范围的区域末尾的单元格。相当于按 Ctrl+Up、Ctrl+down、Ctrl+left 或 Ctrl+right
- 语法
end(direction)
- 参数
参数 | 取值范围 | 说明 |
---|
direction | ‘up’,‘down’,‘left’,‘right’ | 上、下、左、右 |
- 示例
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列的值
展开_expand()
- 根据提供的模式扩展范围
- 忽略左上角的空单元格(与 Range.end()不同)
- 语法
expand(mode='table')
- 参数
参数 | 取值范围 | 说明 |
---|
mode | str, 默认 ‘table’ | 三选一:‘table’ (=down and right), ‘down’, ‘right’ |
- 示例
print(sht.range("B3").expand().address)
获取地址_get_address()
- 以指定格式返回范围的地址
- address如果不需要更改任何默认值,则可以使用。
- 语法
get_address(row_absolute=True, column_absolute=True, include_sheetname=False, external=False)
- 参数
参数 | 取值范围 | 说明 |
---|
row_absolute | bool , 默认 True | 设置为 True 行返回绝对引用 |
column_absolute | bool , 默认 True | 设置为 True 列返回绝对引用 |
include_sheetname | bool , 默认 False | 设置为 True 以在地址中包含工作表名称。如果 external=True 则忽略 |
external | bool , 默认 False | 设置为 True 以返回带有工作簿和工作表名称的外部引用 |
- 示例
sht.range("C16").get_address(True, False, external=True)
插入_insert()
- 在工作表中插入一个单元格或单元格区域
- address如果不需要更改任何默认值,则可以使用。
- 语法
insert(shift=None, copy_origin='format_from_left_or_above')
- 参数
参数 | 取值范围 | 说明 |
---|
shift | str , 默认 None | 设置为 True 行返回绝对引用 |
copy_origin | str , default format_from_left_or_above | 使用format_from_left_or_aboveor format_from_right_or_below |
- 示例
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()
合并_merge()
- 从指定的 Range 对象创建一个合并单元格
- 语法
merge(across=False)
- 参数
参数 | 取值范围 | 说明 |
---|
across | bool , 默认 False | True 表示取消合并 |
- 示例
sht.range("C3:C5").merge(across=True)
偏移_offset()
- 返回一个 Range 对象
- 该对象表示从指定范围偏移的 Range
- 语法
offset(row_offset=0, column_offset=0)
- 参数
参数 | 取值范围 | 说明 |
---|
row_offset | int | 行偏移量 |
column_offset | int | 列偏移量 |
- 示例
print(sht.range("d1").offset(row_offset=1, column_offset=3).address)
粘贴_paste()
- 将剪贴板中的范围粘贴到指定范围内
- 语法
paste(paste=None, operation=None, skip_blanks=False, transpose=False)
- 参数
参数 | 取值范围 | 说明 |
---|
paste | str , 默认 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 |
operation | str , 默认 None | “add”、“divide”、“multiply”、“subtract”之一 |
skip_blanks | bool , 默认 False | 设置True为跳过空白单元格 |
transpose | bool , 默认 False | 设置为True转置行和列 |
- 示例
sht.range("a2:d10").copy()
sht.range("g2").paste()
调整大小_resize()
- 调整指定范围的大小,(左上角不变)
- 返回类型:range
- 语法
resize(row_size=None, column_size=None)
- 参数
参数 | 取值范围 | 说明 |
---|
row_size | int > 0 | 新范围内的行数(如果为 None,则范围内的行数不变) formulas_and_number_formats, validation, values, values_and_number_formats |
column_size | int > 0 | 新范围内的列数(如果为 None,则范围内的列数不变) |
- 示例
sht.range("a2:d10").resize(row_size=5, column_size=5)
选择_select()
- 选择范围。仅适用于活动工作薄
- 语法
sht.range("a7:b10").select()
- 参数
参数 | 取值范围 | 说明 |
---|
row_size | int > 0 | 新范围内的行数(如果为 None,则范围内的行数不变) formulas_and_number_formats, validation, values, values_and_number_formats |
column_size | int > 0 | 新范围内的列数(如果为 None,则范围内的列数不变) |
- 示例
sht.range("a2:d10").resize(row_size=5, column_size=5)
导出到PDF_to_pdf()
- 将范围导出为 PDF
- 语法
to_pdf(path=None, layout=None, show=None, quality='standard')
- 参数
参数 | 取值范围 | 说明 |
---|
path | str或类似路径的对象,默认无 | 您要存储 pdf 的路径。如果存储 Excel 文件,则默认为与 Excel 文件位于同一目录中的范围地址,否则为当前工作目录 |
layout | str或类似路径的对象,默认无 | 此参数需要 xlwings PRO |
show | bool , 默认 False | 创建后,使用默认应用程序打开 PDF 文件 |
quality | str, 默认 ‘standard’ | PDF 文件的质量。可以是’standard’或’minimum’ |
- 示例
sht.range("a7:b10").to_pdf(path=None, layout=None, show=None, quality='standard')
导出到png图片_to_png()
- 将范围导出为 PNG 图片
- 提示需要安装Pillow库,但安装了也不行,不知道为什么
- 语法
to_png(path=None)
- 参数
参数 | 取值范围 | 说明 |
---|
path | str或类似路径的对象,默认无 | 你要存储图片的路径。如果存储 Excel 文件,则默认为与 Excel 文件位于同一目录中的范围名称,否则为当前工作目录 |
- 示例
sht.range("a7:b10").to_png(path=None)
取消合并_unmerge()
- 将合并区域分隔为单个单元格。
- 示例
sht.range("a7").unmerge()
RangeRows
- 表示范围的行,不要使用 Range.rows
- 示例
rng = xw.Range('A1:C4')
RangeRows的引用
- 示例
rng = xw.Range('A1:C4')
rng.rows[0].value = 'a'
for r in rng.rows:print(r.address)
RangeRows的属性
数量_count
- 返回行数
- 示例
print(rng.count)
RangeRows的方法
自动行高_autofit
- 自动调整行的高度
- 示例
rng.autofit()
RangeColumns
- 表示范围的列。不要直接使用Range.columns
- 示例
rng = xw.Range('A1:C4')
RangeColumns的引用
- 示例
rng = xw.Range('A1:C4')
rng.rows[0].value = 'a'
for c in rng.columns:print(c.address)
RangeColumns的属性
数量_count
- 返回列数
- 示例
print(rng.count)
RangeColumns的方法
自动列宽_autofit
- 自动调整列的宽度
- 示例
rng.autofit()
tables
- 指定工作表上所有table对象的集合
- 示例
sht.tables
为指定工作表添加table
- 为指定的工作表创建一个table
- 返回类型:table
- 语法
add(source=None, name=None, source_type=None, link_source=None, has_headers=True, destination=None, table_style_name='TableStyleMedium2')
- 参数
参数 | 取值范围 | 说明 |
---|
source | xlwings range , 默认 None | 一个 xlwings range 对象,表示数据源 |
name | str , 默认 None | 表的名称。默认情况下,它使用 Excel 分配的自动生成名称 |
source_type | str , 默认 None | 当前默认为xlSrcRange,即需要一个 xlwings 范围对象。目前不允许其他选项 |
link_source | bool , 默认 None | 目前没有实现,因为这只是在 is 的情况source_type下 xlSrcExternal |
has_headers | bool或str ,默认 True | 指示正在导入的数据是否具有列标签。默认为 True. 可能的值:True, False,‘guess’ |
destination | xlwings 范围,默认无source_type | 目前未实现,因为它 用于以防万一 |
table_style_name | str , 默认 ‘TableStyleMedium2’ | 可能的字符串:(‘TableStyleLightN’'其中 N 是 1-21)、 ‘TableStyleMediumN’(其中 N 是 1-28)、 ‘TableStyleDarkN’(其中 N 是 1-11) |
- 示例
sht = wb.sheets["sheet1"]
bl = sht.tables.add(source = sht.range('A1:L23'), table_style_name='TableStyleMedium6')
table
table的引用
- 示例
sht = xw.books['Book1'].sheets[0]
sht.tables[0] # 序号引用
sht.tables['TableName'] # 名称引用
table的属性
引擎_api
- 返回正在使用的引擎的本机对象(pywin32或appscriptobj)
- 示例
print(sht.tables[0].api)
数据体范围_data_body_range
- 返回一个表示值范围的 xlwings 范围对象,不包括标题行
- 示例
print(sht.tables[0].data_body_range)
显示名称_display_name
- 返回或设置指定 Table 对象的显示名称
- 示例
sht.tables[0].display_name = '表1'
标题行范围_header_row_range
- 返回表示标题行范围的 xlwings 范围对象
- 示例
sht.tables[0].header_row_range
插入行范围_insert_row_range
- 返回一个 xlwings 范围对象,表示将要插入数据的行。这仅适用于空表,否则将返回 None
- 示例
sht.tables[0].insert_row_range
标题行范围_name
- 返回或设置表的名称
- 示例
sht.tables[0].name
父级表_parent
- 返回表的父级
- 示例
sht.tables[0].parent
范围_range
- 返回表的 xlwings 范围对象
- 示例
sht.tables[0].range
自动过滤_show_autofilter
- 打开或关闭自动过滤器
- 示例
sht.tables[0].show_autofilter = False
显示或隐藏标题_show_headers
- 显示或隐藏标题
- 示例
sht.tables[0].show_headers = False
显示表格样式_show_table_style_column_stripes
- 没看出区别
- 示例
sht.tables[0].show_table_style_column_stripes = True
首列格式化_show_table_style_first_column
- 返回表的 xlwings 范围对象
- 示例
sht.tables[0].show_table_style_first_column = False
显示最后一列_show_table_style_last_column
- 显示最后一列
- 示例
sht.tables[0].range
显示行的样式_show_table_style_row_stripes
- 显示行的样式
- 默认是显示的
- 示例
sht.tables[0].show_table_style_row_stripes = True
显示汇总行_show_totals
- 相当于在table的设计标签勾选’汇总行’
- 示例
sht.tables[0].show_totals = True
表样式_table_style
- 获取或设置表格样式
- 取值范围参考Tables.add中的表样式
- 示例
sht.tables[0].table_style = 'TableStyleMedium28'
表示 Total 行的 xlwings 范围对象_totals_row_range
- 返回表示 Total 行的 xlwings 范围对象
- 需要在tabel的设计标签勾选’汇总行’,否则显示None
- 示例
sht.tables[0].totals_row_range
table的方法
调整大小_ resize()
- 通过提供 xlwings 范围对象来调整表的大小
- 语法
resize(range)
- 示例
sht = wb.sheets["sheet1"]
sht.tables[0].resize(sht.range('a1:d5'))
更新_update()
- 使用提供的数据更新 Excel 表,目前仅限于 DataFrames
- 语法
update(data, index=True)
- 参数
参数 | 取值范围 | 说明 |
---|
data | pandas DataFrame | 目前仅限于 pandas DataFrames |
index | bool , default True | 是否应将 pandas DataFrame 的索引写入 Excel 表 |
- 示例
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)
字体_Font
字体的引用
- 字体对象可以作为范围或形状对象的属性来访问
- 示例
mysheet['A1'].font
mysheet.shapes[0].font
字体的属性
引擎_api
- 返回正在使用的引擎的本机对象(pywin32或appscriptobj)
- 示例
print(sht['A1'].font.api)
粗体_bold
- 返回或设置粗体属性
- 示例
sht['A2'].font.bold = True
颜色_color
- 返回或设置颜色属性(元组)
- 示例
sht['A2'].font.color = (255, 0, 0)
斜体_italic
- 回或设置斜体属性
- 示例
sht['A2'].font.italic = True
字体名称_name
- 返回或设置字体的名称
- 示例
print(sht['A2'].font.name)
字体大小_size
- 返回或设置大小(浮点数)
- 示例
sht['A2'].font.size = 21.5
转换器和选项
转换器
- 语法
xw.Range.options(convert=None, **kwargs).value
- 参数
参数 | 取值范围 | 说明 |
---|
convert | | |
**kwargs | | 可以指定特定转换器或默认转换器 |
内置转换器
- xlwings 提供了几个内置转换器,可以将类型转换为字典、NumPy 数组、 Pandas Series和DataFrames
字典转换器,将两个 Excel 列转换为字典
- 示例
sht.range('A1:B2').options(dict).value # 数据是列方向
sht.range('A4:B5').options(dict, transpose=True).value # 数据是行方向
Numpy 数组转换器
- 语法
dtype=None, copy=True, order=None, ndim=None
- 解释
- 前 3 个选项的行为与直接使用时相同np.array()
- ndim对于列表(在默认转换器下)的工作方式与上面显示的相同,因此返回 numpy 标量、一维数组或二维数组
- 示例
sht.range('A1').options(transpose=True).value = np.array([8, 2, 3]) # 一维数据
sht.range('A1:A3').options(np.array, ndim=2).value # 二维数据
Pandas 系列转换器
- 语法
dtype=None, copy=False, index=1, header=True
- 选项
选项 | 聚会范围 | 说明 |
---|
dtype=None | | 选项的行为与直接使用时相同 |
copy=False | | 选项的行为与直接使用时相同 |
index | 整数或布尔值 | 读取时,它需要 Excel 中显示的索引列数;编写时,通过将索引设置为True或来包含或排除索引False |
header | 布尔值 | 阅读时,False如果 Excel 不显示索引或系列名称,请将其设置为;编写时,通过将其设置为True或来包含或排除索引和系列名称False |
- 示例
sht.range('A1').options(pd.Series, expand='table').value
Pandas DataFrame 转换器
- 语法
dtype=None, copy=False, index=1, header=1
- 选项
选项 | 聚会范围 | 说明 |
---|
dtype=None | | 选项的行为与直接使用时相同 |
copy=False | | 选项的行为与直接使用时相同 |
index | 整数或布尔值 | 读取时,它需要 Excel 中显示的索引列数;编写时,通过将索引设置为True或来包含或排除索引False |
header | 布尔值 | 读取时,它需要 Excel 中显示的列标题数;编写时,通过将其设置为True或来包含或排除索引和系列名称False |
- 示例
df = sht.range('A1:D5').options(pd.DataFrame, header=2).value
转换器示例
读取单元格的数字为int格式(再转换成str)
- 默认情况下,带有数字的单元格被读取为float
- 可以修改为读取成int格式
- 测试不能改成str读取成字符串格式,只能读取成int再转换成str
- 示例
sht.range('A1').options(numbers=int).value
将list写入列
- 示例
sht.range('A1').options(transpose=True).value = [1, 2, 3]
常见问题
在pycharm中提示没有App()方法
- 在pycharm中提示没有App()方法,但在IDE和jupyter中没有问题,不知道什么原因
在excel中增加xlwings标签功能
xlwings addin install
将单元格的格式改为文本类型
sht.range('a3').api.NumberFormat = "@"
页面设置