C# - Numbers Are Converted As Text When Export Dataset To Excel
Jul 8, 2010
Iam exporting dataset to excel , the numbers on the sheet shown as text when export it to excel. Here is the code:
public class Excel
{
const int rowLimit = 65000;
private static string getWorkbookTemplate()
{
StringBuilder sb = new StringBuilder(818);
sb.AppendFormat(@"<?xml version=""1.0""?>{0}", Environment.NewLine);
sb.AppendFormat(@"<?mso-application progid=""Excel.Sheet""?>{0}", Environment.NewLine);
sb.AppendFormat(@"<Workbook xmlns=""urn:schemas-microsoft-com:office:spreadsheet""{0}", Environment.NewLine);
sb.AppendFormat(@" xmlns:o=""urn:schemas-microsoft-com:office:office""{0}", Environment.NewLine);
sb.AppendFormat(@" xmlns:x=""urn:schemas-microsoft-com:office:excel""{0}", Environment.NewLine);
sb.AppendFormat(@" xmlns:ss=""urn:schemas-microsoft-com:office:spreadsheet""{0}", Environment.NewLine);
sb.AppendFormat(@" xmlns:html=""[URL]
sb.AppendFormat(@" <Styles>{0}", Environment.NewLine);
sb.AppendFormat(@" <Style ss:ID=""Default"" ss:Name=""Normal"">{0}", Environment.NewLine);
sb.AppendFormat(@" <Alignment ss:Vertical=""Bottom""/>{0}", Environment.NewLine);
sb.AppendFormat(@" <Borders/>{0}", Environment.NewLine);
sb.AppendFormat(@" <Font ss:FontName=""Verdana"" x:Family=""Swiss"" ss:Size=""12"" ss:Color=""#0000A0""/>{0}", Environment.NewLine);
sb.AppendFormat(@" <Interior/>{0}", Environment.NewLine);
sb.AppendFormat(@" <NumberFormat/>{0}", Environment.NewLine);
sb.AppendFormat(@" <Protection/>{0}", Environment.NewLine);
sb.AppendFormat(@" </Style>{0}", Environment.NewLine);
sb.AppendFormat(@" <Style ss:ID=""s62"">{0}", Environment.NewLine);
sb.AppendFormat(@" <Font ss:FontName=""Calibri"" x:Family=""Swiss"" ss:Size=""11"" ss:Color=""#000000""{0}", Environment.NewLine);
sb.AppendFormat(@" ss:Bold=""1""/>{0}", Environment.NewLine);
sb.AppendFormat(@" </Style>{0}", Environment.NewLine);
sb.AppendFormat(@" <Style ss:ID=""s63"">{0}", Environment.NewLine);
sb.AppendFormat(@" <NumberFormat ss:Format=""Short Date""/>{0}", Environment.NewLine);
sb.AppendFormat(@" </Style>{0}", Environment.NewLine);
sb.AppendFormat(@" </Styles>{0}", Environment.NewLine);
sb.Append(@"{0}
</Workbook>");
return sb.ToString();
}
private static string replaceXmlChar(string input)
{
input = input.Replace("&", "&");
input = input.Replace("<", "<");
input = input.Replace(">", ">");
input = input.Replace(""", """);
input = input.Replace("'", "'");
return input;
}
private static string getCell(Type type, object cellData)
{
Object data = (cellData is DBNull) ? "" : cellData;
if (type.Name.Contains("Int") || type.Name.Contains("Double") || type.Name.Contains("Decimal")) return string.Format("<Cell><Data ss:Type="Number">{0}</Data></Cell>", data);
if (type.Name.Contains("Date") && data.ToString() != string.Empty)
{
return string.Format("<Cell ss:StyleID="s63"><Data ss:Type="DateTime">{0}</Data></Cell>", Convert.ToDateTime(data).ToString("yyyy-MM-dd"));
}
return string.Format("<Cell><Data ss:Type="String">{0}</Data></Cell>", replaceXmlChar(data.ToString()));
}
private static string getWorksheets(DataSet source)
{
StringWriter sw = new StringWriter();
if (source == null || source.Tables.Count == 0)
{
sw.Write("<Worksheet ss:Name="Sheet1">
<Table>
<Row><Cell><Data ss:Type="String"></Data></Cell></Row>
</Table>
</Worksheet>");
return sw.ToString();
}
foreach (DataTable dt in source.Tables)
{
if (dt.Rows.Count == 0)
sw.Write("<Worksheet ss:Name="" + replaceXmlChar(dt.TableName) + "">
<Table>
<Row><Cell ss:StyleID="s62"><Data ss:Type="String"></Data></Cell></Row>
</Table>
</Worksheet>");
else
{
//write each row data
int sheetCount = 0;
for (int i = 0; i < dt.Rows.Count; i++)
{
if ((i % rowLimit) == 0)
{
//add close tags for previous sheet of the same data table
if ((i / rowLimit) > sheetCount)
{
sw.Write("
</Table>
</Worksheet>");
sheetCount = (i / rowLimit);
}
sw.Write("
<Worksheet ss:Name="" + replaceXmlChar(dt.TableName) +
(((i / rowLimit) == 0) ? "" : Convert.ToString(i / rowLimit)) + "">
<Table>");
//write column name row
sw.Write("
<Row>");
foreach (DataColumn dc in dt.Columns)
sw.Write(string.Format("<Cell ss:StyleID="s62"><Data ss:Type="String">{0}</Data></Cell>", replaceXmlChar(dc.ColumnName)));
sw.Write("</Row>");
}
sw.Write("
<Row>");
foreach (DataColumn dc in dt.Columns)
sw.Write(getCell(dc.DataType, dt.Rows[i][dc.ColumnName]));
sw.Write("</Row>");
}
sw.Write("
</Table>
</Worksheet>");
}
}
return sw.ToString();
}
public static string GetExcelXml(DataTable dtInput, string filename)
{
string excelTemplate = getWorkbookTemplate();
DataSet ds = new DataSet();
ds.Tables.Add(dtInput.Copy());
string worksheets = getWorksheets(ds);
string excelXml = string.Format(excelTemplate, worksheets);
return excelXml;
}
public static string GetExcelXml(DataSet dsInput, string filename)
{
string excelTemplate = getWorkbookTemplate();
string worksheets = getWorksheets(dsInput);
string excelXml = string.Format(excelTemplate, worksheets);
return excelXml;
}
public static void ToExcel(DataSet dsInput, string filename, HttpResponse response)
{
string excelXml = GetExcelXml(dsInput, filename);
response.Clear();
response.AppendHeader("Content-Type", "application/vnd.ms-excel");
response.AppendHeader("Content-disposition", "attachment; filename=" + filename);
response.Write(excelXml);
response.Flush();
response.End();
}
public static void ToExcel(DataTable dtInput, string filename, HttpResponse response)
{
DataSet ds = new DataSet();
ds.Tables.Add(dtInput.Copy());
ToExcel(ds, filename, response);
}
}
View 1 Replies
Similar Messages:
Dec 23, 2015
I was using this UR [URL] for exporting the data to excel. Can I do the following two things while exporting:
1) I want to remove the autofilter options, which are displaying now when you open the excel workbook soon after exporting finishes.
2) Some of the columns which are numerics, are formatted to text by default, and it is displaying a small green rectangular icon at the left top corner of each cell which is very disturbing while viewing the sheet.
Is it possible to fix both the above options.
View 1 Replies
Feb 12, 2011
I am using the following code to export fields from a database table into excel. What I want to do is be able to write a SQL statement to retrieve fields from multiple tables and export them into excel. This code only allows me to export one table. Also, how can I display a save prompt dialog?
protected void export_Click(object sender, EventArgs e)
{
string sql = null;
string data = null;
string path = save_as.Text;
int i = 0;
int j = 0;
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
//connectionString = "data source=servername;initial catalog=databasename;user id=username;password=password;";
SqlConnection cnn = new SqlConnection(GetConnectionString());
cnn.Open();
sql = "SELECT Story, CreationDate FROM Story";
SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
DataSet ds = new DataSet();
dscmd.Fill(ds);
for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
for (j = 0; j <= ds.Tables[0].Columns.Count - 1; j++)
{
data = ds.Tables[0].Rows[i].ItemArray[j].ToString();
xlWorkSheet.Cells[i + 1, j + 1] = data;
}
}
xlWorkBook.SaveAs(path+".xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
//MessageBox.Show("Excel file created , you can find the file c:\csharp.net-informations.xls");
}
private void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
//MessageBox.Show("Exception Occured while releasing object " + ex.ToString());
}
finally
{
GC.Collect();
}
}
View 2 Replies
May 29, 2010
i have data in sql server i want to export to data with asp.net C#
View 3 Replies
Feb 24, 2010
Actually I have a SQL query that a user exports to excel in our web server. I did it in c# with Visual Studio 2003 (.Net v1.1): I get the data from a SQL server into a Dataset, then with this method I create the XLS file:
private void ExportAsExcelFile ( DataSet dtExport )
{
Response.Clear() ;
Response.ContentType = "application/vnd.ms-excel";
Response.ContentEncoding = System.Text.Encoding.UTF8 ;
Response.Charset = string.Empty ;
Response.AddHeader ( "Content-Disposition", "attachment;filename=data.xls" ) ;
System.IO.StringWriter objStringWriter = new StringWriter () ;
System.Web.UI.HtmlTextWriter objHtmlTextWriter = new System.Web.UI.HtmlTextWriter(objStringWriter) ;
DataGrid objDatagrid = new DataGrid () ;
objDatagrid.DataSource = dtExport ;
objDatagrid.DataBind () ;
objDatagrid.RenderControl ( objHtmlTextWriter ) ;
Response.Write (objStringWriter.ToString()) ;
Response.End () ;
}
Well, this works when the SQL query has 10.000 rows and so on. But now the query has more than 200.000 rows, and I´m getting a TimeOut Error trying to export the data. I read about generate this big files with a Store Procedure and the SQL Commad: BCP [URL], but I tryed and it fails. I have no permissions to execute this command. Is there any other way to export this SQL data to Excel via a ASPX page?
View 1 Replies
Sep 9, 2011
I have a dataset wity multiple table, the same dataset need to export to excel
dataset.table[0] data
dataset.table[1] data in the same excel sheet
View 1 Replies
Jul 12, 2012
I need to give users of my asp.net/vb.net web application the ability to click a button which will then send them an e-mail with the contents of a SQL query attached as an Excel e-mail attachment.
I can manage all of this apart from getting the contents of a VB dataset object into an Excel file on my server.
I know how to export a gridview to Excel at the client end, but my boss has been adamant that he wants the button to send an e-mail with the results attached - I have no need to display a gridview at all.
How to export the contents of a datareader or dataset directly into an Excel file at the server side?
View 12 Replies
Jan 5, 2011
I am generating, using a ASP routine, Visual Basic, a HTML table in a file to be read by MS Excel.
After Excel reads the file, some of the numbers (in some cells) are shown as "text", not numbers: they cannot be operated upon, like decimal numbers. (added, subtracted...)
If I click in a "number" stored as "text" cell, I can "edit" the cell and remove an invisible "apostrofe" to the left of the number; after that, the "text" becomes "number" again.
Seems like Excel is inserting a non-visible character before the number, so that it is stored as "text"
It happens to some lines and not to others...
View 1 Replies
Mar 9, 2011
I am trying to Export the dataset values into Excel in my application, its working for first time. Again if i click the export button [second time] the button does't cause postback and the entire page is not postback.
View 4 Replies
Jan 21, 2011
how to Export DataSet to Multiple Excel Sheets and download those file into a zip in C# asp.net?
View 2 Replies
May 7, 2015
I was read your post: "Export GridView to Excel in ASP.Net with Formatting using C#" and is very useful. That code works perfect. But I need create a new format for a specific column in my sheet before to export it. For example:My DataTable have a column with decimal numbers and I'm trying reduce the tenths for each number.I want this: 2,874444 ----> 2,87 for a specific range. In this case I need it for all numbers in the column 13 or well said for the Column called N in Excel. Only reduce two tenths.
I used:
xlWorkSheet.Range["N"+h,"N"+h].NumberFormat = "0.00";
And no works (h is for rows, N is the column. Into a foreach).
View 1 Replies
Aug 6, 2010
I am using the following code to export a datset to excel sheet.
[Code]....
Problem is that its not raising file download and hence no export is taking place.The same code works fine in a normal method.But with the webmethod its not working.
View 3 Replies
Mar 12, 2011
I have a GridView populated by an ObjectDataSource. I also have several DropDownLists filtering the ObjectDataSource. I found a link providing a way to export a DataSet (or DataTable) to Excel here:
http://msmvps.com/blogs/deborahk/archive/2009/07/23/writing-data-from-a-datatable-to-excel.aspx
ow I can ensure that filters applied to the ObjectDataSource when the method is called are applied. In short, how can I ensure what the UI is displaying is what the file will include when exported?
View 2 Replies
Feb 9, 2010
In a page im having multiple data grids with some data tables.How can i export all these to excel sheet without any change in the alignment.
View 6 Replies
Jun 28, 2010
I want to Export dataset data to excel ,when i click gridview linkbutton.
My Scenior is : Actually i am Passing a parameter from griview linkbutton.Depending on the parameter value .I want to export dataset data to excel.
View 7 Replies
Nov 20, 2010
In one of webforms user must enter the percent of tax and then I convert it to the float number and finally save it into database. here is a sample:
Dim txtMyPercent
txtMyPercent=Convert.ToSingle(txtPercent.text)
label.text=txtMyPercent
insert into(txtmypercent)
This peice of code, works perefect while runs via Visual Studio 2010, however after publishing, numbers are converted to integer. Thus it can't be inserted into Sql server database .... Server OS: Windows 2003 x64 IIS: 6 .Net Framework: 4.0
View 2 Replies
Dec 17, 2010
I want to export dataset to Excel. I did the following ways:
1) bind a dataset to a crystal report,
2) export crystal report to Excel Can it be done without displaying crystal report and only Excel file? Or, I have to find out a way export to Excel directly from dataset?
View 1 Replies
Jul 24, 2010
i have in grid view that grid view have very long string. when i export grid view export in excel it that string shows in single line
View 1 Replies
Apr 27, 2010
I have a web form that contains a GridView, which impliments Search in Grid with a TextBox and Button control in the footer. This works as I have it now. I have also implimented a Export to Excel function. The Export to Excel works by itself if the Search in Grid function is not included in the footer.The Export to Excel function errors when trying to render the Grid for the export. Is there a better way to incorporate both functions and accomplish the same thing? Am I missing something simple?
[Code]...
View 21 Replies
Aug 26, 2010
which part when wrong if my code is wrong ? I'm using VS2010 have a dataset. Here is my code. [Code]....
View 4 Replies
Jan 18, 2010
What I am thinking is this? Is it possible for me to upload the data from an excel file to dataset of my application first, so that the user can view the data in a gridview to review it first, before the user strike the save button, to save it in the database. So, that in case there is a problem, the gridview will high light all the data with an error. So the user can easily pull out the excel and correct the data before saving it in the database.
View 4 Replies
Feb 7, 2010
I'm working in an ASP.net web application. I'm trying to export a crystal report file (.rpt file) to pdf viewerthe following code:
rystalDecisions.CrystalReports.Engine.ReportDocument doc = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
doc.Load("C:\Users\amino\Documents\Visual Studio 2005\WebSites\WebSite1\Report.rpt");
CrystalReportViewer1.ReportSource = doc;
[code]...
View 3 Replies
Jun 10, 2010
How can I export data from a Gridview to excel and once exported the data should be formatted in right to left (arabic) manner. How can I achieve this?
View 2 Replies
Nov 2, 2010
I've got an .rdlc report which I print from my .net app (C# Visual Studio 2005), where I use a RemoteReportPrinter object. I give it as parameters the server name, report name, report parameters, etc. Works fine. My question is, I would live to do an analagous export of that report to Excel. Set it up exactly the same, but have it export to Excel rather than print, probably using some other type of object than RemoteReportPrinter.
View 1 Replies
Apr 6, 2014
i use this code to export data into word.
Protected Sub Export(sender As Object, e As EventArgs) Handles btn_printexcel.Click
Response.Clear()
Response.Buffer = True
[Code]....
but the export docs will be downloaded into the user computer.
what should i do so that the exported docs is save into the server?
View 1 Replies