Pandasで既存のExcelファイルを更新しようとしています。生のデータが含まれているピボットテーブルを持つpandasでexcelファイルを更新する
- シート:
このファイルには、複数のシートを持っています。これは、Pandasからエクスポートしたいデータです
- ピボットテーブルを含む生データを使用する複数のシート。
disq_df = pd.DataFrame(disqualifications) writer = pd.ExcelWriter(args.output, engine='openpyxl') if os.path.exists(args.output): f, ext = os.path.splitext(args.output) shutil.copyfile(args.output, f + "-saved" + ext) writer.book = load_workbook(args.output) writer.sheets = dict((ws.title, ws) for ws in writer.book.worksheets) disq_df.to_excel(writer, sheet_name=args.sheet) writer.save()
これは、主にピボットテーブルことを除いて、(最初のシートが変更された)正常に動作します:私はExcelファイルの最初のシートを更新するが、他のシートを維持するために、このコードを使用し
他のシートでは実際にスタンダードセルです。私はまた、いくつかのシートにグラフィックスを貼り付けました。
これらのシートを完全に変更しないでください。またはそれはopenpyxl
の制限ですか?
これは、シートの抽出物である:https://www.dropbox.com/s/dd3jhiif93knh26/Disqualifications.xlsx?dl=0である。
対応disq_df
データフレームは、ちょうどdictsからビルドです:
disq_df = pd.DataFrame({'Année naissance': {0: 2005, 1: 2006},
'Catégorie': {0: 'Poussin', 1: 'Poussin'},
'Club': {0: "CERCLE NAGEURS D'ANTIBES", 1: "CERCLE NAGEURS D'ANTIBES"},
'Compétition': {0: 'Natathlon poussins N° 2', 1: 'Natathlon poussins N° 2'},
'Date': {0: '2016-02-27 15:17:00', 1: '2016-02-27 15:49:50'},
'Disqualification': {0: 'DSQ Vi', 1: 'DSQ Ni'},
'Disqualification (libellé)': {0: 'Disqualifié pour Virage incorrect',
1: 'Disqualifié pour Nage incorrecte'},
'Ligne': {0: 2, 1: 1},
'Nage': {0: 'Nage Libre', 1: 'Dos'},
'Nage (Complet)': {0: '400 Nage Libre Messieurs', 1: '50 Dos Dames'},
'Niveau': {0: 'Compétitions Départementales',
1: 'Compétitions Départementales'},
'Sexe': {0: 'M', 1: 'F'},
'Série': {0: 1, 1: 3}})
サンプルのExcelファイル(どこかにアップロードしてここにリンクを張るかもしれません)と 'disq_df'データフレームのサンプルデータ – MaxU
を付け加えれば助けがはるかに簡単です。それを見ていただきありがとうございます。 – Dric512
あなたのコードはうまく動作します。新しいシートが作成されます。 'args.sheet'に既存のシート名を指定していないことと、それが上書きされていることが確かですか? PS MS Excel 2010はあなたのExcelファイルについて文句を言っています:「読めないコンテンツが見つかりました...あなたは回復しますか?」 – MaxU