全部产品
云市场

rpa.excel

更新时间:2020-03-03 15:39:35

目录

excel

要使用excel模块,需要使用rpa.excel

excel模块是用来向用户提供一系列操作Excel的SDK,让用户通过简单的参数和方法调用来实现一些复杂的操作。

open

方法名
open(file, visible=False, readonly=False, password=None, write_password=None)

方法描述
该方法会启动一个Excel进程并打开文档,可以通过visible来控制这个Excel进程是可见。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • file : 文件路径
  • visible : 是否可见
  • readonly : 只读
  • password : 文件密码
  • write_password : 设置密码

返回值说明
返回一个Excel类型的对象
示例

  1. xls = rpa.excel.open(r'C:\xxx.xlsx')

create

方法名
create(*, visible=False)

方法描述
该方法会启动一个Excel进程并打开文档,可以通过visible来控制这个Excel进程是可见。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • visible : 是否可见

返回值说明
返回一个Excel类型的对象
示例

  1. xls = rpa.excel.create()

catch

方法名
catch(name, *, mode=’filename’)

方法描述
该方法会已经打开的Excel文件对象。

版本信息
该方法适用于从3.4.0及以上版本。

参数说明

  • name : 文件名、文件路径
  • mode : ‘filename’|’filepath’

返回值说明
返回一个Excel类型的对象
示例

  1. xls = rpa.excel.catch("1.xlsx", mode="filename")
  2. xls = rpa.excel.catch("C:\Users\huo\1.xlsx", mode="filepath")

Class: Excel

Excel : 负责为用户提供Excel相关的一些操作。

Excel实例不再被使用时,建议close()它,否则会不断产生残留的Excel进程。

save

方法名
save(self, *, file=None)

方法描述
该方法会保存或者另存当前Excel文件,当不输入另存路径的时候就是保存当前已打开的Excel。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • file : 另存为文件路径

返回值说明

示例

  1. xls.save()

close

方法名
close(self, *, save=True)

方法描述
该方法会关闭Excel。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • save : 默认保存

返回值说明

示例

  1. xls.close()

sheets

方法名
sheets(self)

方法描述
该方法会获得Excel所有的sheet列表。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

返回值说明
返回Excel所有的sheet列表
示例

  1. print(xls.sheets())

add_sheet

方法名
add_sheet(self, sheet_name, location, *, relative=”before”)

方法描述
该方法会在location的sheet前或者后插入新的sheet,新增sheet,返回sheet对象。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • sheet_name : sheet名称
  • location : 定位插入位置的sheet的名称
  • relative : 插在location的sheet的前还是后 输入before|after

返回值说明
返回sheet对象
示例

  1. sheet = xls.add_sheet("sheetxxx","sheet4")

get_sheet

方法名
get_sheet(self, sheet_name=None)

方法描述
该方法会根据sheet的名称sheet_name获取指定sheet,如果不传则返回当前激活的sheet。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • sheet_name : sheet名称

返回值说明
返回sheet对象
示例

  1. sheet = xls.get_sheet("sheet1")

remove_sheet

方法名
remove_sheet(self, sheet_name)

方法描述
该方法会根据sheet的名称sheet_name删除指定的sheet。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • sheet_name : sheet名称

返回值说明
返回sheet对象
示例

  1. xls.remove_sheet("sheet1")

rename_sheet

方法名
rename_sheet(self, old_sheet_name, new_sheet_name)

方法描述
该方法会重命名sheet。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • old_sheet_name : 原sheet名称
  • new_sheet_name : 新sheet名称

返回值说明

示例

  1. xls.rename_sheet("sheet1","sheet4")

Class: Sheet

Sheet负责为用户提供Sheet相关的一些操作。

read

方法名
read(self, range, *, only_visible=False, skip=0, max=1000)

方法描述
该方法会从该sheet中读取内容。可以读取列的内容,读取行的内容,读取单元格的内容,读取一个范围的内容。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • range : ‘A’为列 ‘1’为行 ‘A1’为单元格 ‘A1:B2’为范围
  • only_visible : 只读可见
  • skip : 跳过多少行后开始读
  • max : 读列或者范围时不能超过max的范围

返回值说明
此功能在3.4.0规定返回单元格的值均为str或None
示例

  1. #读取单元格A1
  2. print(sheet.read("A1"))
  3. #读取第一行
  4. print(sheet.read("1"))
  5. #读取A列,跳过1行,从第2行开始读,只读可见的,最多读10条
  6. print(sheet.read("A",skip=1,max=10,only_visible=True))
  7. #读取A1:C3的范围
  8. print(sheet.read("A1:C3"))

