asp.net mvc导出excel

asp.net mvc导出excel,第1张

首先导出成.txt格式的

然后右键点导出的文件-打开方式-excel-格式

在格式中选择分隔方式(看导出的TXT格迹仔式中以什么分隔的,一般情况下把空格和逗号选上就ok)

再下一步就打开链州誉了

最后处理相信就不用我多棚段说了 !很高兴为你解答

private void ExportExcelFromDataGrid( string filename , System.Web.UI.WebControls.DataGrid ToExcelGrid )

{

Response.Clear()

Response.Buffer=true

Response.Charset="腊茄utf-8"

Response.AppendHeader("Content-Disposition","attachmentfilename="+Server.UrlEncode ( filename ) )

Response.ContentEncoding=System.Text.Encoding.Default//设置输出流为简体中文

Response.C//设置输出文件类型为excel文件。

this.EnableViewState=false

System.Globalization.CultureInfo myCItrad=new System.Globalization.CultureInfo("ZH-CN",true)

System.IO.StringWriter oStringWriter=new System.IO.StringWriter(myCItrad)

System.Web.UI.HtmlTextWriter oHtmlTextWriter=new System.Web.UI.HtmlTextWriter(oStringWriter)

ToExcelGrid.RenderControl(oHtmlTextWriter)

Response.Write(oStringWriter.ToString())

Response.End()

}

private void Button4_Click(object sender, System.EventArgs e)

{

this.Panel1.Visible=false

string filename="内训师.xls"

this.DataGrid1.Columns[6].Visible=true

this.DataGrid1.Columns[7].Visible=true

this.DataGrid1.Columns[this.DataGrid1.Columns.Count-1].Visible=false // *

this.DataGrid1.Columns[this.DataGrid1.Columns.Count-2].Visible=false // *

this.DataGrid1.AllowSorting=false // *

this.DataGrid1.AllowPaging=false

this.DataGrid1.SelectedIndex=-1 // *

this.BindGrid()

this.ExportExcelFromDataGrid ( filename , this.DataGrid1 )

}

原理是利用DataGrid(其实是其父类Control)的RenderControl方法输出,整个DataGrid的外观时,将这些HTML代码写入到缓冲区,同时设置一下 ContentType ,让Excel自己的自动纠错功能将这个输出存为一个Excel文件。

很多网上的朋友使用了败局睁以上这种察岁可粘贴性强的代码,发现不好用,反映的错误类似:

“LinkButton必须放在一个具有runat=server的标签的Form”之类的话,而更多的网友说:

问题很明显,因为DataGrid没有放在runat=server 的Form里面,加上就可以了。

我认为,这种回答是很不准确的,理由如下:

通常使用这种代码的人他/她的DataGrid,最起码已经能用了,所以必定放在那个具有runat=server 的form标签里了。

报错是LinkButton,而不是DataGrid,很多细心的朋友很可能会说,我一直在用DataGrid,LinkButton在哪里来的。

其实真正的问题是,上面的代码没有加了 // * 的那几行代码引起的。

当然如果你的DataGrid,没有排序,没有使用那种按钮列的话,是不会出问题的。

言归正传,LinkButtion其实是你将DataGrid设为可排序时候,的表头包含的,所以我要将DataGrid的排序设为False。

同样得到上面的其实,那些按钮列,什么"编辑"、“删除”等等这些,也是用了LinkButton,把他设为不可见就是了。

其实说得再明白一点就是,将有可能产生LinkButton,或其他控件的东西都不让它输出就是了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12192839.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存