2010-02-12 5 views
1

데이터 집합이나 데이터 테이블에서 Excel로 데이터를 쓰는 방법에 대한 많은 질문이 있지만 모두 새로운 Excel 엑셀 통합 문서로 간주됩니다. 다양한 서식, 수식 및 차트가 포함 된 여러 장이 포함 된 특별 Excel 파일이 있습니다. 난 그냥 일부 시트의 적절한 부분 위에 데이터를 배치하고 나머지 처리하는 데 능숙하게해야합니다.엑셀 템플릿 파일에 대한 데이터 집합/데이터 테이블 .net

그래서 특정 시트에서 특정 범위 (행 수에 따라 다름)의 기존 엑셀 파일에 데이터를 삽입하는 방법이 필요합니다. 현재 필자는 COM interop을 사용하여 성능 악몽이며 변경해야하는 모든 것을 작성합니다. 그래서 이것을 달성하는 가장 좋은 방법은 무엇입니까?

추가 정보 : 사용자가 데이터 요청을 제출할 수있게 해주는 간단한 mvc 앱이 있습니다. 이 콘솔 앱을 별도의 프로세스로 시작하여 데이터를 가져오고 Excel 파일을 작성합니다. 먼저 10-15 초가 걸린 데이터를 얻은 다음 데이터를 Excel에 씁니다. 항상 사용하는 것으로 보이는 값을 셀에 실제로 쓰는 것입니다. excel 파일의 수식이 쓰기에 영향을 미치는지 여부는 모르겠지만,하지만 그게 내가 피하려고하는 것입니다.

업데이트 : 수식이 밝혀 짐에 따라 쓰기 속도가 가장 크게 떨어졌습니다. Excel 응용 프로그램 클래스의 Calculation 속성을 XlCalculation.xlCalculationManual로 설정하면 훨씬 빠르게 실행됩니다! 이것은 내 질문에 대한 적절한 대답이 아니지만 그것은 효과가 있습니다.

이것을 지적한 shahkalpesh에게 감사하고, Cj!

, 감사합니다 제프 내가 같은 일을 경험했던

+0

성능 저하로 인해 셀을 쓰는 동안 공식 및 차트 업데이트가 있습니까? ScreenUpdating? – shahkalpesh

+0

@shahkalpesh : 나는 수식을 쓰지 않고 데이터 만 쓰고 있지만, 일반적으로 탁월한 글쓰기는 속도가 느립니다. 나중에 사용자에게 이메일로 보내기 때문에 화면 업데이트가 없습니다. 나는 그것을 명확하게하는 것을 돕기 위해 추가했다. 감사. –

+0

@ Jeff : 사용자가 입력 한 값에 따라 복잡한 수식 및/또는 차트가 표시되는 경우가 있습니다. 그런 다음 시간이 걸리는 Excel 통합 문서 UI를 계산하고 새로 고칩니다. 귀하의 경우에 문제가 될 수 있습니까? 문제의 일부를 해결하려면 VB6 기반 구성 요소 또는 실행 파일에 코드를 작성하고 Excel에서 처리하는 작업을 수행하십시오. – shahkalpesh

답변

1

. COM Interop는 고통 스러울 수 있습니다 ... 전체 상황을 알 수는 없지만 단순히 데이터 테이블을 XML로 내보낼 수 있습니다. (Datatable.WriteXML) 그런 다음 VBA를 사용하여 데이터를 빨아 들여서 구문 분석을 수행하십시오. 모든 .NET을 사용하는 것이 더 깔끔하지만 VBA가 빠르면 빠를 것입니다.

그 외에도 무료 Excel 라이브러리가있어 .NET 용 Excel에서 작업하는 것을 단순화했습니다. 나는 성능의 유형이 무엇인지 모르겠다 .... 또 다른 옵션은 VSTO (VSTO Development Home)로, 당신이하고 싶은 것에 따라 잘 맞을 수도 있습니다. 행운을 빕니다!

업데이트 : - COM 상호 운용성에 의지하지 않고 수식을 고정하고 적절하게 포맷, 기존 통합 문서에 DataTable을 삽입하게됩니다 File Helper

0

SpreadsheetGear for .NET : 여기 당신이 내가 찾던 것입니다 이동합니다.

형식 및 수식이 포함 된 Excel 통합 문서 Data Sheet Excel 샘플 (this page)은 C# 및 VB 소스를 사용하는 라이브 ASP.NET 예제입니다.

더 많은 라이브 ASP.NET 샘플 here을보고 직접 시도해 보려면 here 무료 평가판을 다운로드하십시오.

면책 조항 : 나는하는 SpreadsheetGear LLC는 VBA에서

0

ADO를 사용 것 소유;

sh.Range("A2").CopyFromRecordset rs, 65536 

이는 레코드 세트를 통한 Whiling보다 훨씬 빠릅니다. 비슷한 VSTO 방법이 있습니까?

관련 문제