2016-08-01 25 views
4

誰かが回避策を知っていますか?OpenOffice Calcがセルの新しい行を正しく処理できないという問題はありますか?openoffice calc - 改行によってセル(pandas/openpyxl)の重複値が発生する

私は、pandas経由でopenpyxlを使ってExcelワークブックを動的に生成しているpythonスクリプトを持っています。

スクリプトは正常に機能しますが、改行を含むOpenOfficeのセルを表示すると、すべての値が複数回複製されます。 Microsoft Excel Viewerを使用して同じファイルを開くと、すべてが正しく表示されます。新しい行(カンマ、#など)以外の文字を使用すると、両方ともうまく表示されます。

マクロを使用してランダムな文字を置き換えることはできますが、プロセスを実際に完全に自動化する必要があるため、可能な場合は避けてください。また、ファイルが別の内部ツールで処理されるため、これらのセルを新しい行で処理する必要があり、文字を変更することはできません。

私はchr(10)やchr(13)を使ってみましたが、前者の場合、期待どおり出力で '\ n'で置き換えられます。

私が現在使用しているコードは次のようになります

Openoffice Cells

:どのような要素データで発生すると、それはのようなものとしてOpenOfficeのCalcのセルに表示されていることである

test_list = [] 
for x in range(1,18): 
    test_list.append([ 
     "value1", 
     "\n".join(['element1', 'element2', 'element3']), 
     "value3" 
    ]) 

data_df = pd.DataFrame(test_list) 

fn = r'/path/to/excel/file.xlsx' 

writer = pd.ExcelWriter(fn, engine='xlsxwriter') 
data_df.to_excel(writer, sheet_name='Data', index=False, header=0) 
workbook = writer.book 
worksheet = writer.sheets['Data'] 
worksheet.set_column('A:ZZ',50, 
        workbook.add_format({'text_wrap': True})) 
writer.save() 

奇妙なことに、最後の項目は正しいようです

リストまたはDataFrame.head()経由で表示されたデータと同じデータが表示されます。

pprint(test_list) 
[['value1', 'element1\nelement2\nelement3', 'value3'], 
['value1', 'element1\nelement2\nelement3', 'value3'], 
['value1', 'element1\nelement2\nelement3', 'value3'], 
['value1', 'element1\nelement2\nelement3', 'value3'], 
['value1', 'element1\nelement2\nelement3', 'value3'], 
['value1', 'element1\nelement2\nelement3', 'value3'], 
... 
['value1', 'element1\nelement2\nelement3', 'value3']] 

data_df.head(18): 
     0        1  2 
0 value1 element1\nelement2\nelement3 value3 
1 value1 element1\nelement2\nelement3 value3 
2 value1 element1\nelement2\nelement3 value3 
... 
15 value1 element1\nelement2\nelement3 value3 
16 value1 element1\nelement2\nelement3 value3 

openpyxlライブラリに渡され、OpenOfficeで表示されたときです。

おかげ

+0

お使いのオペレーティングシステムとOfficeのバージョンは? –

+0

WIndows 10、Excel Viewerだけですが、Excelで正常に機能しています。OpenOffice(4.1.2) – GuHuka

答えて

2

enter image description here

このスクリーンショットのために、私は2行目の下部をダブルクリックして展開します。それ以前は、element3に赤い三角形が表示されていました。しかし、それはあなたが説明した行動とは違うようです。

EDIT

[OK]を、私は今、問題を確認することができます。あなたが言ったように、それは18項目の不思議な数で発生します。 file.xlsxを解凍して表示されるXMLファイルに大きな違いはないので、OpenOfficeのバグのように見えます。

は、私はまた、直接XMLファイルにCRとLFを追加しようとしたが、これはただの結果:3つの解決策を私たちに残し

enter image description here

:、代わりに

  1. 利用のLibreOfficeましたこの問題はありません(LO 5.1.0.3でテスト済み)。
  2. Report the bug新しいバージョンを待つ。
  3. MS Officeの優先フォーマットではなく、OpenOfficeの推奨.odsフォーマットを使用してください。
+1

申し訳ありませんが、機密データを削除すると、更新された元の投稿)。 1つのアイテムについてはうまくいくようですが、17を超えるアイテムを処理すると、それが間違ってしまうことがあります。元のスクリプトは、100件のアイテムのリストを作成しています。 – GuHuka

+0

が確認されました。 LibreOffice 5.2.0.4をインストールし、コードは3000以上のアイテムで正常に機能しました。 – GuHuka

0

私はExcelで期待される出力を取得し、最近のパンダとXlsxWriterとあなたの例を実行します。この場合、Excelが自動的に行の高さを調整され、

enter image description here

しかし、 2を補正する。それはOpenOfficeでは起こっていないかもしれません。

あなたはこのように明示的に設定することができた場合:コードは、Windows上でのOpenOffice 4.1.2を使用して私のためにうまく働いた

worksheet.set_row(1, 45) 
+0

問題はExcelではなく、OpenOffice Calcでのみ表示されます – GuHuka

関連する問題