asp.net导出excel科学计数问题

方法一:

在asp.net 中 我一般都是将要导出的数据放到gridview网格里,首先对网格邦定数据时 字符串形式处理,然后再用普通的形式导出excel就把问题解决了。
  我的代码非常简单:在邦定gridview控件时在rowdatabound事件中队数据格式化
 protected void gError_RowDataBound(object sender, GridViewRowEventArgs e)
    {
           //1)  文本:vnd.ms-excel.numberformat:@
          //2)  日期:vnd.ms-excel.numberformat:yyyy/mm/dd
         //3)  数字:vnd.ms-excel.numberformat:#,##0.00
         //4)  货币:vnd.ms-excel.numberformat:¥#,##0.00
         //5)  百分比:vnd.ms-excel.numberformat: #0.00%
        for (int i = 0; i < e.Row.Cells.Count; i++)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
                e.Row.Cells[i ].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
        }
           
    }
   然后执行到处操作就不会出现问题了
 protected void btnOut_Click(object sender, EventArgs e)
    {
        
       Response.Clear();
       Response.Buffer = true;
        Response.Charset = "GB2312";
       Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls");
     
        Response.ContentEncoding = System.Text.Encoding.UTF7;
      //设置输出文件类型为excel文件。 
      Response.ContentType = "application/ms-excel";
       System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
       System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
       this.gError.RenderControl(oHtmlTextWriter);
        Response.Output.Write(oStringWriter.ToString());
        Response.Flush();
        Response.End();
    }
 
public override void VerifyRenderingInServerForm(Control control)
    {
        //base.VerifyRenderingInServerForm(control);
    }
在winform程序开发时,处理的办法就是在导出的过程中,开始试了 处理excel对象的格式 mysheet.Cells.NumberFormat = "#";
后来没有成功。最后还是用了逐条纪录进行字符格式转化的方法,即添加“ '  ”.
 我写得代码主要部分如下
  执行数据导出#region  执行数据导出
            try
            {
                //到导出excel
                Excel.ApplicationClass my = new Excel.ApplicationClass();
                if (my == null)
                {
                    MessageBox.Show("无法创建excel对象,可能您的系统没有安装excel");
                    return;
                }
                my.Visible = false;
                Excel.Workbook mybook = (Excel.Workbook)my.Workbooks.Add(1);
                ((Excel.Worksheet)mybook.Worksheets[1]).Name = "sheet1";
                Excel.Worksheet mysheet = (Excel.Worksheet)mybook.Worksheets[1];
                // mysheet.Cells.NumberFormat = "#";
               //导出列名
                for (int j = 0; j < this.dgvShow.Columns.Count; j++)
                {
                    if (this.dgvShow.Columns[j].Visible == true)
                    {
                        mysheet.Cells[1, j + 1] = "'" + Convert.ToString(this.dgvShow.Columns[j].HeaderText);//加"'"防止科 学计数法
                    }
                }
                //导出数据
                for (int i = 0; i < this.dgvShow.Rows.Count; i++)
                {
                    for (int j = 0; j < this.dgvShow.Columns.Count; j++)
                    {
                        mysheet.Cells[i + 2, j + 1] = "'" + Convert.ToString(this.dgvShow.Rows[i].Cells[j].Value);
                    }
                }
                if (savefilename != "")
                {
                    try
                    {
                        //mybook.Save();
                        mybook.SaveCopyAs(savefilename);
                        MessageBox.Show("excel文件导出成功!");
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("导出文件出现错误,文件可能正被打开!\n" + ex.Message);
                    }
                }

                GC.Collect();
            }
            catch (Exception ex)
            {
                MessageBox.Show("数据导出时出现错误,一下是详细错误信息:\n" + ex.Message);
                return;
            }
            #endregion 
View Code

方法2:

