2016-03-20 36 views
1

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}}) 
+0

サンプルのExcelファイル(どこかにアップロードしてここにリンクを張るかもしれません)と 'disq_df'データフレームのサンプルデータ – MaxU

+0

を付け加えれば助けがはるかに簡単です。それを見ていただきありがとうございます。 – Dric512

+0

あなたのコードはうまく動作します。新しいシートが作成されます。 'args.sheet'に既存のシート名を指定していないことと、それが上書きされていることが確かですか? PS MS Excel 2010はあなたのExcelファイルについて文句を言っています:「読めないコンテンツが見つかりました...あなたは回復しますか?」 – MaxU

答えて

1

($は枕をインストールPIP)枕をインストールする必要があります。 Use openpyxl to edit a Excel2007 file (.xlsx) without changing its own styles?

あなたにはhow to use win32comを表示するリンクがあります。

また、いくつかの基本操作については、xlwingsを試すこともできます。私は彼らが両方あなたが残念なことにExcelをインストールする必要があると信じています。

+0

Excelがインストールされておらず、それに依存したくないので、実際には私にとってはうまくいきません。しかし、私は確かに良い答えがあるので、私はあなたの答えを受け入れる必要があると思います... – Dric512

+0

ええ、私は良い解決策があったと思います。私は数ヶ月前に良いものを探して、見つけられませんでした。唯一の2つの選択肢は、元のデータを読み込んで再作成した後にopenpyxlとxcelwriterが行う元のものを上書きしているようです。または、xlwingsとwin32comが行う編集を行うためにExcelとインターフェイスするが、Excelをインストールする必要がある。理論的には、openpyxlは書式設定とチャートの読み込みを拡張することができます。 – tvashtar

0

本によると:https://openpyxl.readthedocs.org/en/2.3.3/#installationあなたもOpenpyxlが簡単にスタイルとグラフィックスを扱うことができない

+0

私のシステムに枕が設置されています(PILライブラリが利用可能です)。これは、画像を扱うためだけに必要なようです。 – Dric512

関連する問題