# /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()
python 解析excel生成java代码
于 2021-06-13 14:46:15 首次发布