how to get excel sheet name using datatable in c# -
i using following code data excel sheet:-
private static datatable getdatafromcsvfile(string csv_file_path) { datatable csvdata = new datatable(); using (textfieldparser csvreader = new textfieldparser(csv_file_path)) { csvreader.setdelimiters(new string[] { "," }); csvreader.hasfieldsenclosedinquotes = true; string[] colfields = csvreader.readfields(); foreach (string column in colfields) { datacolumn datecolumn = new datacolumn(column); datecolumn.allowdbnull = true; csvdata.columns.add(datecolumn); } while (!csvreader.endofdata) { string[] fielddata = csvreader.readfields(); //making empty value null (int = 0; < fielddata.length; i++) { if (fielddata[i] == "") { fielddata[i] = null; } } csvdata.rows.add(fielddata); } return csvdata; } }
but need retrieve same sheets within same workbook. idea how can using datatable in c#.
thanks
"as users input data in excel sheets" doesn't mean input xls or xlsx file. may mean users use ms excel edit csv. can create "true excel" file data 4 source csv files , read new single file, need api, not textfieldparser. read new xlsx files use documentformat.openxml assembly. quick sample is
using (var doc = spreadsheetdocument.open(_docpath, false)) { var sheet = doc.workbookpart.workbook.sheets.elements<sheet>().first() //or iterate on sheets, sheet name, read it's data etc. //i'm sure can find lot of samples var worksheetpart = (worksheetpart)doc.workbookpart.getpartbyid(sheet.id); var sheetdata = worksheetpart.worksheet.getfirstchild<sheetdata>(); foreach (var row in sheetdata.elements<row>()) { //some code here } }
Comments
Post a Comment