実施していること
ExcelをPythonで自動化したいと思い、現在Pythonを勉強中です。
下記の作業を自動化したいと考えています。
![
①ファイル名:管理_202101-XXXX内にある表を、部門別にA、B、Cに分割
②分割したA、B、Cの表を別ファイルで保存する
・ファイル名:管理_202012-A
・ファイル名:管理_202012-B
・ファイル名:管理_202012-C
上記を実施するために、下記の通り考えています。
①ファイル名:管理_202101-XXXX内にある表をfor文で分類
②分類したものを、部門の名前及び月名を前月になるようなファイル名にしてExcel生成
③Excel内にある'XXXXX'(6行目までの文面)を生成したExcelに挿入
import pandas as pd import re import datetime from dateutil.relativedelta import relativedelta import_file_path = 'C:\Users\管理_202101-XXXX.xlsx' excel_sheet_name = 'Sheet1' export_file_path = 'C:\Users\作成データ' now = datetime.datetime.now() last_month = now - relativedelta(months=1) # 説明文(XXXXXXXX・・・)の6行をskiprowsで読み込まない df_order = pd.read_excel(import_file_path, skiprows=6, sheet_name=excel_sheet_name) # “部門(A、B、C)”で表を分類 division_name = df_order['部門'].unique() for i in division_name: df_order_division = df_order[df_order['部門'] == i] df_concat = pd.concat([df_order_division]) df_concat.to_excel(export_file_path+'\'+'管理_'+last_month.strftime('%Y%m')+'-'+i+'.xlsx') ・・・・・
困っていること
skiprowsで読み込まなかった6行を生成したExcelの文頭に挿入したいが、どのようにすればよいかわからない状況
解決方法として、
・skiprowsで読み込まなかった6行分だけのExcel(ファイル名:表題のみ.xlsx)をopenpyxlにより生成
・この“表題のみ”のExcelを上記で生成した各Excelに挿入すればよいのではないか、
と考えました。
コードを書きましたがうまくいかない状況です。
誠に申し訳ありませんが、アドバイスを頂ければ大変助かります。
宜しくお願い致します。
(実施していることの続き)
import_file_path_02 = export_file_path+'\'+'管理_'+last_month.strftime('%Y%m')+'-'+i+'.xlsx' #コピー先のエクセルを読み込む wb1 = openpyxl.load_workbook(import_file_path_02) ws1 = wb1['Sheet1'] #コピー元のエクセルを読み込む wb2 = openpyxl.load_workbook('C:\Users\表題のみ.xlsx') ws2 = wb2['管理'] #コピー先の1行目から15行挿入 ws1.insert_rows(1,15) #コピー元のコピー範囲を指定して貼り付け for i in range(1,23): for j in range(1,15): copy = ws2.cell(row=i,column=j).value ws1.cell(row=i,column=j,value=copy) wb1.save(import_file_path_02)
環境
Python 3.7 :: Anaconda custom (64-bit)
pandas 1.05
Windows10
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/25 23:27