i have exported data database using httpcontext formatting of table, tr , td. want read same file , convert datatable.
<add name="excel03constring" connectionstring="provider=microsoft.jet.oledb.4.0;data source={0};extended properties='html import;hdr={1};imex=1'" /> <add name="excel03constring" connectionstring="provider=microsoft.jet.oledb.4.0;data source={0};extended properties='excel 8.0;hdr={1};imex=1'" /> private datatable gettablefromexcel() { datatable dt = new datatable(); try { if (exclfileupload.hasfile) { string filename = path.getfilename(exclfileupload.postedfile.filename); string extension = path.getextension(exclfileupload.postedfile.filename); string folderpath = server.mappath(configurationmanager.appsettings["folderpath"]); //string newfilename = string.format("{0}_{1}", datetime.now.tostring().replace("/", "").replace(" ", "").replace(":", ""), filename); string filepath = path.combine(string.format("{0}/{1}", folderpath, filename)); exclfileupload.saveas(filepath); string constr = ""; switch (extension) { case ".xls": //excel 97-03 constr = configurationmanager.connectionstrings["excel03constring"].connectionstring; break; case ".xlsx": //excel 07 constr = configurationmanager.connectionstrings["excel07constring"].connectionstring; break; } constr = string.format(constr, filepath, true); oledbconnection connexcel = new oledbconnection(constr); oledbcommand cmdexcel = new oledbcommand(); oledbdataadapter oda = new oledbdataadapter(); cmdexcel.connection = connexcel; connexcel.open(); datatable dtexcelschema; dtexcelschema = connexcel.getoledbschematable(oledbschemaguid.tables, null); string sheetname = dtexcelschema.rows[0]["table_name"].tostring(); connexcel.close(); connexcel.open(); cmdexcel.commandtext = "select * [" + sheetname + "]"; oda.selectcommand = cmdexcel; oda.fill(dt); connexcel.close(); file.delete(filepath); } } catch (exception ex) { } return dt; }
when using second connection string getting error "external table not in expected format on connection.open()." when using first, getting error on reading sheet name.
please tell me how read sheet or, directly, data excel.
i think third party dll-(excelldatareader) may solve problem.
filestream stream = file.open(filepath, filemode.open, fileaccess.read); //1. reading binary excel file ('97-2003 format; *.xls) iexceldatareader excelreader = excelreaderfactory.createbinaryreader(stream); //... //2. reading openxml excel file (2007 format; *.xlsx) iexceldatareader excelreader = excelreaderfactory.createopenxmlreader(stream); //... //3. dataset - result of each spreadsheet created in result.tables dataset result = excelreader.asdataset(); //... //4. dataset - create column names first row excelreader.isfirstrowascolumnnames = true; dataset result = excelreader.asdataset(); //5. data reader methods while (excelreader.read()) { //excelreader.getint32(0); } //6. free resources (iexceldatareader idisposable) excelreader.close();
Comments
Post a Comment