------ # # 複数のCSVファイルを読んで1つのExcelファイルにする。 # 各CSVに対応するシート名は指定した物に変える。 # 各シートの1行目の全セルの背景色を灰色にする。 # 各シートの1列目の全セルは書式を文字列に、その他の列の全セルは書式を「標準」にする。 # # 2025/10/15 # import pandas as pd from openpyxl import load_workbook from openpyxl.styles import PatternFill # CSVファイルとシート名の対応 files = [("sections.csv", "所属別"), ("persons.csv", "個人別")] # Excel出力ファイル名 OUTPUT_FILE_PATH = "data.xlsx" # 各CSVをExcelに書き込み with pd.ExcelWriter(OUTPUT_FILE_PATH, engine="openpyxl") as writer: for csv_file, sheet_name in files: df = pd.read_csv(csv_file, dtype=str, encoding="cp932") # 1列目を含めてすべて文字列として読む df.to_excel(writer, index=False, sheet_name=sheet_name) # 背景色を設定 wb = load_workbook(OUTPUT_FILE_PATH) gray_fill = PatternFill(start_color="CCCCCC", end_color="CCCCCC", fill_type="solid") for _, sheet_name in files: ws = wb[sheet_name] # 1行目の全セルの背景色を灰色にする for cell in ws[1]: # 1行目すべてのセル cell.fill = gray_fill # 各シートの1列目は全セルを文字列、その他の列は全セルを「標準」 max_col = ws.max_column max_row = ws.max_row for row in ws.iter_rows(min_row=1, max_row=max_row, min_col=1, max_col=max_col): for cell in row: if cell.column == 1: # A列(1列目) cell.number_format = '@' # 文字列 else: #cell.number_format = '#.00' cell.number_format = 'General' # 標準 wb.save(OUTPUT_FILE_PATH) # end. ------