read_value

方法名
read_value(self, range, *, only_visible=False, skip=0, max=1000)

方法描述
该方法会从Excel读取值,对于单个单元格来说,若其值为数字的均返回float,否则返回str或None。例如:excel中的单元格值为1,则读出的值为1.0。

版本信息
该方法适用于从3.4.0及以上版本。

参数说明

  • range : ‘A’为列 ‘1’为行 ‘A1’为单元格 ‘A1:B2’为范围
  • only_visible : 只读可见
  • skip : 跳过多少行后开始读
  • max : 读列或者范围时不能超过max的范围

返回值说明
值为数字的均返回float,否则返回str或None
示例

  1. #读取单元格A1
  2. print(sheet.read_value("A1"))
  3. #读取第一行
  4. print(sheet.read_value("1"))
  5. #读取A列,跳过1行,从第2行开始读,只读可见的,最多读10条
  6. print(sheet.read_value("A",skip=1,max=10,only_visible=True))
  7. #读取A1:C3的范围
  8. print(sheet.read_value("A1:C3"))

write

方法名
write(self, range, value, start_row=1, start_col=’A’, max=1000)

方法描述
该方法会向该sheet中写入数据。可以向单元格写入内容,可以向行写入内容,可以向列写入内容。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • range : ‘A’为列 ‘1’为行 ‘A1’为单元格 A1:B2为范围
  • value : 当range为列/行的时候传入一维数组,为单元格则传入str,为范围时候传入二维数组 /
  • start_row : 写入列时表示从哪一行开始写此参数仅当写入列时有效
  • start_col:写入行时表示从哪一行开始写此参数仅当写入行是有效 可传入‘1’|’A’|’a’
  • max: 写入列/行/范围时不能超过max的范围

返回值说明

示例

  1. #写入单元格A1,内容为sss
  2. sheet.write("A1","sss")
  3. #写入第1行,数据为[1,2,3]
  4. sheet.write("1",[1,2,3])
  5. #写入A列,从第2行开始写,内容为[3,4,5,6,7]
  6. sheet.write("A",[3,4,5,6,7],start_row="2")
  7. # 一次性写入数据
  8. sheet.write("A1:B2",[[4,5],[6,7]], max=10)
  9. #通过read write实现转置
  10. def getChars(length):
  11. def getChar(number):
  12. factor, moder = divmod(number, 26)
  13. modChar = chr(moder + 65)
  14. if factor != 0:
  15. modChar = getChar(factor - 1) + modChar
  16. return modChar
  17. return [getChar(index) for index in range(length)][length - 1]
  18. def start():
  19. '''
  20. 创建一个五行五列的数据表格实现转置
  21. 1 1 1 1 1
  22. 2 2 2 2 2
  23. 3 3 3 3 3
  24. 4 4 4 4 4
  25. 5 5 5 5 5
  26. '''
  27. wb = rpa.excel.open(r"C:\word_demo.xlsx")
  28. ws=wb.get_sheet()
  29. a_list = ws.read("A1:E5")
  30. wb.close()
  31. wb = rpa.excel.create()
  32. ws = wb.get_sheet()
  33. count=1
  34. for i in a_list:
  35. ws.write("{}".format(getChars(count)),i)
  36. count+=1
  37. wb.save(file=r"C:\excel_demo.xlsx")

copy

方法名
copy(self, range)

方法描述
该方法会复制范围内的数据,一般搭配paste使用。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • range : ‘A’为列 ‘1’位行 ‘A1’为单元格 ‘A1:B2’为范围

返回值说明

示例

  1. #复制单元格
  2. sheet.copy("A1")
  3. #复制第1行
  4. sheet.copy("1")
  5. #复制第A列
  6. sheet.copy("A")
  7. #赋值A1:C3范围
  8. sheet.copy("A1:c3")

paste

方法名
paste(self, col, row, *, paste_type=’数值’, retry=3)

方法描述
该方法会粘贴范围内的数据,一般搭配copy使用。重试次数用于设置粘贴失败时尝试粘贴的最大次数。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • col : 起始列号
  • row : 起始行号
  • type : 全部 公式 数值 格式 批注 验证 所有使用源主题的单元 边框除外 列宽 公式和数字格式 值和数字格式 所有合并条件格式
  • retry : 重试次数

