import openpyxl
import readTableDefine
import searchTableName
import datetime
###############################################################################################
# 対象テーブルリスト
###############################################################################################
tableNameList = ["table_a","table_b","table_c"]
###############################################################################################
# ファイルパス定義
###############################################################################################
temp = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
saveBookPath = "makeData_{}.xlsx".format(temp)
srchTableNamePath = 'a5m2_TABLES.xlsx'
tableDefineFilePath = "a5m2_COLUMNS.xlsx"
domainFilePath = "a5m2_DOMAINS.xlsx"
###############################################################################################
# 背景色定義
fill = openpyxl.styles.PatternFill(patternType='solid',
start_color='ccdfff', end_color='ccdfff')
###############################################################################################
# 保存Excelファイルのワークシートの設定行番号定義
###############################################################################################
TABLE_NAME = 3
COLUMN_NAME = 4
LOGICAL_NAME = 5
IS_NULLABLE = 6
DATA_TYPE = 7
KEY_POSITION = 8 # PK
###############################################################################################
# 1.ワークブックオブジェクト取得
# 2.テーブル定義読取処理を呼び出し、検索テーブル(リスト)に該当する項目定義(リスト)取得
# 3.取得結果のキー:テーブル名(物理名)を元に該当項目定義を取得し、
# 保存ブックパスのワークシートに該当項目定義を設定
# 4.ワークブック保存
###############################################################################################
# 1.ワークブックオブジェクト取得
wb = openpyxl.Workbook()
wb.active
# 2.テーブル定義読取処理を呼び出し、検索テーブル(リスト)に該当する項目定義(リスト)取得
dic = readTableDefine.MyReadTableDefine(tableNameList, tableDefineFilePath, domainFilePath).read()
# 3.取得結果のキー:テーブル名(物理名)を元に該当項目定義を取得し、保存ブックパスのワークシートに該当項目定義を設定
for idx, key in enumerate(dic):
start_colNo = 3
ws = []
if idx == 0:
ws = wb.worksheets[idx]
ws.title = key[0:30] # 桁超えしないように
else:
wb.create_sheet(title=key, index=idx)
ws = wb[key]
# 項目定義(リスト)から項目定義を取得
for colInfo in dic[key]:
start_rowNo = 3
#ws.cell(row=TABLE_NAME, column=start_colNo).value = colInfo.table_name
# 行3、列3にテーブル名(物理名)設定
if start_rowNo == 3 and start_colNo == 3:
ws.cell(row=TABLE_NAME, column=start_colNo).value = colInfo.table_name
# 論理名検索処理を呼び出し、行3、列4にテーブル名(論理名)設定
ws.cell(row=TABLE_NAME, column=start_colNo+1).value = searchTableName.MySearchTableName(
srchTableNamePath, colInfo.table_name).searchJp()
# 項目名(物理名)設定(行:4,列:該当start_colNo)
ws.cell(row=COLUMN_NAME, column=start_colNo).value = colInfo.column_name
# 項目名(論理名)設定(行:5,列:該当start_colNo)
ws.cell(row=LOGICAL_NAME, column=start_colNo).value = colInfo.logical_name
# NULL許可フラグ設定(行:6,列:該当start_colNo)
ws.cell(row=IS_NULLABLE, column=start_colNo).value = colInfo.is_nullable
# データ型設定(行:7,列:該当start_colNo)
ws.cell(row=DATA_TYPE, column=start_colNo).value = colInfo.data_type
# キーポジション設定(行:8,列:該当start_colNo)
ws.cell(row=KEY_POSITION, column=start_colNo).value = colInfo.key_position
# 背景設定(行3~9の該当列)、中央揃え
if start_rowNo >= 3 and start_rowNo <=9:
ws.cell(row=start_rowNo, column=start_colNo).fill = fill
ws.cell(row=start_rowNo, column=start_colNo).alignment = openpyxl.styles.Alignment(horizontal='center')
start_rowNo += 1
start_colNo += 1
# 4.ワークブック保存
wb.save(saveBookPath)
###############################################################################################
댓글 없음:
댓글 쓰기