2012-03-16 2 views
0

필자는 Microsoft Office Excel의 수식이있는 셀을 직렬화하여 Office Open XML 형식 (특히 SpreadsheetML)으로 저장할 때 계산 된 값을 포함 할 수 있음을 이해합니다. 이것은 다른 유형의 종속성과 다른 셀 (차트, 피벗 테이블 등)의 값 기능에 가장 많이 적용됩니다. 가장 가능성이 높습니다.하지만이 XML 문서 (SpreadsheetML)를 외부 도구로 처리 할 때 MS에서 제공하는 .Net 구성 요소 나 유사한 API는 사용하지 않지만 직접 XML을 조작하면 수정할 때 문제가 발생합니다. 워크 시트 중 하나의 일부 내용 Excel은 수식이 포함 된 셀에서 마지막으로 생성 된 값을 계속 사용합니다. 따라서 사용자가 생성 된 스프레드 시트를 열면 수정 된 데이터가 표시되지만 계산 된 필드는 모두 구식입니다.SpreadsheetML에서 문서를 열 때 Excel에서 수식 (및 기타 종속성)을 다시 계산하도록하는 방법이 있습니까?

http://openxmldeveloper.org/discussions/formats/f/14/p/1561/4164.aspx

이 그것을 계산 세포와 개체 (차트, 등의 모든 종류에 적용 특히 정말 바람직한 해결책이 아니다 : 이제 인터넷에서 내가 찾을 수있는 유일한 것은 (요즘)이이었다) 이는 모든 워크 시트의 구조를 정확히 모르는 경우 일부 SpreadsheetML 프로세서를 부분적으로 다시 구현한다는 것을 의미합니다.

Excel에서 옵션을 선택하거나 SpreadsheetML 구성 중 하나에서 구성이 강제로 재 계산되거나 더러운 셀을 표시하기를 바랍니다. 그러나 아직 찾을 수 없습니다.

스크립팅이 도움이 될 것이라는 가정이 있지만 SpreadsheetML 워크 시트에 스크립트를 포함하는 방법을 잘 모르겠으므로이 분야에 대한 지식이 부족해도 성공적인 결과를 얻지 못했습니다. 재 계산을 트리거하는 방법과 열린 이벤트 리스너를 추가하는 방법에 대한 예제가 꽤 많았지 만.

답변

0

F9 키를 눌러 열려있는 모든 통합 문서 Excel Recalculation

+0

사용자 개입없이 자동으로 수행해야합니다 (사용자가 열지는 것을 제외하고). –

0

아마 통합 문서에 대한 계산 모드가 수동으로 설정지고 다시 계산합니다. 당신이 코드에서 null로 설정하여 통합 문서를 열 때 자동으로이 모드를 강제로 다음

public void SetAutomaticCalculationMode(WorkbookPart workbookPart1) 
    { 
     Workbook workbook1 = workbookPart1.Workbook; 

     CalculationProperties calculationProperties1=workbook1.GetFirstChild<CalculationProperties>(); 
     calculationProperties1.CalculationMode = null; 
    } 

엑셀 2007의 옵션 클라이언트에서 보듯이 자동 계산 모드에 해당됩니다 enter image description here

1

가장 쉬운 방법은 셀에서 계산 된 값을 제거하는 것입니다 (사용자가 제공 한 링크에 명시되어 있음).

워크 시트의 정확한 구조를 알 필요는 없습니다. worksheets/sheet1.xml에서 <v>#VALUE!</v>의 모든 어커런스를 제거하면 (다른 기능에 영향을 미치지 않도록)

+1

이 답변은 1000 upvotes 자격이 – Telcontar

관련 문제