返回值说明

示例

  1. sheet.paste("A","1",paste_type="公式")

paste_range

方法名
paste_range(self, range, *, paste_type=’数值)

方法描述
该方法会向范围内粘贴数据,一般搭配copy使用。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • range : 如’A1:B2’
  • paste_type : 全部 公式 数值 格式 批注 验证 所有使用源主题的单元 边框除外 列宽 公式和数字格式 值和数字格式 所有合并条件格式

返回值说明

示例

  1. sheet.paste("A","1",paste_type="公式")

row_count

方法名
row_count(self)

方法描述
该方法会获得该sheet的行数。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

返回值说明
返回行数
示例

  1. print(sheet.row_count())

col_count

方法名
row_count(self)

方法描述
该方法会得该sheet的列数。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

返回值说明
返回列数
示例

  1. print(sheet.col_count())

sort

方法名
sort(self, sort_fields, *, range=None, match_case=False, sort_method=’pinyin’, contains_header=False)

方法描述
该方法会对指定范围进行排序。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • range :查找范围: 如’A1:C5’, 如果为空则查找整个Sheet(默认整个Sheet)
  • sort_fileds : 排序字段数组 sort_fields = [(‘A’, ‘value’, ‘desc’), (‘B’, ‘cell_color’, ‘asc’)]
  • match_case : 是否区分大小写
  • sort_method : 排序方法 字母、笔划
  • contains_header : 是否包含标题 默认False

返回值说明

示例

  1. sheet.sort([('A', 'value', 'desc'),('B', 'cell_color', 'asc')])

filter

方法名
filter(self, col, array, *, delete=False)

方法描述
该方法会对列进行筛选。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • col : 列号
  • array : 筛选值数组
  • delete : 筛选后是否删除

返回值说明

示例

  1. #在A列筛选等于1或者2的值
  2. sheet.filter("A",[1,2])
  3. #当筛选内容为=号打头,需要在这个=前再加一个=,否则会被当成符号而非内容,例如要删选"= aa"需要写成这样
  4. sheet.filter("A",['== aa='])

remove_filter

方法名
remove_filter(self)

方法描述
该方法会移除筛选。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

返回值说明

示例

  1. sheet.remove_filter()

multi_filter

方法名
multi_filter(self, filters_val,*,range = None, delete=False)

方法描述
该方法会对多列进行筛选。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • filters_val : 按以下格式书写 {‘A’:[‘testA1’,’testA2’,’testA3’],’B’:[‘testB1’,’testB2’]’…}
  • range :筛选列范围: 如’A1:C5’, 如果为空则筛选整个Sheet(默认整个Sheet)
  • delete : 筛选后是否删除

返回值说明

示例

  1. #在范围B1:C14Z中,筛选B列等于1或者2 且 C列等于11或者22的值
  2. sheet.multi_filter({
  3. 'B':['1','2','3'],
  4. 'C':['11','22']
  5. },range = 'B1:C14')
  6. #当筛选列为数字,且在excel中显示为eg: 1,412.41 5,666,234.34 等类似加了',' 的数字时,
  7. #过滤条件也需要加','(英文的逗号)
  8. sheet.multi_filter({
  9. 'B':['1,412.41','5,666,234.34']
  10. })

run_macro

方法名
run_macro(self, macro_name, *, file=None)

方法描述
该方法会运行宏,可以使用本文件中的宏也可以使用外部文件的,此时需要外部文件的路径,赋值给file

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • macro_name : 宏命令名称
  • file : 宏文件(.xlsm)路径

返回值说明

示例

  1. OpenMacro = rpa.excel.open(r'C:\test.xlsx',visible=True)
  2. ws = OpenMacro.get_sheet()
  3. ws.run_macro("宏2",file=r"C:\test.xlsm")

merge_cell

方法名
merge_cell(self, range, *, each_row=False)

方法描述
该方法会合并单元格。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • range : 需要合并的范围,必须为 A1:B2的格式
  • each_row : 是否行内合并

返回值说明

示例

  1. sheet.merge_cell("A1:B2",each_row=True)

insert

方法名
insert(self, range, *, insertDirection=None)

方法描述
插入功能

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • range : ‘A’为列 ‘1’位行 ‘A1’为单元格 ‘A1:B2’为范围
  • insertDirection : 插入方向 下移 右移

