asp.net - Convert Excel Cell Value From Number To Text Using C# -


i using below process open excel:

if (dt != null)  {     foreach(datacolumn dc in dt.columns)      {         response.write(dc.columnname + "\t");         //sep = ";";     }     response.write(system.environment.newline);     foreach(datarow dr in dt.rows)      {         (int = 0; < dt.columns.count; i++)          {             response.write(dr[i].tostring() + "\t");         }         response.write("\n");     }      response.flush();     response.suppresscontent = true;     httpcontext.current.applicationinstance.completerequest(); } 

in datatable have 1 numeric value align right when excel renders default property of excel align numeric values right. per requirement have align numeric value left side in excel. tried adding space back-end excel ignore space when renders. tried adding ' before column value when excel renders column value shows '2015, '2016.

anybody can me figure out. in advance.

you're exporting csv file. if use openxml able specify column datatypes (formats) , apply left alignment numbers eg:

using officeopenxml; using officeopenxml.style;  public static bool isnumeric(this datacolumn col) {     if (col == null)         return false;      //this should moved const in order improve performance     var numerictypes = new [] { typeof(byte), typeof(decimal), typeof(double), typeof(int16), typeof(int32), typeof(int64), typeof(sbyte), typeof(single), typeof(uint16), typeof(uint32), typeof(uint64)};     return numerictypes.contains(col.datatype); }  public static void exporttoexcelopen(dataset ds, string filename) {     // create spreadsheet document supplying filename     // default, autosave = true, editable = true, , type = xlsx      httpcontext.current.response.clearheaders();     httpcontext.current.response.clearcontent();     httpcontext.current.response.clear();     httpcontext.current.response.buffer = true;     httpcontext.current.response.addheader("content-disposition", "attachment; filename=" + filename);     httpcontext.current.response.contenttype = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";     httpcontext.current.response.charset = "";      memorystream ms = new memorystream();      using (var objspreadsheet = spreadsheetdocument.create(ms, documentformat.openxml.spreadsheetdocumenttype.workbook))     {         var workbookpart = objspreadsheet.addworkbookpart();         objspreadsheet.workbookpart.workbook = new documentformat.openxml.spreadsheet.workbook();         objspreadsheet.workbookpart.workbook.sheets = new documentformat.openxml.spreadsheet.sheets();          uint sheetid = 1;          foreach (datatable table in ds.tables)         {             var sheetpart = objspreadsheet.workbookpart.addnewpart<worksheetpart>();             var sheetdata = new documentformat.openxml.spreadsheet.sheetdata();             sheetpart.worksheet = new documentformat.openxml.spreadsheet.worksheet(sheetdata);              documentformat.openxml.spreadsheet.sheets sheets = objspreadsheet.workbookpart.workbook.getfirstchild<documentformat.openxml.spreadsheet.sheets>();             string relationshipid = objspreadsheet.workbookpart.getidofpart(sheetpart);              sheetid += 1;              documentformat.openxml.spreadsheet.sheet sheet = new documentformat.openxml.spreadsheet.sheet() { id = relationshipid, sheetid = sheetid, name = table.tablename };             sheets.append(sheet);              documentformat.openxml.spreadsheet.row headerrow = new documentformat.openxml.spreadsheet.row();              dictionary<string, bool> columns = new dictionary<string, bool>();              foreach (datacolumn column in table.columns)              {                  //check numeric column here!!                 columns.add(column.columnname, column.isnumeric());                     documentformat.openxml.spreadsheet.cell cell = new documentformat.openxml.spreadsheet.cell();                  cell.datatype = documentformat.openxml.spreadsheet.cellvalues.string;                  cell.cellvalue = new documentformat.openxml.spreadsheet.cellvalue(column.columnname);                  headerrow.appendchild(cell);              }              sheetdata.appendchild(headerrow);              numberformatinfo valuenumberformatinfo = new numberformatinfo() { numberdecimalseparator = ".", numbergroupseparator = string.empty };             foreach (datarow dsrow in table.rows)              {                  documentformat.openxml.spreadsheet.row newrow = new documentformat.openxml.spreadsheet.row();                  foreach (keyvaluepair<string, bool> col in columns)                  {                      documentformat.openxml.spreadsheet.cell cell = new documentformat.openxml.spreadsheet.cell();                     if (col.value)                     {                         cell.datatype = documentformat.openxml.spreadsheet.cellvalues.number;                          cell.cellvalue = new documentformat.openxml.spreadsheet.cellvalue(string.format(valuenumberformatinfo, "0.####################", dsrow[col.key]));                          //left alignment here                          cell.style.horizontalalignment = excelhorizontalalignment.left;                     }                     else                     {                         cell.datatype = documentformat.openxml.spreadsheet.cellvalues.string;                          cell.cellvalue = new documentformat.openxml.spreadsheet.cellvalue(dsrow[col.key].tostring());                     }                      newrow.appendchild(cell);                  }                   sheetdata.appendchild(newrow);              }         }          objspreadsheet.close();         ms.writeto(httpcontext.current.response.outputstream);         ms.close();          httpcontext.current.response.flush();         httpcontext.current.response.end();     } } 

ref: http://forums.asp.net/t/1860267.aspx?how+to+retain+data+types+when+exporting+to+excel+using+open+xml

ref: set text align center in excel document using openxml c#


Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

gradle error "Cannot convert the provided notation to a File or URI" -

python - NameError: name 'subprocess' is not defined -