using System;
  2using System.Collections;
  3using System.ComponentModel;
  4using System.Data;
  5using System.Drawing;
  6using System.Web;
  7using System.Web.SessionState;
  8using System.Web.UI;
  9using System.Web.UI.WebControls;
 10using System.Web.UI.HtmlControls;
 11
 12namespace eMeng.Exam
 13{
 14/**//// <summary>
 15/// OutPutExcel 的摘要说明。
 16/// </summary>
 17public class OutPutExcel : System.Web.UI.Page
 18{
 19protected System.Web.UI.WebControls.Button Button1;
 20protected System.Web.UI.WebControls.DataGrid DataGrid1;
 21
 22private void Page_Load(object sender, System.EventArgs e)
 23{
 24// 在此处放置用户代码以初始化页面
 25DataGrid1.DataSource=CreateDataSource();
 26DataGrid1.DataBind();
 27}
 28/**//// <summary>
 29/// 创建数据源
 30/// </summary>
 31/// <returns>DataView</returns>
 32ICollection CreateDataSource() 
 33{
 34
 35DataTable dt = new DataTable();
 36DataRow dr;
 37dt.Columns.Add(new DataColumn("身份证号码", typeof(string)));
 38dt.Columns.Add(new DataColumn("图书单价",typeof(decimal)));
 39dt.Columns.Add(new DataColumn("购买数量",typeof(Int32)));
 40dt.Columns.Add(new DataColumn("总价格",typeof(decimal)));
 41
 42
 43for (int i = 0; i < 30; i++) 
 44{
 45dr = dt.NewRow();
 46
 47dr[0] = "123456789123456789";
 48dr[1] = 100 * i /3.0;
 49dr[2] = i + 5;
 50dr[3] = (decimal)dr[1] * (Int32)dr[2];                
 51dt.Rows.Add(dr);
 52}
 53DataView dv = new DataView(dt);
 54return dv;
 55}
 56/**//// <summary>
 57/// 输出到Excel
 58/// </summary>
 59/// <param name="sender"></param>
 60/// <param name="e"></param>
 61private void Button1_Click(object sender, System.EventArgs e)
 62{
 63Response.Clear(); 
 64Response.Buffer= true; 
 65Response.Charset="GB2312";    
 66Response.AppendHeader("Content-Disposition","attachment;filename=FileName.xls"); 
 67Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
 68Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。 
 69this.EnableViewState = false;    
 70System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
 71System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad); 
 72System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
 73this.DataGrid1.RenderControl(oHtmlTextWriter); 
 74Response.Write(oStringWriter.ToString());
 75Response.End();
 76}
 77
 78Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
 79override protected void OnInit(EventArgs e)
 80{
 81//
 82// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
 83//
 84InitializeComponent();
 85base.OnInit(e);
 86}
 87
 88/**//// <summary>
 89/// 设计器支持所需的方法 - 不要使用代码编辑器修改
 90/// 此方法的内容。
 91/// </summary>
 92private void InitializeComponent()
 93{    
 94this.Button1.Click += new System.EventHandler(this.Button1_Click);
 95this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
 96this.Load += new System.EventHandler(this.Page_Load);
 97
 98}
 99#endregion
100
101private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
102{
103if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
104{
105e.Item.Cells[0].Attributes.Add("style","vnd.ms-excel.numberformat:@");
106e.Item.Cells[3].Attributes.Add("style","vnd.ms-excel.numberformat:¥#,###.00");
}
}
}
}
View Code

方法3:通过CSS

<style type="text/css">
<!--
td {
    background-color: #FFFFFF;
}
 
.txt
    {padding-top:1px;
    padding-right:1px;
    padding-left:1px;
    mso-ignore:padding;
    color:black;
    font-size:11.0pt;
    font-weight:400;
    font-style:normal;
    text-decoration:none;
    font-family:宋体;
    mso-generic-font-family:auto;
    mso-font-charset:134;
    mso-number-format:"\@";
    text-align:general;
    vertical-align:middle;
    mso-background-source:auto;
    mso-pattern:auto;
    white-space:nowrap;}
-->
</style>
View Code

 

 

转载于:https://www.cnblogs.com/qiushuixizhao/p/3792680.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET中,我们可以使用多种方法来导出Excel文件。 一种常用的方法是使用Microsoft的Interop库,将数据导出Excel文件。我们首先需要安装Excel程序,并确保机器上已经安装了Microsoft Office。然后,我们可以通过创建一个Excel Application对象来访问Excel应用程序。我们可以创建一个工作簿(Workbook)和一个工作表(Worksheet),然后将数据写入工作表。最后,我们可以使用SaveAs方法将工作簿保存为Excel文件。这种方法的缺点是需要机器上安装Office,而且在服务器上可能会遇到权限问题。 另一种方法是使用开源的库,比如EPPlus。EPPlus是一个用于处理Excel文件的.Net库,可以在不安装Office的情况下读取和写入Excel文件。我们可以使用EPPlus库创建一个Excel包(ExcelPackage)对象,并创建一个工作表。然后,我们可以在工作表中写入数据并保存为Excel文件。这种方法不仅适用于ASP.NET,而且在服务器上也没有Office依赖的问题。 还有一种简单的方法是将数据导出为CSV(逗号分隔值)文件。CSV文件是文本文件,使用逗号分隔每个值。我们可以使用StreamWriter类创建一个文本文件,并将数据按照CSV格式写入文件。CSV文件可以在Excel中直接打开,并且不需要额外的库或软件。 以上是ASP.NET导出Excel的几种方法。根据具体需求和平台限制,我们可以选择适合的方法来导出Excel文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值