返回值说明

示例

  1. sheet.insert("A1")
  2. sheet.insert("A")
  3. sheet.insert(1)
  4. sheet.insert("A1:B2")

delete

方法名
delete(self, range, *, insertDirection=None)

方法描述
删除功能

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • range : ‘A’为列 ‘1’位行 ‘A1’为单元格 ‘A1:B2’为范围
  • insertDirection : 插入方向 上移 左移

返回值说明

示例

  1. sheet.delete("A1")
  2. sheet.delete("A")
  3. sheet.delete(1)
  4. sheet.delete("A1:B2")

remove_duplicate

方法名
remove_duplicate(self, range, cols)

方法描述
列去重功能

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • range : ‘A’为列 ‘A1:B2’为范围
  • cols : 去重列号的集合

返回值说明

示例

  1. sheet.remove_duplicate("A1:D9",["A","C"])

create_pivottable

方法名
create_pivottable(self, data_sheet, data_range, pivot_sheet,pivot_range, pivot_settings)

方法描述
创建透视表重功能

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • data_sheet : 透视表源数据所在Sheet名称
  • data_range : 透视表源数据范围
  • pivot_sheet : 透视表插入的Sheet名称
  • pivot_range : 透视表插入的位置
  • pivot_settings : 透视表设置

pivot_settings.values中的Function:

Function 说明
xlSum 求和
xlCount 计数
xlAverage 平均值
xlMax 最大值
xlMin 最小值
xlProduct 乘积
xlCountNums 数值计数
xlStDev 标准偏差
xlStDevP 总体标准偏差
xlVar 方差
xlVarP 总体方差

返回值说明

示例

  1. xls = rpa.excel.open(r'C:\test.xlsx',visible = True)
  2. sheet = xls.get_sheet('原数据')
  3. pivot_settings = rpa.excel.PivotTableSettings('MyPivotTable')
  4. pivot_settings.columns['购买者'] = {} # 添加"列标签"
  5. pivot_settings.filters['日期'] = {} # 添加"筛选字段"
  6. pivot_settings.rows['类型'] = {} # 添加"行标签"
  7. pivot_settings.values['金额'] = {"Function": "xlSum"} # 添加"数值"
  8. sheet.create_pivottable('原数据', 'A1:D8', '透视表', 'A1', pivot_settings)
  9. xls.save()

refresh_pivottable

方法名
refresh_pivottable(self, *, index=1)

方法描述
刷新数据透视表功能
数据透视表序号:默认值是1,若一张sheet表中有多个透视表,需要指定具体序号

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • index : 数据透视表编号,如果有多张透视表需指定第几张

返回值说明

示例

  1. sheet.refresh_pivottable(index=1)

get_all_pivot_field_items

方法名
get_all_pivot_field_items(self, name, *, index=1)

方法描述
获取数据透视表某个字段下所有的可选项。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • name : 字段名
  • index : 数据透视表编号,如果有多张透视表需指定第几张

返回值说明
返回数据透视表某个字段下所有的可选项
示例

  1. sheet.get_all_pivot_field_items("aaa")

select_pivot_field_items

方法名
select_pivot_field_items(self, name, array, *, index=1, select=True)

方法描述
选择/取消选择一组透视表筛选项。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • name : 字段名
  • array :待选择的值列表
  • index : 数据透视表编号,如果有多张透视表需指定第几张
  • select : 选择或取消

返回值说明

示例

  1. sheet.select_pivot_field_items("aaa", ["1","2"])

find

方法名
find(self, text, *, range=None, count=0)

方法描述
查找指定内容功能

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • text : 查找的内容
  • range : 查找范围: 如’A1:C5’, 如果为空则查找整个Sheet(默认整个Sheet)
  • count : 0表示查找所有匹配项(默认为0)

返回值说明
返回二维数组,每行都是一个返回结果,第一列是行号,第二列是列号,第三列是匹配的单元格里的值; 返回0表示未找到任何匹配项。
示例

  1. print(sheet.find("AAA"))

add_picture

方法名
add_picture(self, file, col, row, width=None, height=None)

方法描述
向指定位置插入图片。不设置宽高按原图大小插入,设置宽高中的一个会按比例缩放,都设置有可能会导致图片变形。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • file : 插入图片的路径
  • col : 左上角单元格的列号
  • row : 左上角单元格的行号
  • width : 图片的宽度
  • height : 图片的高度

