读数据到Excel 去除科学记数法

khijfv2008 2009-04-29 07:49:34
结合网上的代码修改的


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="gvFoods" runat="server" BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black" GridLines="None" EnableViewState="true" OnRowDataBound="gvFoods_RowDataBound">
<FooterStyle BackColor="Tan" />
<SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
<PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" HorizontalAlign="Center" />
<HeaderStyle BackColor="Tan" Font-Bold="True" />
<AlternatingRowStyle BackColor="PaleGoldenrod" />
</asp:GridView>
<br />
<asp:Button ID="Button1" runat="server" BackColor="#C0C0FF" OnClick="Button1_Click"
Text="Create Excel" Width="137px" />
</div>
</form>
</body>
</html>



using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Text;
using System.Collections;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
CreateStructure();
this.gvFoods.DataSource = this.CreateData();
this.gvFoods.DataBind();
}
}
private DataTable CreateStructure()
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("CategoryID", typeof(int)));
dt.Columns.Add(new DataColumn("CategoryName", typeof(string)));
dt.Columns.Add(new DataColumn("Price", typeof(Int64)));
return dt;
}
public DataSet CreateData()
{
DataSet ds = new DataSet();
DataTable dt = this.CreateStructure();

DataRow drNew = dt.NewRow();
drNew = dt.NewRow();
drNew["CategoryID"] = 1;
drNew["CategoryName"] = "Apple";
drNew["Price"] = 444444444444;
dt.Rows.Add(drNew);

drNew = dt.NewRow();
drNew["CategoryID"] = 2;
drNew["CategoryName"] = "Banana";
drNew["Price"] = 222222222;
dt.Rows.Add(drNew);

drNew = dt.NewRow();
drNew["CategoryID"] = 3;
drNew["CategoryName"] = "Orange";
drNew["Price"] = 111111111;
dt.Rows.Add(drNew);

drNew = dt.NewRow();
drNew["CategoryID"] = 4;
drNew["CategoryName"] = "Radish";
drNew["Price"] = 111111111;
dt.Rows.Add(drNew);

drNew = dt.NewRow();
drNew["CategoryID"] = 5;
drNew["CategoryName"] = "Pen";
drNew["Price"] = 82547639;
dt.Rows.Add(drNew);

drNew = dt.NewRow();
drNew["CategoryID"] = 6;
drNew["CategoryName"] = "Pencil";
drNew["Price"] = 93214581;
dt.Rows.Add(drNew);

drNew = dt.NewRow();
drNew["CategoryID"] = 7;
drNew["CategoryName"] = "Ruler";
drNew["Price"] = 111111111;
dt.Rows.Add(drNew);

drNew = dt.NewRow();
drNew["CategoryID"] = 8;
drNew["CategoryName"] = "Eraser";
drNew["Price"] = 222222222;
dt.Rows.Add(drNew);

ds.Tables.Add(dt);
return ds;
}
protected void Button1_Click(object sender, EventArgs e)
{
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
this.gvFoods.RenderControl(htw);
string strHtml = sw.ToString().Trim();

string ExcelFileName = "FoodList.xls";
string FilePhysicialPathName = Request.PhysicalApplicationPath;

//生成的Excel文件名
string objectExcelFileName = Path.Combine(FilePhysicialPathName, ExcelFileName);

if (File.Exists(objectExcelFileName))
{
File.Delete(objectExcelFileName);
}
FileStream fs = new FileStream(objectExcelFileName, FileMode.Create);
BinaryWriter bw = new BinaryWriter(fs, Encoding.GetEncoding("GB18030"));
bw.Write(strHtml);
bw.Close();
fs.Close();

}
public override void VerifyRenderingInServerForm(Control control)
{
//base.VerifyRenderingInServerForm(control);
}
protected void gvFoods_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[1].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
}
}
}


e.Row.Cells[1].Attributes.Add("style", "vnd.ms-excel.numberformat:@");

如果用response输出是可以转换成文本保存到文件里,但用FileStream 保存就不起作用了。大家帮忙看看,可以不用gridview直接从dataset读取能去除科学记数法更好
...全文
312 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
khijfv2008 2009-04-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 fy_study 的回复:]
前面加(')这个就可以了!
[/Quote]
这方式不考虑的
fy_study 2009-04-30
  • 打赏
  • 举报
回复
前面加(')这个就可以了!
khijfv2008 2009-04-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cpp2017 的回复:]
我就是拿excel测试过才发上来
[/Quote]
你是在页面输出流还是保存文件的呢,
takako_mu 2009-04-30
  • 打赏
  • 举报
回复
用XML來做可以隨心所欲....
cpp2017 2009-04-30
  • 打赏
  • 举报
回复
我就是拿excel测试过才发上来
khijfv2008 2009-04-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cpp2017 的回复:]
用样式也是可以的.如:


<HTML>
<style>
td
{
mso-number-format:\@;
}
</style>
<table>
<tr>
<td>23132142138213821932183 </td>
</tr>
</table>
[/Quote]
转到Excel就没起作用
cpp2017 2009-04-30
  • 打赏
  • 举报
回复
用样式也是可以的.如:


<HTML>
<style>
td
{
mso-number-format:\@;
}
</style>
<table>
<tr>
<td>23132142138213821932183</td>
</tr>
</table>

khijfv2008 2009-04-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
可打开EXCEL模板赋值EXCEL单元格
如sheet.Cells[i+2,"A"]="'"+"";

e.Row.Cells[4].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
[/Quote]
数据量比较大,不好这样做
readfuture 2009-04-30
  • 打赏
  • 举报
回复
请参考一下:
参考
khijfv2008 2009-04-30
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 llsen 的回复:]
e.Row.Cells[i ].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
[/Quote]
写清楚了再回复呀
llsen 2009-04-30
  • 打赏
  • 举报
回复
e.Row.Cells[i ].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
llsen 2009-04-30
  • 打赏
  • 举报
回复
wuyq11 2009-04-29
  • 打赏
  • 举报
回复
可打开EXCEL模板赋值EXCEL单元格
如sheet.Cells[i+2,"A"]="'"+"";

e.Row.Cells[4].Attributes.Add("style", "vnd.ms-excel.numberformat:@");

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