python 解析excel生成java代码

# /usr/bin/python3
"""
    Author : zwj
    Date   : 2021/06/13
    Desc   : 读取excel自动生成java代码
    Log    :
"""
import os
import argparse
from openpyxl import load_workbook

class create_java:

    def __init__(self,excel_path, java_path):
        self.excel_path = excel_path
        self.java_path = java_path

    def dir_is_exist(self, dirs):
        for dir in dirs:
            if os.path.isdir(dir):
                return True
            else:
                print("目录不存在,请确认目录:{0}".format(dir))
                return False

    def excel_is_exist(self):
        self.excel_file_names = []
        for file in os.listdir(self.excel_path):
            file_name = self.excel_path+"/"+file
            if file_name.endswith(('.xlsx', '.xlsm', '.xltx', '.xltm')):
                self.excel_file_names.append(file_name)
        if len(self.excel_file_names) == 0:
            print("该目录下:{0}没有符合条件的excel文件".format(self.excel_path))
            return False
        else:
            return self.excel_file_names

    def sheet_data_is_available(self, excel_name, sheet_object, sheet_name):
        self.max_row = sheet_object.max_row
        if self.max_row<2:
            print("文件{0}的sheet:{1}数据太少,至少需要两行数据".format(excel_name, sheet_name))
            return False
        elif sheet_object['A1'].value == None:
            print("文件{0}的sheet:{1}第一行第一列数据为空,无法生成java文件".format(excel_name, sheet_name))
            return False
        else:
            return True

    def write_file(self, sheet_object):
        tmp_file = self.java_path+"/"+str(sheet_object['A1'].value)+'.java'
        row_datas = sheet_object[2:self.max_row]
        with open(tmp_file, 'w') as f:
            if not isinstance(row_datas[0], tuple):
                note = row_datas[2].value
                variable = row_datas[0].value
                variable_type = row_datas[1].value
                f.write("/**\n * {0}\n *\n */\nprivate {1} {2};\n".format(note, variable_type, variable))
            else:
                for row_data in row_datas:
                    note = row_data[2].value
                    variable = row_data[0].value
                    variable_type = row_data[1].value
                    f.write("/**\n * {0}\n *\n */\nprivate {1} {2};\n".format(note, variable_type, variable))
        print("create {0} file success!".format(str(sheet_object['A1'].value)+'.java'))

    def main(self):
        if self.dir_is_exist([self.excel_path, self.java_path]):
            if self.excel_is_exist():
                for excel_file_name in self.excel_file_names:
                    self.wb = load_workbook(excel_file_name)
                    for sheet_name in self.wb.sheetnames:
                        if self.sheet_data_is_available(excel_file_name, self.wb[sheet_name], sheet_name):
                            self.write_file(self.wb[sheet_name])

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--excel_path', type=str, default='D:/', help="excel文件存放路径")
    parser.add_argument('--java_path', type=str, default='D:/', help="java文件存放路径")
    args = parser.parse_args()
    x = create_java(args.excel_path, args.java_path)
    x.main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值