返回值说明

示例

  1. sheet.add_picture(r"C:\aaa.jpg","A","2")

get_row_height

方法名
get_row_height(self, row)

方法描述
获得指定行高度

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • row : 行号

返回值说明
返回指定行高度
示例

  1. print(sheet.get_row_height("1"))

set_row_height

方法名
set_row_height(self, row, height)

方法描述
设置指定行高度

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • row : 行号
  • height : 行高

返回值说明

示例

  1. sheet.set_row_height("1","20")

get_col_width

方法名
get_col_width(self, col)

方法描述
获取指定列宽度

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • col : 列号

返回值说明
返回指定列宽度
示例

  1. print(sheet.get_col_width("A"))

set_col_width

方法名
set_col_width(self, col, width)

方法描述
设置指定列宽度

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • col : 列号
  • width : 列宽

返回值说明

示例

  1. sheet.set_col_width("A","40")

get_formula

方法名
get_formula(self, range)

方法描述
获取指定范围的公式。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • range : ‘A’为列 ‘1’位行 ‘A1’为单元格 ‘A1:B2’为范围

返回值说明
返回指定范围的公式
示例

  1. print(sheet.get_formula("A1"))
  2. print(sheet.get_formula("1"))
  3. print(sheet.get_formula("A"))
  4. print(sheet.get_formula("A1:C2"))

set_formula

方法名
set_formula(self, range, formula)

方法描述
设置指定范围的公式。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • range : ‘A’为列 ‘1’位行 ‘A1’为单元格 ‘A1:B2’为范围
  • formula : 公式

返回值说明

示例

  1. sheet.set_formula("B4","=SUM(B1:B3)")

get_style

方法名
get_style(self, range, style)

方法描述
获取指定范围的样式。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • range : ‘A’为列 ‘1’位行 ‘A1’为单元格 ‘A1:B2’为范围
  • style : fontsize fontcolor fontname bgcolor

返回值说明
返回指定范围的样式
示例

  1. print(sheet.get_style("A1","fontname"))

set_style

方法名
set_style(self, range, style, value, color_format=None)

方法描述
设置指定范围的样式。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • range : ‘A’为列 ‘1’位行 ‘A1’为单元格 ‘A1:B2’为范围
  • style : fontsize fontcolor fontname bgcolor
  • value : 设置该属性的值,如果style为fontcolor/bgcolor,则value可以为’#FFFFFF’或者’255,255,255’
  • color_format : 颜色类型,如果style为fontcolor/bgcolor,需设置format为’HEX’或者’RGB’

返回值说明

示例

  1. sheet.set_style("A1","fontname","黑体")

get_comment

方法名
get_comment(self, range)

方法描述
获取单元格的注释,当单元格没有注释时,返回None。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • range : ‘A1’为单元格

返回值说明
返回单元格的注释,当单元格没有注释时,返回None
示例

  1. comment = sheet.get_comment("A1")
  2. print(comment)

set_comment

方法名
set_comment(self, range, comment)

方法描述
往单元格插入注释。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • range : ‘A1’为单元格
  • comment : 注释

返回值说明

示例

  1. sheet.set_comment("A1","注释")

replace

方法名
replace(self, text, replacement, *, range=None, match_case=False)

方法描述
替换指定内容。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • text : 查找的内容
  • replacement : 替换成的内容
  • range : 查找范围: 如’A1:C5’, 如果为空则查找整个Sheet(默认整个Sheet)
  • match_case : 是否大小写匹配

返回值说明

示例

  1. print(sheet.replace("AAA","ddd"))

to_pdf

方法名
to_pdf(self, file)

方法描述
Excel文档转化成pdf。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

  • file : 保存的pdf路径

返回值说明

示例

  1. sheet.to_pdf(r"C:\test.pdf"))

activate

方法名
activate(self)

方法描述
激活当前sheet。

版本信息
该方法适用于从3.3.0及以上版本。

参数说明

返回值说明

示例

  1. sheet.activate()

set_number_format

方法名
set_number_format(self, range, format)

方法描述
设置指定范围的数值格式。

版本信息
该方法适用于从3.4.0及以上版本。

参数说明

  • range : ‘A’为列 ‘1’为行 ‘A1’为单元格 ‘A1:B2’为范围
  • format : 如’@’,参见Excel中的单元格格式的自定义

返回值说明

示例

  1. sheet.set_number_format("A1", "yy/m/d")