Python生成代码-Excel配置数据
青春qingchun不在
编辑于 2023年05月14日 18:53
收录于文集
共2篇

1.简介

    突然有个想法,代码有的时候经常不动,动的是数据,能不能用excel配置数据,然后自动生成代码呢?

    工程链接:

代码块
Shell
自动换行
复制代码
https://github.com/czc13611858691/XlsxGenCode
复制成功

    功能示意图:

    python版本和依赖的库的版本

代码块
Shell
自动换行
复制代码
python version 3.11.3 64-bit
openpyxl version 3.1.2
jinja2 version 3.1.2
复制成功

2.代码

2.1.python代码 -main.py

代码块
Python
自动换行
复制代码
# python version 3.11.3 64-bit
# openpyxl version 3.1.2
# jinja2 version 3.1.2


import openpyxl
from jinja2 import Template
def excel_row_value_dice(file_name, title):
    wb = openpyxl.load_workbook(file_name)
    ws = wb[title]  
    cols_list = []
    for col in ws.columns:
        col_list = []
        for cell in col:
            col_list.append(cell.value)
        newlist = list(filter(lambda x : x != None, col_list))
        cols_list.append(newlist)
    # print(rows_list)
    result = {}
    for i in range(len(cols_list)):
        col_list = []
        if((len(cols_list[i])-1)>1):
            for j in range(len(cols_list[i])-1):
                col_list.append(cols_list[i][j+1])
            result[cols_list[i][0]]=col_list
        elif((len(cols_list[i])-1)==1):
            result[cols_list[i][0]]=cols_list[i][1]
    # print(reslut)
    return result
file_name, title=r'./data.xlsx','Sheet1'
template_fname=r"./template.tpl"
template = Template(open(template_fname,encoding='utf-8').read())
with open('./template/test.c','w',encoding='utf-8') as f:
    f.write(template.render(excel_row_value_dice(file_name, title)))
复制成功

2.2.模板文件-template.tpl

代码块
Python
自动换行
复制代码
var:{{var}}

{%- for i in list %}
list:{{i}}
{%- endfor %}
复制成功

2.3.excel数据 data.xlsx

2.4.最后生成的文件 test.c

代码块
Shell
自动换行
复制代码
var:1
list:2
list:3
list:4
复制成功

cut-off

    此文章有什么错误欢迎指出!!!