fix: 生物由来Excel出力で、以下の修正対応を実施

・Veeva卸コード、Veeva卸組織コード、Veeva取引区分コードが数値型で出力されていたのを、文字列型に変換
・出力したExcelに罫線を引く
This commit is contained in:
shimoda.m@nds-tyo.co.jp 2023-09-19 21:15:32 +09:00
parent a840e14b09
commit e93c6c78f8
2 changed files with 22 additions and 3 deletions

View File

@ -45,10 +45,10 @@ class BioSalesLotRepository(BaseRepository):
inst_name_form,
address,
tel_num,
v_whs_cd,
v_whsorg_cd,
CAST(v_whs_cd AS CHAR) AS v_whs_cd,
CAST(v_whsorg_cd AS CHAR) AS v_whsorg_cd,
whs_org_name,
v_tran_cd,
CAST(v_tran_cd AS CHAR) AS v_tran_cd,
iko_flg
FROM
src05.bio_sales_lot

View File

@ -5,6 +5,7 @@ import shutil
from datetime import datetime
import pandas as pd
from openpyxl.styles.borders import Border, Side
from src.aws.aws_api_client import AWSAPIClient
from src.aws.s3 import S3Client
@ -155,9 +156,20 @@ class BioViewService(BaseService):
data_frame_chunk_size = 2000 # 各部分データフレームのサイズ
is_first = True # ループの初回
data_frame_range = len(data_frame)
side = Side(style='thin', color='000000')
border = Border(top=side, bottom=side, left=side, right=side)
# 出力したExcelに罫線を引く
workbook = writer.book
sheet = workbook['Sheet1']
for row in sheet[f'A1:AK{i + data_frame_chunk_size}']:
for cell in row:
cell.border = border
# 指定行数ごとにデータを分割して処理
for i in range(0, data_frame_range, data_frame_chunk_size):
chunk_df = data_frame.iloc[i:i + data_frame_chunk_size]
start_row = i + 1
# 1回目の分割では、ヘッダ部分を上書きしないようにする
if is_first:
@ -166,6 +178,13 @@ class BioViewService(BaseService):
await loop.run_in_executor(None, functools.partial(
chunk_df.to_excel, writer,
header=False, index=False, startrow=start_row, startcol=0))
# workbook = writer.book
# sheet = workbook['Sheet1']
# side = Side(style='thin', color='000000')
# border = Border(top=side, bottom=side, left=side, right=side)
# for row in sheet[f'A1:AK{data_frame_range + 1}']:
# for cell in row:
# cell.border = border
return output_file_path