fix: 生物由来Excel出力で、以下の修正対応を実施
・Veeva卸コード、Veeva卸組織コード、Veeva取引区分コードが数値型で出力されていたのを、文字列型に変換 ・出力したExcelに罫線を引く
This commit is contained in:
parent
a840e14b09
commit
e93c6c78f8
@ -45,10 +45,10 @@ class BioSalesLotRepository(BaseRepository):
|
|||||||
inst_name_form,
|
inst_name_form,
|
||||||
address,
|
address,
|
||||||
tel_num,
|
tel_num,
|
||||||
v_whs_cd,
|
CAST(v_whs_cd AS CHAR) AS v_whs_cd,
|
||||||
v_whsorg_cd,
|
CAST(v_whsorg_cd AS CHAR) AS v_whsorg_cd,
|
||||||
whs_org_name,
|
whs_org_name,
|
||||||
v_tran_cd,
|
CAST(v_tran_cd AS CHAR) AS v_tran_cd,
|
||||||
iko_flg
|
iko_flg
|
||||||
FROM
|
FROM
|
||||||
src05.bio_sales_lot
|
src05.bio_sales_lot
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import shutil
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
from openpyxl.styles.borders import Border, Side
|
||||||
|
|
||||||
from src.aws.aws_api_client import AWSAPIClient
|
from src.aws.aws_api_client import AWSAPIClient
|
||||||
from src.aws.s3 import S3Client
|
from src.aws.s3 import S3Client
|
||||||
@ -155,9 +156,20 @@ class BioViewService(BaseService):
|
|||||||
data_frame_chunk_size = 2000 # 各部分データフレームのサイズ
|
data_frame_chunk_size = 2000 # 各部分データフレームのサイズ
|
||||||
is_first = True # ループの初回
|
is_first = True # ループの初回
|
||||||
data_frame_range = len(data_frame)
|
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):
|
for i in range(0, data_frame_range, data_frame_chunk_size):
|
||||||
chunk_df = data_frame.iloc[i:i + data_frame_chunk_size]
|
chunk_df = data_frame.iloc[i:i + data_frame_chunk_size]
|
||||||
|
|
||||||
start_row = i + 1
|
start_row = i + 1
|
||||||
# 1回目の分割では、ヘッダ部分を上書きしないようにする
|
# 1回目の分割では、ヘッダ部分を上書きしないようにする
|
||||||
if is_first:
|
if is_first:
|
||||||
@ -166,6 +178,13 @@ class BioViewService(BaseService):
|
|||||||
await loop.run_in_executor(None, functools.partial(
|
await loop.run_in_executor(None, functools.partial(
|
||||||
chunk_df.to_excel, writer,
|
chunk_df.to_excel, writer,
|
||||||
header=False, index=False, startrow=start_row, startcol=0))
|
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
|
return output_file_path
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user