2023年5月30日分_Pythonのopenpyxlの応用編
●概要
若干長めのopenpyxlをCHATGPTに作成してもらったので、記録用に記載
※コードの挙動は未チェック
エクセルの計算式を維持したまま別のファイルに転記する方法
from openpyxl import load_workbook
from openpyxl.utils import get_column_letter
# 元のファイルを読み込む
source_workbook = load_workbook("source_file.xlsx")
# シートを選択
source_sheet = source_workbook["Sheet1"]
# 新しいワークブックを作成
destination_workbook = Workbook()
destination_sheet = destination_workbook.active
# セルの数式を維持したままコピーする
for row in source_sheet.iter_rows(values_only=True):
destination_sheet.append(row)
# セルの数式を反映した値でコピーする
for row in source_sheet.iter_rows():
for cell in row:
destination_cell = destination_sheet[cell.coordinate]
destination_cell.value = cell.value
destination_cell.data_type = cell.data_type
# ワークブックを保存
destination_workbook.save("destination_file.xlsx")
# ワークブックをクローズ
source_workbook.close()
destination_workbook.close()
Excelファイルのデータ統合と集計
import os
from openpyxl import load_workbook
from openpyxl.utils import get_column_letter
# 統合後のデータを格納する新しいワークブックを作成
merged_wb = load_workbook()
merged_sheet = merged_wb.active
# フォルダ内のExcelファイルを一覧表示
folder_path = "path/to/folder"
files = os.listdir(folder_path)
for file in files:
if file.endswith(".xlsx"):
# Excelファイルを読み込む
file_path = os.path.join(folder_path, file)
wb = load
# Excelファイルの各シートのデータを統合
with load_workbook(file_path) as wb:
for sheet_name in wb.sheetnames:
sheet = wb[sheet_name]
for row in sheet.iter_rows(min_row=2, values_only=True):
# データを統合して新しいワークブックに追加
merged_sheet.append(row)
# 統合したデータを保存
merged_wb.save("path/to/merged.xlsx")
# 統合後のデータの集計
data = []
for row in merged_sheet.iter_rows(min_row=2, values_only=True):
data.append(row)
# 集計処理の例(合計値)
sum_value = sum([row[0] for row in data])
# 集計結果の表示
print("合計値:", sum_value)
複数のExcelファイルにはそれぞれ異なるデータが含まれています。
これらのExcelファイルから特定の条件に一致するデータを検索し、データをマージ・結合するPythonプログラム
import os
from openpyxl import load_workbook
from openpyxl.utils import get_column_letter
# 検索条件を入力
search_column = "A"
search_value = "example"
# 結合後のデータを格納する新しいワークブックを作成
merged_wb = load_workbook()
merged_sheet = merged_wb.active
# フォルダ内のExcelファイルを一覧表示
folder_path = "path/to/folder"
files = os.listdir(folder_path)
for file in files:
if file.endswith(".xlsx"):
# Excelファイルを読み込む
file_path = os.path.join(folder_path, file)
wb = load_workbook(file_path)
for sheet_name in wb.sheetnames:
sheet = wb[sheet_name]
for row in sheet.iter_rows(min_row=2, values_only=True):
# 指定された条件に一致する行を絞り込む
if row[get_column_letter(sheet.columns.index(search_column))] == search_value:
# データをマージして新しいワークブックに追加
merged_sheet.append(row)
wb.close()
# 結合したデータを保存
merged_wb.save("path/to/merged.xlsx")
print("データのマージ・結合が完了しました。")
openpyxlを使用してファイルを書き込むコード例
from openpyxl import Workbook
# 新しいワークブックを作成
workbook = Workbook()
# アクティブなシートを取得
sheet = workbook.active
# セルに値を書き込む
sheet["A1"] = "Hello"
sheet["B1"] = "World!"
# 別のセルに値を書き込む方法
cell = sheet.cell(row=2, column=1)
cell.value = "This is a cell"
# ファイルを保存
workbook.save("path/to/file.xlsx")
# ワークブックをクローズ
workbook.close()
print("ファイルの書き込みが完了しました。")
Excelファイルの表計算データ統合
import os
from openpyxl import Workbook, load_workbook
# 新しいワークブックを作成
merged_wb =Workbook()
# フォルダ内のExcelファイルを一覧表示
folder_path = "path/to/folder"
files = os.listdir(folder_path)
for file in files:
if file.endswith(".xlsx"):
# Excelファイルを読み込む
file_path = os.path.join(folder_path, file)
wb = load_workbook(file_path)
for sheet_name in wb.sheetnames:
sheet = wb[sheet_name]
# 表計算データのセル範囲を取得
data = sheet.iter_rows(values_only=True)
# 新しいシートを作成し、表計算データを追加
new_sheet = merged_wb.create_sheet(sheet_name)
for row in data:
new_sheet.append(row)
wb.close()
# 結合したデータを保存
merged_wb.save("path/to/merged.xlsx")
print("表計算データの結合が完了しました。")