【Python初心者入門】OpenPyXL等を使用し分割・複数のExcelファイルを1つに連結(結合)する

スポンサーリンク

【Python初心者入門】OpenPyXLなどを使い分割・複数のExcelファイルを1つに連結(結合)する

参考:https://www.youtube.com/watch?v=-5v7CuXm7Ns

■Python

今回のPythonのバージョンは、「3.8.2」を使用しています。

■分割されたExcelファイルを用意する

OpenPyXLなどを使いExcelファイルを1つに連結(結合)してみますので、まずは分割されたExcelファイルを用意します。

Googleスプレッドシートで、上記のような支店ごとの売上管理表を作って、「.xlsx」形式でローカル上にダウンロードします。

ダウンロードした「.xlsx」形式のファイルを複製し、「堺支店」、「寝屋川支店」、「大阪支店」、「南堀江支店」、「梅田支店」と支店ごとのファイルにします。

■分割された(複数)Excelファイルを1つに連結(結合)するプログラムを書く

■コード

import openpyxl
import pandas as pd
import glob 


#分割されたファイルを1つにまとめたファイルを書き出す場所
export_file_path = r'C:\Users\user\MyPandas'


#分割されたファイルが置かれている場所
import_folder_path = r'C:\Users\user\MyPandas\rawdate-test'


#ファイルを読み込む場所にあるxlsxファイルを取得
path = import_folder_path + '/' + '*.xlsx'


#ファイルの中にある「.xlsx」に一致するものを取得
file_path = glob.glob(path)


#Excelファイルを読み込む
df_concat=pd.DataFrame()


for i in file_path:
    df_read_excel=pd.read_excel(i)
    print(df_read_excel.head(3))

まずは、分割されたExcelファイルを、「C:\Users\user\MyPandas\rawdate-test」という場所(パス)に置きます。

「C:\Users\user\MyPandas\rawdate-test」という場所に置かれた「.xlsx」形式のファイルを取得、読み込みを行い、ちゃんと読み込んでいるか出力してみます。

■実行

今回のプログラムを、「openpyxl-test01.py」というファイル名で保存し、コマンドプロンプトから実行してみます。

実行してみると、分割されたファイルが置かれている場所(パス)のExcelファイルを取得し中身が読み込まれて、出力されていることを確認できました。

分割された(複数)Excelを1つに連結(結合)するconcat関数を使う

分割されたファイルが置かれている場所(パス)のExcelファイルを取得し中身が読み込まれて、出力されていることを確認できましたので、次に本題である分割されたExcelを1つに連結(結合)するプログラムを書いてきます。

■コード

import openpyxl
import pandas as pd
import glob 


#分割されたファイルを1つにまとめたファイルを書き出す場所
export_file_path = r'C:\Users\user\MyPandas'


#分割されたファイルが置かれている場所
import_folder_path = r'C:\Users\user\MyPandas\rawdate-test'


#ファイルを読み込む場所にあるxlsxファイルを取得
path = import_folder_path + '/' + '*.xlsx'


#ファイルの中にある「.xlsx」に一致するものを取得
file_path = glob.glob(path)


#Excelファイルを読み込む
df_concat=pd.DataFrame()


for i in file_path:
    df_read_excel=pd.read_excel(i)
    df_concat=pd.concat([df_read_excel,df_concat])


print(df_concat)

今回は、分割されたExcelファイルのデータの中身をそのままつなげるため、「pd.concat」というconcat関数を使います。concat関数を使うことで、1つに連結(結合)するが可能です。

■実行

concat関数を記述したプログラムを、「openpyxl-test01.py」というファイル名で保存し、コマンドプロンプトから実行してみます。

実行してみると、「堺支店」、「寝屋川支店」、「大阪支店」、「南堀江支店」、「梅田支店」と支店ごとの分割されたExcelファイルが1つに連結(結合)されていることが確認できました。

■1つに連結(結合)されたExcelファイルを書き出してみる。

支店ごとの分割されたExcelファイルが1つに連結(結合)されていることが確認できましたので、この連結(結合)されているものを、「.xlsx」形式で書き出してみます。

■コード

import openpyxl
import pandas as pd
import glob 


#分割されたファイルを1つにまとめたファイルを書き出す場所
export_file_path = r'C:\Users\user\MyPandas'


#分割されたファイルが置かれている場所
import_folder_path = r'C:\Users\user\MyPandas\rawdate-test'


#ファイルを読み込む場所にあるxlsxファイルを取得
path = import_folder_path + '/' + '*.xlsx'


#ファイルの中にある「.xlsx」に一致するものを取得
file_path = glob.glob(path)


#Excelファイルを読み込む
df_concat=pd.DataFrame()


for i in file_path:
    df_read_excel=pd.read_excel(i)
    df_concat=pd.concat([df_read_excel,df_concat])


#結合したものをExcelファイルで書き出す
df_concat.to_excel(export_file_path +'/'+'全店舗総合売上管理表.xlsx')

「to_excel」という記述で、Excelファイルを書き出す場所(パス)として指定した「C:\Users\user\MyPandas」に、「全店舗総合売上管理表.xlsx」というExcelファイルを書き出すプログラムです。

■実行

プログラムを、「openpyxl-test01.py」というファイル名で保存し、コマンドプロンプトから実行してみます。

実行してみると、何も表示されずに何も起こっていないように見えますが、Excelファイルを書き出す場所(パス)を確認してみます。

確認してみると、「全店舗総合売上管理表.xlsx」というExcelファイルを書き出されていることが確認できました。

Googleスプレッドシートで「全店舗総合売上管理表.xlsx」の中身を確認してみると、「堺支店」、「寝屋川支店」、「大阪支店」、「南堀江支店」、「梅田支店」のデータが1つに連結(結合)されていることが確認できました。

コメント

タイトルとURLをコピーしました