C # Ved å åpne store Excel-fil (150MB) ved OleDbConnection System.OutOfMemoryException

stemmer
1

Jeg må åpne en stor Excel-fil 150MB med en halv millon av poster (Excel 2007 .xlsx-fil), og jeg må flytte den til sql server, jeg bruker OleDbConnection, men når jeg prøver å åpne tilkoblingen det tar mer enn 5 minutter og etter at en System.OutMemoryExcepion vises. Jeg tror denne sammenheng prøver å åpne hele filen i minnet, hvordan kan jeg lese rad for rad. Jeg arbeider med Visual Net 2005 og C #

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();        
Publisert på 29/12/2009 klokken 22:51
kilden bruker
På andre språk...                            


4 svar

stemmer
0

New svar (basert på informasjon i kommentarer):

Se inn VSTO. Jeg ville skape et tillegg som ville tillate manageren til å klikke en bånd-knappen for å laste inn data i SQL Server, og deretter hente informasjon fra SQL Server (dette vil tillate Excel til å håndtere sine egne filer, nøyaktig hvordan den gjør best).

Her er en link som bør komme i gang: MSDN kodeeksempel

og du kan laste VSTO her .

Svarte 29/12/2009 kl. 22:58
kilden bruker

stemmer
1

Prioritet # 1 bør være å få dataene ut av xlsx regneark. Påfør forretningslogikk når dette har skjedd. Jeg vil eksportere CSV fra arkene og håndtere dem.

Svarte 29/12/2009 kl. 23:30
kilden bruker

stemmer
0

Noen av kommentarene foreslått å eksportere Excel-filer til CSV og analyse CSV-filen linje for linje, men det synes å ikke være en løsning på problemet.

Hva du kan gjøre er imidlertid å bruke Excel ActiveX-objekter for å åpne XLSX fil og lagre den som en CSV fra kode. Den Work objekt har en Lagre som metode som tar et filformat.

Så du kan få CSV-data rett fra xlsx fil og ikke trenger å ha dine klienter bekymre deg for det.

Dette forutsetter at du har Excel installert på systemet kjører denne prosessen.

Svarte 29/12/2009 kl. 23:41
kilden bruker

stemmer
1

Jeg har møtt dette problemet. Det beste jeg fant i håndteringen av dette problemet er at gå til codeplex.com og laste ned Excel.dll. Dette dll vil løse dette problemet veldig enkelt. Ved hjelp av denne kan du direkte lagre data til et datasett og gjøre hva du vil gjøre med det da. Du vil finne en eksempelkode på nettstedet.

Svarte 24/12/2010 kl. 06:59
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more