PythonでExcelファイルにデータを書き込む | プログラミング学習 初心者向け入門ガイド

ホーム › >>

PythonでExcelファイルにデータを書き込む

記事掲載:https://laptrinhcanban.com/ja

Python でExcel ファイルを処理するトピックの次の記事では、 Python でExcel ファイルを作成する方法を学習します。新しい Excel ファイルを作成し、準備したデータを Excel ファイルに書き込む方法を学習します。また、セルの追加、セルの内容の編集、シートの追加、シートの削除とコピーなどの操作で、Python の openpyxl モジュールを使用して、既存の Excel ファイルを開き、編集し、データを書き込む方法も学習します。

Python で Excel ファイルにデータを書き込むには、次の 2 つの方法があります。

  • 新しいExcelファイルを作成し、データを書き込みます
  • 既存のExcelファイルを開いてデータを書き込む

Pythonで新しいExcelファイルを作成し、Excelファイルにデータを書き込み

Python で Excel ファイルにデータを書き込むには、新しい Excel ファイルを作成し、そこにデータを書き込みます。

Kiyoshi が以下に用意したカスタム関数を使用します。関数で使用されるパラメーターは次のとおりです。

  • input_detail: Excel ファイルに記録される各行に対応するサブリストを含む 2 次元リスト (リスト内のリスト) として Excel ファイルに書き込まれる内容
  • output_excel_path: データの保存に使用される新しい Excel ファイルのパス。
import openpyxl
def output_Excel(input_detail,output_excel_path):
#作成するExcelファイルの最大行数と列数を決定
row = len(input_detail)
column = len(input_detail[0])

#新しいワークブックを作成してアクティブ
wb = openpyxl.Workbook()
ws = wb.active

#for ループを使用して、input_detail のコンテンツを Excel ファイルに書き込み
for i in range(0,row):
for j in range(0,column):
v=input_detail[i][j]
ws.cell(column=j+1, row=i+1, value=v)

#Excelファイルを保存
wb.save(output_excel_path)

上記の関数を使用して記録内容を Excel ファイルに保存する必要がある場合は、ファイルに書き込む行の内容を含む 2 次元のリストを作成し、それを上記の関数に渡すだけです。例えば:

input_detail =[['Sản phẩm', 'Mã', 'Số lượng' , 'Giá tiền'],['Áo sơ mi', '1S25H', 1, 23000],['Quần bò', '3325H', 7, 50000],['Áo phông', '16G5H', 45, 70000]]
output_excel_path= './user.xlsx'
output_Excel(input_detail,output_excel_path)

その結果、次のように指定された 2 次元リストのコンテンツを含む新しいsample.xlsxのファイルが作成されます。

Pythonで新しいExcelファイルを作成し、Excelファイルにデータを書き込み

