2012-01-23 8 views
0

저는 pyuno를 사용하여 Excel 스프레드 시트 (Linux에서 실행)를 읽습니다. 많은 셀에는 분명히 사용할 수없는 추가 기능을 나타내는 수식이 있습니다. 그러나 셀 값은 내가 원하는 것입니다.uno (openoffice api)를 사용하여 재 계산없이 스프레드 시트를 엽니 다.

하지만 시트를로드하고 읽을 때 해당 수식이 평가되고있는 것으로 보입니다. 따라서 값이 오류로 덮어 쓰여지고있는 것 같습니다.

내가 일한 어느 것도 몇 가지 시도했습니다

  • 세트 플래그 AutomaticCalculation = 거짓, MacroExecutionMode = NEVER_EXECUTE 통화에서
  • 전화 document.enableAutomaticCalculation (거짓)에을 desktop.loadComponentFromURL하기를 로드 된 문서

어떤 제안이 있습니까?

+0

실제로 이러한 값이 저장되어 있습니까? 그렇지 않은 경우이 작업을 수행 할 방법이 없습니다. – Marcin

답변

0

양식이 문제가 아닌 경우 수식이 아닌 값만있는 스프레드 시트 복사본을 처리하여 문제를 피할 수 있습니다.

이 작업을 신속하게 수행하려면 전체 시트 내용, 복사, 특수 붙여 넣기를 선택하십시오. 그런 다음 "가치"를 제외한 모든 것을 제거하십시오. 새 파일에 저장하십시오 (원본 파일을 덮어 쓰지 않도록하십시오. 모든 공식이 손실됩니다!). 스크립트는이 파일을 처리 할 수 ​​있어야합니다.

프로그래밍 방식으로 수행해야하는 방법이 있기 때문에 이것은 추한 솔루션입니다.

+0

Simpler가 Excel을 열었을 때 Calc 모드를 수동으로 설정하고 스프레드 시트를로드 한 다음 다시 저장합니다. 이제 Calc 모드가 수동으로 설정되고 OO는이를로드 할 때이를 존중합니다. 그러나 이것은 탁월함에 독립적 인 OO 사용의 목적을 무효화합니다. 내가이 정도까지 엑셀을 사용한다면 나는 모든 방법으로 나아갈 수 있으며 OO를 전혀 사용하지 않을 수도 있습니다. –

0

Calc는 문서를로드 한 후 캐시 된 결과 사용을 아직 지원하지 않습니다. Libreoffice Calc는 이제 xls 문서에 대해 캐시 된 결과를 사용합니다. 결과도 ods에 저장되지만 문서를로드하는 동안 무시되며 수식 결과는 저장된 수식을 컴파일하고 해석하여 평가됩니다.

ods 및 xlsx에도이 옵션을 추가 할 계획이 있지만 파일에 잘못된 결과를 기록하는 많은 ods 생성자가 있습니다. 그래서 지금까지 유일한 해결책은 문서의 두 번째 버전을 결과를 저장하거나 calc 내에 구현하는 것입니다.

+0

이 정보를 제공해 주셔서 감사합니다. 그냥 명확히하기 위해서 : Libreoffice Calc는 xlsx에 저장된 값을 사용하지만 xlsx에는 사용하지 않습니다. 그렇다면 그것은 실행 가능한 솔루션이 아닙니다. 파일에 잘못된 결과가 나타납니다. 기존 결과를 다시 계산하거나 사용할지 여부를 사용자에게 알려주지 않으시겠습니까? MS가 일반적으로 사용자보다 더 잘 알고있는 아이러니 컬이지만,이 경우에는 사용자에게 옵션을 제공합니다. –

+0

아무도 알 때까지 이것을 구현하지 않았기 때문입니다. XLSX의 경우 까다로워 질 수 있지만 ODS의 경우 계획대로 진행되고 곧 구현 될 예정입니다. – moggi

+0

여전히 이해가 안되나요? 사용자에게 선택권을주지 않으시겠습니까? 분명히 개발자는 xlsx가 "좋은"사용자인지 여부를 사용자보다 잘 알고 있다고 생각하며 판단을 시행하면 사용자가 선택을 할 수 없게됩니다. 구현은 간단해야만합니다. 다시 계산하지 마세요. –