2016-08-01 12 views
4

해결 방법을 알고있는 사람이 셀의 새 줄을 처리하지 못하는 OpenOffice Calc 문제를 해결 했습니까?openoffice calc - newline이 셀에 중복 값을 초래 함 (팬더/openpyxl)

나는 판다를 통해 openpyxl을 사용하여 Excel 통합 문서를 동적으로 생성하는 python 스크립트를 가지고 있습니다.

스크립트는 정상적으로 작동하지만 개행을 포함하는 OpenOffice에서 셀을 볼 때 모든 값이 여러 번 복제됩니다. Microsoft Excel Viewer를 사용하여 동일한 파일을 열면 모든 것이 올바르게 표시되고 새 줄 이외의 문자 (예 : 쉼표, # 등)를 사용하면 둘 다 잘 표시됩니다.

나는 매크로를 사용하여 임의의 문자를 대체하고 대체 할 수있는 해결 방법을 가지고 있지만 가능한 경우 프로세스가 완전히 자동화되어야하므로 가능한 피하는 것이 좋습니다. 또한 파일이 다른 내부 도구로 처리되기 때문에 이러한 셀을 새 라인으로 처리해야하고 문자를 변경할 수 없습니다.

나는 또한 chr (10) 및/또는 chr (13)을 사용하여 시도했지만 이전의 경우에는 예상대로 출력에서 ​​'\ n'으로 바뀝니다.

Openoffice Cells

: 요소 데이터로 어떻게됩니까

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 

OpenPixl 라이브러리로 전달되고 OpenOffice에서 열리는 것입니다.

감사

+0

운영 체제 및 Office 버전은 무엇입니까? –

+0

WIndows 10, 그냥 엑셀 뷰어하지만 Excel에서 제대로 작동하지 않습니다. OpenOffice (4.1.2) – GuHuka

답변

2

코드는 윈도우에서 오픈 오피스 4.1.2을 사용하여 나를 위해 잘 작동 :

enter image description here

스크린 샷, 나는 두 번째 행 하단을 두 번 클릭하여 펼칩니다. 그 전에는 단지 element3에 빨간색 삼각형이 표시되었습니다. 그러나 그것은 당신이 묘사 한 행동과는 다른 것처럼 보입니다.

편집 :

좋아, 내가 지금이 문제를 확인할 수 있습니다.당신이 말했듯이, 18 항목의 신비한 숫자로 발생합니다. file.xlsx의 압축을 풀면 XML 파일에 큰 차이가 없으므로 OpenOffice의 버그처럼 보입니다.

은 또한 직접 XML 파일을 CR 및 LF를 추가했지만, 이것은 단지 결과 : 세 가지 솔루션을 우리에게 잎

enter image description here

: 대신

  1. 사용 LibreOffice와있는 이 문제가 없습니다 (테스트 된 LO 5.1.0.3).
  2. Report the bug 새 버전을 기다리는 중입니다.
  3. MS Office의 기본 형식 대신 OpenOffice에서 선호하는 .ods 형식을 사용하십시오.
+1

죄송합니다. 중요한 데이터를 제거 할 때 코드가 지나치게 단순화되었습니다. 업데이트 된 원본 게시물). 단일 항목의 경우 잘 작동하는 것으로 보이지만 17 개 이상의 항목을 처리 할 때 문제가 발생합니다. 원본 스크립트는 100 개의 항목 목록을 생성합니다. – GuHuka

+0

이 확인되었습니다. LibreOffice 5.2.0.4가 설치되었으며 코드는 3000 개 이상의 항목으로 성공적으로 작업했습니다. – GuHuka

0

내가 Excel에서 예상되는 출력을 얻을 최근 팬더와 XlsxWriter와 예제를 실행 :이 경우 Excel에서 자동으로 행의 높이를 조정하고,

enter image description here

그러나 2를 보상합니다. 그건 오픈 오피스에서 일어나지 않을 수도 있습니다.

하는 경우에는 다음과 같이 명시 적으로 설정할 수 있습니다

worksheet.set_row(1, 45) 
+0

OpenOffice Calc에서만 볼 수있는 문제는 Excel에 없습니다. – GuHuka