Excel 스프레드 시트를 읽으려면 DocumentFormat.OpenXml
을 사용하고 있습니다.OpenXml Excel 스프레드 시트 도구에서 SharedStringTable의 값을 검색하는 성능을 어떻게 향상시킬 수 있습니까?
var returnValue = sharedStringTablePart.SharedStringTable.ChildElements.GetItem(parsedValue).InnerText;
난을 보장하기 위해 사전을 만들었습니다 : 나는 SharedStringTable
개체에서 셀 값을 조회하는 데 사용되는 코드를 사용하여 성능 병목이 (가 셀 값에 대한 조회 테이블의 일종 것 같다) 한 번만 값을 검색합니다.
if (dictionary.ContainsKey(parsedValue))
{
return dictionary[parsedValue];
}
var fetchedValue = sharedStringTablePart.SharedStringTable.ChildElements.GetItem(parsedValue).InnerText;
dictionary.Add(parsedValue, fetchedValue);
return fetchedValue;
따라서 성능 시간이 거의 50 % 나 줄었습니다. 그러나 내 측정 기준에 따르면 코드 라인이 SharedStringTable
객체의 값을 가져 와서 123,951 번 실행하는 데 여전히 208 초가 걸리는 것으로 나타났습니다. 이 작업을 최적화하는 다른 방법이 있습니까?
나는이 접근법을 정말 좋아합니다. LoadDictionary()에서 셀 값 (숫자 및 조회 값)이 사전 키에 정확히 매핑되도록하려면 어떻게해야합니까? sharedStringTablePart.SharedStringTable.ChildElements의 열거자는 안전한 순서로 0부터 숫자 순으로 반환한다는 가정입니까? –
당신이 좋아하는 것을 기쁘게 생각합니다. 네, 맞습니다. 순서대로 읽혀질 것입니다. 관심이 없다면, 당신이 나에게 묻지 않아도 얼마만큼 성능을 향상 시켰습니까? – petelids
엄청나게, 208 초에서 0.9 초. 이 팁을 공유해 주셔서 감사합니다. 감사합니다. –