PythonでExcelファイル(xls/xlsx)を操作する方法

Excelファイル(xls形式)の操作

xlwtを使用したExcelファイルの作成と書き込み

import xlwt

def create_xls_file(data_list, output_path):
    # ワークブックの作成
    book = xlwt.Workbook(encoding="utf-8")
    
    # ワークシートの追加
    sheet = book.add_sheet('データシート')
    
    # データの書き込み
    for row_idx, row_data in enumerate(data_list):
        for col_idx, cell_value in enumerate(row_data):
            sheet.write(row_idx, col_idx, cell_value)
    
    # ファイルの保存
    book.save(output_path)

# 使用例
sample_data = [
    ['商品ID', '商品名', '価格'],
    [1001, 'ノートPC', 120000],
    [1002, 'スマートフォン', 80000],
    [1003, 'タブレット', 50000]
]
create_xls_file(sample_data, 'products.xls')

xlrdを使用したExcelファイルの読み込み

import xlrd

def read_xls_file(file_path):
    # ワークブックのオープン
    workbook = xlrd.open_workbook(file_path)
    
    # 最初のシートを取得
    sheet = workbook.sheet_by_index(0)
    
    # データの読み込み
    extracted_data = []
    for row in range(sheet.nrows):
        row_data = sheet.row_values(row)
        extracted_data.append(row_data)
    
    return extracted_data

# 使用例
data = read_xls_file('products.xls')
for row in data:
    print(row)

Excelファイル(xlsx形式)の操作

openpyxlを使用した基本的な操作

import openpyxl
from openpyxl.styles import Font, Alignment

def create_xlsx_file(data, filename):
    # ワークブックの作成
    wb = openpyxl.Workbook()
    ws = wb.active
    
    # スタイルの設定
    header_font = Font(bold=True)
    center_align = Alignment(horizontal='center')
    
    # データの書き込み
    for row in data:
        ws.append(row)
    
    # ヘッダーのスタイル適用
    for cell in ws[1]:
        cell.font = header_font
        cell.alignment = center_align
    
    # 列幅の調整
    ws.column_dimensions['A'].width = 15
    ws.column_dimensions['B'].width = 20
    ws.column_dimensions['C'].width = 12
    
    # ファイルの保存
    wb.save(filename)

# 使用例
sales_data = [
    ['取引日', '顧客名', '金額'],
    ['2023-10-01', '株式会社A', 150000],
    ['2023-10-02', '株式会社B', 98000],
    ['2023-10-03', '株式会社C', 120000]
]
create_xlsx_file(sales_data, 'sales_report.xlsx')

既存ファイルへのデータ追加

def append_to_xlsx(new_data, filename):
    # 既存ファイルを読み込み
    wb = openpyxl.load_workbook(filename)
    ws = wb.active
    
    # 新しいデータを追加
    for row in new_data:
        ws.append(row)
    
    # ファイルの保存
    wb.save(filename)

# 使用例
additional_data = [
    ['2023-10-04', '株式会社D', 85000],
    ['2023-10-05', '株式会社E', 110000]
]
append_to_xlsx(additional_data, 'sales_report.xlsx')

タグ: Python Excel xlwt xlrd openpyxl

7月18日 22:05 投稿