写了个脚本处理科目余额表

写了个脚本处理科目余额表

简单处理Excel还是Python好用

每月用友的科目余额表,表头和表尾是固定的,只有中间的数据不同。

写了个短脚本用来掐头去尾,之后在新的一列填充科目编码的长度,用于后续好筛选处理。

既然是短脚本就用Python+Openpyxl来写了,很简单,懒得上传Github,就这里保存一下。

这个月又给VPS续了三年费,马上搬新家了,博客自从换了VPS写的不多,没事还得来写写,不知道以后这VPS能传给女儿学开发么。。。

import openpyxl


# 对数据表中数据进行清理
def delete_redundancy_data(worksheet):
    print("当前清理:", sheet.title)
    start_max_row = sheet.max_row
    print("初始最大行数是:", sheet.max_row)
    start_max_column = sheet.max_column
    print("初始最大列数是:", start_max_column)
    # 取消全部的固定合并单元格
    sheet.unmerge_cells("A5:J5")
    sheet.unmerge_cells("A6:J6")
    sheet.unmerge_cells("A7:J7")
    sheet.unmerge_cells("A8:A9")
    sheet.unmerge_cells("B8:B9")
    sheet.unmerge_cells("C8:C9")
    sheet.unmerge_cells("I8:I9")
    # 取消需要经过计算的最后三行合并单元格
    for i in range(0, 3):
        row_number = "A{}:J{}".format(start_max_row - i, start_max_row - i)
        print("取消合并单元格:", row_number)
        sheet.unmerge_cells(row_number)

    # 删除从总计开始的最后四行
    sheet.delete_rows(start_max_row - 3, 4)
    # 删除固定的第9行
    sheet.delete_rows(9, 1)
    # 删除固定的1-7行
    sheet.delete_rows(1, 7)


# 填充长度
def fill_in_length(sheet):
    print("开始从第11列填写科目代码长度")
    row_length = sheet.max_row
    print("处理后最大列数是:", row_length)

    # 填充表头
    sheet.cell(row=1, column=11, value="LEN")

    # 填充K列每一个单元格
    for i in range(2, row_length + 1):
        sheet.cell(row=i, column=11, value=len(sheet.cell(row=i, column=1).value))


# 先将default.xls 通过Excel保存为xlsx文件
print("自动处理科目余额表\n")

default_path_name = "C:\\Users\\Minko\\Desktop\\default.xlsx"

wb = openpyxl.load_workbook(default_path_name)

for sheet in wb:
    delete_redundancy_data(sheet)
    fill_in_length(sheet)
    print("完成工作表:", sheet.title, "\n")

print("全部处理完成:工作表已经保存至桌面 processed_ledger.xlsx")
wb.save("C:\\Users\\Minko\\Desktop\\processed_ledger.xlsx")

LICENSED UNDER CC BY-NC-SA 4.0
Comment