2016-11-14 2 views
0

指定された列スタイルを持つ既存の.xlsxファイルがあるとします。最小の例として、空のsample.xlsxファイルを作成し、列Aをクリックすると、数字スタイルがPercentに設定されます(デフォルトのGeneralとは対照的に)。openpyxlの新しいセルの列のスタイルを使用

次に、プリントの出力がCell format is Generalある次のコード

import openpyxl as pyxl  
import math 

sample = 'sample.xlsx' 
new = 'sample_new.xlsx' 

wb = pyxl.load_workbook(sample) 
ws = wb.active 

ws['A1'] = math.pi 
print 'Cell format is %s' % ws['A1'].number_format 

wb.save(new) 

を実行します。 sample_new.xlsxがに開かれた場合、A1セルの内容は実際に3.1415926であり、セルスタイルはGeneralです。興味深いことに、LibreOffice Calcで開いた場合、セルは希望通りに表示されます314.16%とセルスタイルはPercentと表示されます。

、しかし、元のsample.xlsxファイルのいずれかで直接細胞A1のプロパティを設定し、ExcelLibreOfficeの両方で期待どおりではない全体A -columnで、フォーマットは、動作する場合、コードが印刷Cell format is Percentつつ。

実際には、元の列の書式設定(ファイルごとに異なる可能性があります)を維持して、既存の.xlsxファイルに追加する必要があります。どのように達成するのですか?

私はopenpyxlの2.4.0バージョンを使用しています。

答えて

0

すべてのセルスタイルを手動で設定する必要があります。仕様の列と行のスタイルは実際に期待通りには一致しません。彼らは新しい細胞を作るときに何をすべきかについてのアプリケーションの約束です。いろいろな理由がありますが、スピードが主なものです。なぜopenpyxlでこれをしないのですか?

+0

私はそれを動的に行うことはできますか?私はあらかじめ列のフォーマットを知っていませんが、与えられた '.xlsx'ファイルで指定されています。 openpyxl内でカラムフォーマットを取得できますか? –

+0

また、 'LibreOffice'が異なった(そして望ましい)書式を示す理由は何ですか? –

+0

はい、ブック内の関連する「ColumnDimension」を検索できます。 LOとMS Excelは、使用との対話が重要なアプリケーションであり、openpyxlはファイル形式ライブラリです。私たちは将来、ある時点で機能を再訪するかもしれませんが、現時点では事態を遅らせることができる反パターンです。私はむしろできるだけ速く走っていました。 –

関連する問題