【解决方案】WPS/Excel实现固定长度分列
评论
收藏

【解决方案】WPS/Excel实现固定长度分列

经验分享
沥川
2024-09-10 11:59·浏览量:365
沥川
发布于 2024-09-10 11:57更新于 2024-09-10 11:59365浏览

【问题背景】

现有指令仅支持指定分隔符分割成多列,但在实际工作中有些小伙伴需要按固定长度分列

【效果演示】

【解决方案】

1.新建自定义指令

2.新建python模块

3.粘贴以下代码

# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块

import xbot
from xbot import print, sleep, excel
from .import package
from .package import variables as glv

def main(args):
    pass

def split_fixed_length(text, length):
    """按固定长度分割字符串"""
    if text is None or text == '':
        return []  # 如果是 None 或空字符串,返回空列表
    text_str = str(text)  # 确保输入是字符串
    return [text_str[i:i + length] for i in range(0, len(text_str), length)]

def split_col(workbook, sheet_name, col, new_col, fixed_length):
    worksheet = workbook.get_sheet_by_name(sheet_name)

    # 获取要分列的列(假设为 col 列)
    original_column_data = worksheet.get_column(col)
    
    # 存储分割后的数据
    split_data = []
    
    for cell in original_column_data:
        # 处理每个单元格,分割并添加到 split_data
        split_row = split_fixed_length(cell, fixed_length)
        split_data.append(split_row)
    
    # 将分割后的数据写入新的列(假设从 new_col 列开始)
    for row_index, split_row in enumerate(split_data):
        for col_index, value in enumerate(split_row):
            print(value)
            if value:  # 只写入非空值
                worksheet.set_cell(row_index + 1, chr(ord(new_col) + col_index), value)

4.主流程中新建流程参数,编辑指令信息填写指令参数

5.在主流程中调用模块中的split_col函数,传入对应参数

6.发版指令,在流程中调用


收藏
全部评论1
最新
发布评论
评论