2009-12-30 3 views
1

큰 엑셀 파일을 반 밀론 레코드 (엑셀 2007 .xlsx 파일)로 열어야하고, SQL 서버로 마이그레이션해야합니다. oledbconnection을 사용하십시오. 그러나 연결을 열려고하면 5 분 이상 걸리고 그 후에 System.OutMemoryExcepion이 나타납니다. 이 연결은 메모리에있는 모든 파일을 열려고 시도합니다. 어떻게 행을 읽을 수 있습니까? 나는 비주얼 넷 2005 C#C# OledbConnection System.OutOfMemoryException에 의해 큰 Excel 파일 (150MB)을 엽니 다.

(의견의 정보를 기반으로)
string archivoExcel="c:\largeExcel.xlsx" 
string conneStringInraSIS = "Provider=Microsoft.ACE.OLEDB.12.0;" + 
            "Data Source=" + archivoExcel + ";" + 
            "Extended Properties='Excel 12.0;HDR=YES;'"; 


OleDbConnection connexcel = new OleDbConnection(conneStringInraSIS); 
connexcel.Open();   
+0

150MB 또는 250MB입니까? – SLaks

+1

문자열을 수동으로 연결하는 대신'OleDbConnectionStringBuilder'를 사용하여 연결 문자열을 만들어야합니다. 그렇지 않으면 파일 이름에'''가있을 경우 실패합니다. – SLaks

+1

파일에 무엇이 있습니까? 대신 CSV 형식으로 저장할 수 있습니까? 또한 2007 Excel은 압축 된 XML 파일 일뿐입니다. 한 번에 1,000 줄을 읽는 텍스트 리더로 직접 조작 할 수 있습니다. –

답변

0

새 응답 함께 일하고 : VSTO에

봐. 관리자가 리본 단추를 클릭하여 SQL Server에 데이터를 업로드 한 다음 SQL Server에서 정보를 검색 할 수있게하는 추가 기능을 만들었습니다 (Excel에서 고유 한 파일을 처리 할 수있게되어 정확히 어떻게 작동하는지). 여기

는 시작할 수 있어야 링크입니다 : MSDN Code Sample

을 당신은 VSTO here 다운로드 할 수 있습니다.

+0

고마워요.하지만 할 수있는 논리가 있습니다. 무엇을해야할지 모르겠다는 Excel 파일을 업데이트해야합니다. – David

+0

어떤 종류의 비즈니스 로직입니까? 파일을 업데이트해야한다는 것은 무엇을 의미합니까? - 시도하는 내용에 따라 SSIS –

+0

에서 가능할 수도 있습니다. 원하는 경우 xlsx 파일을 csv 파일로 변환 할 수 있습니다. 그런 다음이 링크를 사용하여 csv 파일을 효율적으로로드하십시오. http://www.codeproject.com/KB/database/CsvReader.aspx –

1

우선 순위 1은 xlsx 스프레드 시트에서 데이터를 가져와야합니다. 일단 이것이 발생하면 비즈니스 로직을 적용하십시오. CSV를 시트에서 내보내고 처리합니다.

+0

을 검토 할 것이다.이 프로그램은 엑셀 파일이 많은 관리자를 위해 다른 사람들로부터이 파일을 얻는다. 그는 2 가지를 원한다. 1. SQL 서버 데이터베이스의 모든 파일을 업로드하고 보고서를 얻는다. 2. -이 엑셀 파일 (그가 선택한 시트와 필드)을 일부 데이터베이스 정보로 업데이트하십시오. – David

0

일부 의견은 Excel 파일을 CSV로 내보내고 CSV 파일을 한 줄씩 파싱 할 것을 제안했지만 사용자의 문제를 해결할 수없는 것으로 보입니다.

그러나 Excel ActiveX 개체를 사용하여 xlsx 파일을 열고 코드에서 CSV로 저장할 수 있습니다. Workbook 개체에는 파일 형식을 사용하는 SaveAs 메서드가 있습니다.

그래서 xlsx 파일에서 CSV 데이터를 바로 얻을 수 있으므로 클라이언트가 걱정할 필요가 없습니다.

이 절차를 실행하는 시스템에 Excel이 설치되어 있다고 가정합니다.

1

나는이 문제에 직면 해있다. 이 문제를 해결할 때 가장 좋은 점은 codeplex.com에서 Excel.dll을 다운로드하는 것입니다. 이 DLL은이 문제를 매우 쉽게 해결할 것입니다. 이것을 사용하면 데이터를 데이터 세트에 직접 저장하고 그때까지하고 싶은 일을 할 수 있습니다. 사이트에서 샘플 코드를 찾을 수 있습니다.

관련 문제