Generated Excel Spreadsheet: Numbers Received As Text?
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
Similar Messages:
Nov 8, 2010
My web app is allowing the user to load a column of data from an Excel spreadsheet. For whatever reason, as it parses the data, fields that are just integers are coming up as System.DBNull. (Code in VB.NET but I work with C# as well, so feel free to post C# solutions)
[Code]....
dataRow(0) is System.DBNull when the Excel file has a number in Column A. Here's what the Excel looks like
Column A
100S200
WEIRD
ABCDEFG
123456
100S12791
119655902
100S12792
105E17530
123456 and 119655902 come through as DBNull
View 8 Replies
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
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
Nov 15, 2010
Possible Duplicate: Create Excel (.XLS and .XLSX) file from C#
I have some code that generates a zip file that contains multiple CSV files and streams it back to the user (no file is saved on the server). However, I want to create an excel workbook instead (can be traditional xls or Office Open XML xlsx format) with each CSV 'file' being a spreadsheet.
How can I do this, without resorting to Office Automation on the server or a commercial 3rd party component?
View 4 Replies
Jun 10, 2010
I'm working on a project which requires me to plot a graph using Visual Studio ASP.Net from a data I've collected either in .txt or .xml format. The data consist of, eg. 15 records, but I'm only needed to plot 8 graphs out of the 15 records.
View 1 Replies
Feb 25, 2010
I'm exporting an ASP.NET gridview to Excel using the following function. The formatting is working really well, except I need to freeze the header row in Excel on the export. I'm really trying to avoid using a 3rd party Excel plugin for this, but unless there's some archaic excel markup in my AddExcelStyling function.
[code]....
View 2 Replies
Jun 22, 2010
I have a 2 dimensional array, I want to convert it to an Excel document using C#.
View 2 Replies
Aug 13, 2010
I'm trying to upload an excel spreadsheet using the FileUpload control, read the excel sheet using OleDb connection, and save the strings onto a sql server database.Then, I'm trying to read each string in another method.My web app is currently hosted on the network on my local box, and using savePath= @"C:desktop" like I had it previously wasn't working, so I figured using a sql server database would work for being able to save the file and open it again... but I'm getting confused on how to do so, so i tried using my old savePath but it's not working anymore. So... I'm really at a lost on what to do and how to fix it.
[Code]....
View 1 Replies
Nov 14, 2011
On an .aspx page in a web site I need to retrieve some data from a sql server database and, instead of displaying it in a Gridview, I need to put the data in a spreadsheet and present the user with a Save As dialog.
I'd prefer to do it without using the Office / Excel / Interop com object - so, from what I've read so far, I can do this by returning XML data from SQL Server?
Normally I get data from SQL Server and populate a dataset or datareader with it - and then use this as the Datasource of a GridView.
If I run this in SQL Server ...
Code:
SELECT UserID, UserName FROM tblUsers FOR XML Auto, Root('Users')
It produces this ...
Code:
<Users>
<tblUsers UserID="1" UserName="Steve" />
<tblUsers UserID="2" UserName="Andrea" />
<tblUsers UserID="3" UserName="Zebedee" />
</Users>
So, first question - how do I get the data from SQL Server into my .aspx page? (All data access is done with stored procedures - so, from my data access class normally I create, for example, a SQLDataReader and populate it by calling a stored procedure. What object would I populate with the results of a stored procedure that contains a select statement with 'FOR XML Auto'
Then, assuming I get the XML into the .aspx page - how do I get it into a spreadsheet so that there are two columns called UserID and UserName and 3 rows with 1, 2 and 3 in the first cell and Steve, Andrea and Zebedee in teh second cell?
View 9 Replies
May 28, 2010
My company has new customers in Brazil and we realized that our excel reports are not working when our Brazilian customers tried to open the reports in their Brazilian versions of excel.
For excel output we use spreadsheet gear in our vb.net web application. Our excel worksheets are fairly simple. Mostly outputted text/numbers/dates, a couple of formulas (sum, if) and formatting on the currency and dates.
I've tried several methods to get my excel reports to work: First I left the excel workbook in the "en-US" culture and tried simply chaging the number format for Brazil to:
_-[$R$-416] * #.##0,00_-;-[$R$-416] * #.##0,00_-;_-[$R$-416] * "-"??_-;_-@_-
And this formatted the regular cells but the formulas still failed to show a value. Instead they showed a 0 value.
Next I tried changing the workbook to the "pt-BR" culture and that also forced me to translate the formula names (Sum -> Soma, If -> Se) but they still wouldn't should a value and instead showed a #Name/#Nome error. Interestingly enough the formulas would work if I edited the cell and hit enter. The formula wouldn't change but it would some how fix that cell.
I need to be able to out excel reports that can format dates/currencies and apply simple formulas (IF, Sum) for other excel cultures.
View 1 Replies
Feb 24, 2011
I would like to access an Excel 2010 spreadsheet via ASP.NET 4 - what is the best (i.e. straight forward) method to do this? I would like to update the spreadsheet via ASP then read the results of the data from Excel back to a web form.
View 9 Replies
Feb 25, 2010
I have a gridvidew (GV2). I want the user to be able to export the contents of this gridview to an excel spreadsheet for offline processing.
Here is my subroutine:
[code]...
On clicking the ExcelButton I get the error message:
Control 'GV2' of type 'GridView' must be placed inside a form tag with runat=server.
The control GV2 is in fact inside:
<form id="form1" runat="server"></form>
View 1 Replies
Oct 21, 2010
I would like to be able to copy one row and five columns from an Excel spreadsheet to a table like structure on a ASP.NET web form. The idea is keeping the data in the exact row and column from Excel to the table like control on the ASP.NET web-form. Then I want to be able to save to the contents of the ASP.NET control to a database by a buttoon command click. What ASP.NET control would allow me to do this? Gridviews and datagrids don't seem to allow me to do this.
View 1 Replies
Mar 3, 2011
My host does not allow me to save files to the file system, but I would like to be able to send some reports via email as Excel attachments.
How can I generate and the file without actually saving it to disk?
View 2 Replies
Jun 10, 2010
I want to show information from an excel spreadsheet in a web page. The xls will have maybe 5 columns, and as many rows as needed. The columns will be 'Name', 'Created Date', 'Expired Date', 'Owner', and maybe down the road maybe more.
What I would like is for the C# to nightly read the xls, and display the information in a table on the website.
If there is a PDF available for download I am going to link that as well.
View 1 Replies
Jun 22, 2010
I've tried many combonations and looked over may websites for sample code but no matter what I do I only getting a few cells of data from my Excel DataSet.
CODE:
using System;
View 1 Replies
Sep 9, 2010
I am trying to generate an excel spreadsheet in my vb.net web service but it looks like its not allowing me. I need to generate it from xml string and send this spreadsheet in an email from the same web service.
View 1 Replies
Sep 2, 2010
I simply have a lot of data in two columns in an excel spreadsheet of data that I gathered. I want to copy and paste this (manually) into a table that I have created in my ASPNETDB in my ASP.NET web application. I thought it'd be as easy as copy the column, and hit paste in the "table data" view, but it's not (it only pastes one cell).
Is there a way for me to manually copy data from excel and paste it in a table in my SQL Server?
View 3 Replies
May 8, 2010
importing excel/spreadsheet into sql server using C#? Whenever I run the webpage by selecting excel file, first it will empty sql server table then import data from excel.
View 3 Replies
Mar 21, 2011
I have a requirement that the user will need to import a list of ID's to the asp.net website from their own spreadsheet. I will provide a button 'btnImport' which will use an OleDbConnection to read the spreadsheet and pull in the id's. I have that working fine in my local dev environment. My question is, when this app is running on a production server, will the user have to upload her spreadsheet to the server first? Or do I need to provide code that will find the file on her machine? I'm not sure how this part of it works.
View 4 Replies
Jan 31, 2011
I have the following code to 'save' a GridView on a page as an excel file, but it pops up a dialogue screen asking the user to view or save.
[Code].....
View 1 Replies
Jun 24, 2010
I've a gridview which I am rendering to a html text writer and allowing clients to download as an excel spreadsheet using Response.Write. I'm using AJAX in my website now and suddenly it stopped working. This is the code I'm using
public static void Convert(DataSet ds, HttpResponse response)
{
try
{
//1. declare filename to export
string filename = "export";
//2. clear response object
response.Clear();
response.Charset = "";
//3. set response mime type to excel
response.ContentType = "application/vnd.ms-excel";
//4. prompt user to download the file
response.AppendHeader("content-disposition", "attachment; filename=" + filename + ".xls");
//5. create a string writer
StringWriter stringWrite = new StringWriter();
//6. create html writer which uses the string writer
HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
//7. instantiate a gridview
GridView gv = new GridView();
//8. set gridview datasource to the dataset
gv.DataSource = ds.Tables[0];
//9. bind gridview
gv.DataBind();
//10. tell the gridview to render itself into htmltextwriter
gv.RenderControl(htmlWrite);
//11. output html
response.Write(stringWrite.ToString());
//12. end response
response.End();
}
catch (Exception ex)
{
string str = ex.Message;
}
}
I've found that Response.Write doesn't work with AJAX. Are there any alternatives to this?
View 3 Replies
Oct 14, 2010
I am trying to work through a sample of exporting a gridview to an excel spreadsheet.I found the code below on the internet. I pasted it into a test.aspx page. I need to establish a connection to the NorthWind Database. Or if you have a better example of exporting a gridview to excel, share. Here is the location of the northwind.mdb on my pc: (and is this sample looking for an access database or a sql database...what is the filetype of a sqlserver database?) See code below
c:Program FilesMicrosoft Visual Studio 8SDKv2.0QuickStartaspnetsamplesdataapp_data orthwind.mdb
[Code]....
View 3 Replies
Mar 21, 2011
I have a excel xlsx workbook that needs to be loaded into various SQL tables after the file's data has gone though various business logic checks. There can be multiple excel files as input to the program so i'm using the standard connection string and a data adapter to append the entire sheet into a DataTable so all the data can be checked at the same time. The code below works for this (sort of).
excelCon = new OleexcelCon = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strFileName + ";Extended Properties="Excel 12.0;HDR=No;IMEX=1";");
excelCon.Open();
strExcelSheetNames = GetSheetNames(excelCon);
for (int x = 0; x < strExcelSheetNames.Length; x++)
{
excelCmd.CommandText = "SELECT * FROM [" + strExcelSheetNames[x] + "]";
excelCmd.CommandType = CommandType.Text;
excelCmd.Connection = excelCon;
excelAdapter = new OleDbDataAdapter(excelCmd);
excelAdapter.Fill(dtExcelConvert);
}
I'm having an issue with the number columns however, if the number in the xlsx file is 612561120001 and it's displayed as 6.12561E+11 when i read it from the data table and convert it to a number it appears as 612561120000. I have tried to convert the file to a csv file and read it in but they're comma's in a lot of the fields which cause issues when splitting the data.
View 2 Replies