2016-07-14 36 views
0

私はpython-docxを使ってPandas DataFrameをWordテーブルに出力しています。約一年前、私は時間で働いていたそのテーブルを構築するためにこのコードを書いた:Rptは、テンプレートから文書であるPython-docx形式のフォーマット

table = Rpt.add_table(rows=1, cols=(df.shape[1]+1)) 
table.style = 'LightShading-Accent2' 

。今、エラーが表示されます:

KeyError: "no style with name 'LightShading-Accent2'" 

スタイルの定義についてはどうすればよいですか。新しいバージョンのpython-docxで命名規則が変更されましたか?

答えて

1

ありがとうございましたが、それは申し訳ありませんが、APIの長期的な決定は適切でした。

"ライトシェーディング - アクセント2"を代わりに使用してみてください。 Wordユーザーインターフェイス(UI)に表示されるのと同じ名前にする必要があります。することができます、あなたは少しそれを絞り込むしたい場合は、唯一の表スタイルに言う

from docx import Document 

document = Document() 
styles = document.styles 
for style in styles: 
    print "'%s' -- %s" % (style.name, style.type) 

:あなたはまだそれを得ることができない場合、あなたはこのようなもので、すべてのスタイルの名前を列挙することができます

これを追加してください:

from docx.enum.style import WD_STYLE_TYPE 

styles = [s for s in document.styles if s.type == WD_STYLE_TYPE.TABLE] 
for style in styles: 
    print(style.name) 

印刷された名前はあなたに正確なスペルを与えます。

+0

私はまだ同じエラーが表示されます:KeyError: "名前が付いていないスタイル"ライトシェーディング - アクセント2 '"。 Python 3.5.1でのバージョン0.8.5の使用 –

+0

私が言及したようにスタイル名を列挙したときにそのリストのスタイルを見つけましたか? – scanny

+0

私はしませんでした - 2つ目のスニペットは、 'Normal Table'と 'Table Grid'の2つのスタイルしか持っていませんでした。私はテンプレートをチェックし、通常のWordのデフォルトテーブルはすべて利用可能でした。 –

関連する問題