希望和大家交朋友

原贴 非本人原创~

https://www./zhangyameng-lxats/ep1acs/yg39n5ryynh1g1eg?singleDoc

一、Python的xlwings模块:

Python的xlwings模块可以直接操作Excel对象,在影刀里面可以不使用影刀的接口,可以直接使用插入Python代码段去对打开的Excel表格进行操作,还是很厉害的,下面就介绍一下;

xlwings模块具体使用文档:

https://blog.csdn.net/wangyuxiang946/article/details/1322493399

二、影刀操作截图:

1.获取当前激活的sheet页:

excel_instance.workbook.ActiveSheet

#注意:

excel_instance代表的Excel对象

.workbook代表当前工作簿

.ActiveSheet代表当前激活的sheet页

.workbook.ActiveSheet这部分内容是固定要加入的,不允许改变,而且一定注意大小写!!!

示例代码:

excel_instance.workbook.ActiveSheet.Range("A1").value= "你好11111"

对当前Excel对象中的当前激活sheet页的A1单元格进行写入“你好11111”的内容!!

2.获取指定sheet页:

excel_instance.workbook.sheets[“Sheet2”]

#注意:

excel_instance代表的Excel对象

.workbook代表当前工作簿

.sheets[“Sheet2”]代表激活名为sheet2的sheet页

.workbook.ActiveSheet这部分内容是固定要加入的,不允许改变,而且一定注意大小写!!!

示例代码:

excel_instance.workbook.sheets["Sheet2"].Range("A1").value= "你好11111"

对当前Excel对象中的指定的名为sheet2的sheet页的A1单元格进行写入“你好11111”的内容!!

三、Python的Win32库:

Python里面的pywin32 库来可以进行来操作 Excel,而且可以用Python的win32库来进行与excel的VBA代码进行转换!!!

案例代码——例1:

使用插入Python代码的段的方式,实现将指定单元格的超链接设置为指定的目标sheet页!

worksheet = excel_instance.workbook.ActiveSheet   # 获取当前激活sheet页
cell = worksheet.Range("B1")  # 定位到指定单元格
cell.Select()    # 选取指定单元格

hyperlink = worksheet.Hyperlinks.Add(Anchor=cell, Address="", SubAddress="Sheet1!A1")    # 将指定单元格添加超链接

#注意:

①:将B1改成自定义的单元格

②:将sheet!A1改成目标sheet页 sheet!A1里面的!A1一定要填写!!!

影刀调用截图:

案例代码——例2:

本地有一张数据表格,表格里面有一个sheet页 sheet页里面的C列是金额这一列,我希望根据C列金额总和拆分成多个列表 每个列表内的金额列总和不能超过100000,注意操作Excel的库你需要给我指定使用pywin32库来操作,最后结果给我返回一个二维列表,二维列表里面的每一项列表之和能够满足不超过100000的要求,帮我写一个Python代码函数;

from xbot import print

worksheet = excel_instance.workbook.sheets["Sheet3"]

# 获取金额列的数据
amounts_range = worksheet.Range("C1:C14")
amounts_values = [cell.Value for cell in amounts_range if cell.Value]

# 拆分金额列数据
result = []
current_list = []
current_sum = 0

for amount in amounts_values:
    if current_sum + amount <= 100:
        current_list.append(amount)
        current_sum += amount
    else:
        result.append(current_list)
        current_list = [amount]
        current_sum = amount

result.append(current_list)  # 添加最后一个列表
影刀RPA练习题|035期 魔法指令生成的Excel指令如何和原生指令配合
print(result)

#注意:

①: worksheet = excel_instance.workbook.sheets[“Sheet3”] 这里面的sheet3改成你目标的sheet页名称 

②: amounts_range = worksheet.Range(“C1:C14”) 这里的“C1:C14”改成你这列单元格的范围 这些都是可以用变量的 用“获取总行数” 

③: if current_sum + amount <= 100: 这里面的“100” 改成你目标的金额 

④: 然后结果会返回一个二维列表 [[30.0, 30.0, 40.0], [20.0, 10.0, 5.0, 7.0, 5.0, 45.0], [50.0, 20.0], [70.0, 10.0]] 列表的每一项就是一个 

然后接下来就简单了 根据最后的二维列表判断对应的列表长度 就是你要新建sheet页的个数 直接遍厉二维列表 直接进行写入即可!!!

案例代码——例3:

本地有一张数据表格,希望对表格里面的A列进行分列动作,按照下划线的符号去进行分割,最终结果分成2列

import win32com.client as win32

# 打开 Excel 文件
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = True   # 添加可视化打开,就是人肉眼可以看到表格被打开
workbook = excel.Workbooks.Open(r'C:pathtoyourworkbook.xlsx')

# 选择 A 列并进行文本分列
worksheet = workbook.Worksheets('Sheet1')
worksheet.Columns('A:A').Select()
excel.Selection.TextToColumns(Destination=worksheet.Range('A1'), DataType=win32.constants.xlDelimited, _
    TextQualifier=win32.constants.xlDoubleQuote, ConsecutiveDelimiter=False, Tab=False, _
    Semicolon=False, Comma=False, Space=False, Other=True, OtherChar='_', FieldInfo=[(1, 1), (2, 1)], TrailingMinusNumbers=True)

# 选中 D8 单元格
worksheet.Range('D8').Select()

# 关闭 Excel 文件并退出程序
workbook.Close(SaveChanges=True)
excel.Quit()

#代码解释:

①:excel.Visible = True 这个代码控制是否可视化看见表格 False:不可见

②:workbook = excel.Workbooks.Open(r’C:pathtoyourworkbook.xlsx’) 这段代码可以与 影刀中的 excel_instance.workbook等价替换!!!

excel.Workbooks.Open(r’C:pathtoyourworkbook.xlsx’) = excel_instance.workbook

提示:

①:后续可以直接使用下边的代码去替换“启动Excel”指令

import win32com.client as win32

# 打开 Excel 文件
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = True   # 添加可视化打开,就是人肉眼可以看到表格被打开
workbook = excel.Workbooks.Open(r'C:pathtoyourworkbook.xlsx')

②:后续可以直接使用下边的代码去替换“关闭Excel”指令

# 关闭 Excel 文件并退出程序
workbook.Close(SaveChanges=True)
excel.Quit()

案例代码——例4:

使用插入Python代码的段的方式,实现在指定sheet页后边新建sheet页

import win32com.client as win32

excel = win32.gencache.EnsureDispatch('Excel.Application')  # 必须加上!!!

worksheet = excel_instance.workbook.sheets["联系人"]         # 选择激活指定sheet页
new_sheet = excel_instance.workbook.Sheets.Add(After=worksheet)
new_sheet.Name = '字节12345'

注意:

①:excel = win32.gencache.EnsureDispatch(‘Excel.Application’) 这段代码一定要加,不加的话效果不能达到理想的状态

②:“联系人”——- 替换成 ——- 目标sheet页名称

③:“字节12345”——- 替换成 ——- 新建sheet页名称