これは、Python を使用してデータベースにアクセスし((たとえば mysql.connector を使用)、そのデータベースに含まれるデータを抽出して、結果をExcel ファイルに保存する場合に特に便利です。次に、そのデータベースから 2 次元リストの形式でデータを取得し、上記の関数に渡すだけです。

また、Excelファイルに書き込む前のデータを取得する過程で、pprint()関数を使うことで、上記の2次元リストのデータをきれいにスマートに表示・確認することもできます。

Python で既存の Excel ファイルを開き、Excel ファイルにデータを書き込む

新規にExcelファイルを作成してデータを記録するほか、既存のExcelファイルを開いて、行、列、シートなどの追加や削除などの処理を行い、内容を変更することもできます.元のファイルを編集してコンテンツを保存することもできます.

Python で Excel ファイルにデータを書き込むには、まずその Excel ファイルを開いて読み取る必要があります。続行する前に、Python で Excel ファイルを読み取るの記事を参照してください。

それでは実際にやってみましょう。例えば以下のsample.xlsxがあります。
PythonでExcelファイルにデータを書き込む

上記の Excel ファイルを開いて、 Sheet1の内容全体を読んだとします。

import openpyxl
import pprint

wb = openpyxl.load_workbook('./user/sample.xlsx')
sheet = wb['Sheet1']

下のように、Python で Excel ファイルにデータを書き込む操作を実行します。

Excel セルの内容を編集するl | cell()メソッド

Python で Excel セルのコンテンツを編集するには、シート内のそのセルにアクセスし、セルの新しい値を置き換えます。

sheet['C1'] = 'abc'
sheet['D2'] = 14

cell() メソッドを使用して、編集するセルの位置を指定し、次のように新しい値に置き換えることもできます。

#sửa dữ liệu ô C1
sheet.cell(row=1, column=3, value='abc')

#sửa dữ liệu ô D2
sheet.cell(row=2, column=5, value=14)

上記の方法は両方とも、セル内のコンテンツを修正し、次のように同じ結果をもたらします。

pprint.pprint(list(sheet.values), width=40)
# [(None, 'A', 'abc', 'C', None),
# ('one', 11, 12, 13, 14),
# ('two', 21, 22, 23, None),
# ('three', 31, 32, 33, None)]

Excelファイルを編集すると、編集結果が画面に出力されることに注意してください。ただし、この結果を Excel ファイルに書き込んでいないため、Excel ファイル自体は変更されていません。

これらの変更を Python で Excel ファイルに記録して保存するには、この記事の最後を参照してください。

Excel セルにテキストを追加 | cell()メソッド

セルにコンテンツがない場合は、次のように上記の 2 つの方法で Python を使用して Excel のセルにコンテンツを追加することもできます。

#thêm dữ liệu ô E1
sheet.cell(row=1, column=3, value='E')

#thêm dữ liệu ô E2
sheet.cell(row=2, column=3, value=15)

その結果、E1とE2セルは次のようにデータが追加されます。

pprint.pprint(list(sheet.values), width=20)
# [(None, 'A', 'E', 'C'),
# ('one', 11, 15, 13),
# ('two', 21, 22, 23),
# ('three', 31, 32, 33)]

PythonでExcelセルを一括編集

次のカスタム関数を使用して、Python を使用して Excel セルを一括で追加または編集できます。

この関数では、編集するセルを含む行の内容を 2 次元リストとして宣言し、セルの編集を同時に開始する位置を指定します。

関数のstart_row, start_col引数は、この位置の行と列を指定するために使用されます。

def write_list_to_Excel(sheet, list_2d, start_row, start_col):
for y, row in enumerate(list_2d):
for x, cell in enumerate(row):
sheet.cell(row=start_row + y,
column=start_col + x,
value=list_2d[y][x])

次の 2 つの行の値を持つ 2 つの行を Excel ファイルに追加するとします。

       A    B   C  
....................
four 41 42 43
five 51 52 53

2 次元リストに追加する値を保存し、新しく作成した関数を使用して、A5次のように 5 行 1 列目の位置から Excel ファイルを書き込みます。

list_2d = [['four', 41, 42, 43], ['five', 51, 52, 53]]
write_list_to_Excel(sheet, list_2d, 5, 1)

その結果、2 次元リストの値が次のように Excel ファイルのセルに入力されます。

pprint.pprint(list(sheet.values), width=40)
# [(None, 'A', 'B', 'C', 'new'),
# ('one', 11.0, 12.0, 13.0, 14),
# ('two', 21.0, 22.0, 23.0, None),
# ('three', 31.0, 32.0, 33.0, None),
# ('four', 41, 42, 43, None),
# ('five', 51, 52, 53, None)]

PythonでExcelのシートを追加| create_sheet()

PythonでExcel にシートを追加するには、次の構文で Workbook クラスの create_sheet() メソッドを使用します。

wb.create_sheet ( 'sheet_name' )

そこで、sheet_nameはwbワークブックに追加するシート名です。

たとえば、次のようにSheet_newで名前を付けた新しいシートをwbワークブックに追加します。

wb = openpyxl.load_workbook('./user/sample.xlsx')
print(wb.sheetnames)
# ['Sheet1', 'Sheet2']

sheet_new = wb.create_sheet('Sheet_new')
print(wb.sheetnames)
# ['Sheet1', 'Sheet2' ,'Sheet_new']]

PythonでExcelシートをコピー | copy_worksheet()メソッド

PythonでExcel でシートをコピーするには、次の構文で Workbook クラスの copy_worksheet() メソッドを使用します。

wb.copy_worksheet( wb [ 'sheet_name' ] )

そこで、sheet_nameはwbワークブックにコピーするシート名です。

例えば:

wb = openpyxl.load_workbook('./user/sample.xlsx')
print(wb.sheetnames)
# ['Sheet1', 'Sheet2']

sheet_copy = wb.copy_worksheet(wb['Sheet1'])
print(wb.sheetnames)
# ['Sheet1', 'Sheet2', 'Sheet1 Copy']

Sheet1 Copyという名前の新しいシートが作成されていることがわかります。このシートの内容をチェックして、元のシートと同じかどうかを確認できます。

pprint.pprint(list(sheet_copy.values))
# [(None, 'A', 'B', 'C', 'new'),
# ('one', 11.0, 12.0, 13.0, 14),
# ('two', 21.0, 22.0, 23.0, None),
# ('three', 31.0, 32.0, 33.0, None),
# ('four', 41, 42, 43, None),
# ('five', 51, 52, 53, None)]

PythonでExcel シートを削除 | remove()メソッド

PythonでExcel でシートを削除するには、次の構文で Workbook クラスの remove() メソッドを使用します。

wb.remove ( wb [ 'remove_sheet_name' ] )

そこで、remove_sheet_nameはwbワークブックから削除するシート名です。

例えば

wb = openpyxl.load_workbook('./user/sample.xlsx')
print(wb.sheetnames)
# ['Sheet1', 'Sheet2']

wb.remove(wb['Sheet2'])

print(wb.sheetnames)
# ['Sheet1']

PythonでExcel シート名を編集 | title属性

PythonでExcel でシート名を編集するには、次の構文で Workbook クラスのtitle属性を使用します。

sheet.title = 'new_sheet_name'

そこで、new_sheet_nameは新しいシート名です。

たとえば、次のように名前Sheet1をnewsheetに変更します。

wb = openpyxl.load_workbook('./user/sample.xlsx')
print(wb.sheetnames)
# ['Sheet1', 'Sheet2']

sheet = wb['Sheet1']
sheet.title= "newsheet"
print(wb.sheetnames)
# ['Sheet1', 'newsheet']

PythonでExcel ファイル名を編集 | os.rename()

Python で Excel ファイル名を編集するには、os モジュールの rename() 関数を使用して、Python の他のファイル タイプと同じようにファイル名を編集します。

例えば:

os.rename('./user/sample.xlsx','./user/test.xlsx')

Python で Excel ファイルを保存する | save()メソッド

上記のメソッドを使用して Python で Excel ファイルにデータを書き込んだ後、次の構文で Workbook クラスの save() メソッドを使用して、これらの変更を Excel ファイルに保存する必要があります。

wb.save(file_path)

例えば:

wb.save('./user/sample.xlsx')

次のように Excel ファイルの新しいパスを指定して、ファイルを新しい名前で保存することもできます

wb.save('./user/test.xlsx')

Python でExcel ファイルを保存するプロセスが完了すると、Pythonで Excel ファイルに書き込んだ編集内容と変更内容が保存され、後で使用できるようになります。

まとめ

上記 Kiyoshi は、Python で Excel ファイルにデータを書き込む方法を案内しています。レッスンの内容をよりよく理解するために、今日の例を書き直す練習をしてください。

そして、次のレッスンで Python の知識についてさらに学びましょう。

URL Link

https://laptrinhcanban.com/ja/python/nhap-mon-lap-trinh-python/csv-excel-json-xml-pdf/ghi-du-lieu-vao-file-excel-trong-python/

この記事は役立つと思ったらいいね!とシェアをお願いします
">

ホーム  › >>

Profile
きよしです!笑

Author: Kiyoshi (Chis Thanh)

Kiyoshi was a former international student in Japan. After graduating from Toyama University in 2017, Kiyoshi is currently working as a BrSE in Tokyo, Japan.