`

将DataGrid数据写入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);
this.DataGrid1.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();

原理也就是把DataGrid的信息以流的形式写到html输出流的形式实现,自己尝试下,好像可以。我装的windowxp sp2版的,后来到同事的机器上去试,结果就出问题了,每次执行的时候,弹出那个【打开、保存、取消】的页面,再一点,结果整个站点的页面都关闭了,再到其他机器上去试,结果有的能正常下载,有的就不行,以前听说过有这么个问题,好像也没什么好的办法解决。
后来考虑了下,何必不直接把写到html流的信息直接写到一个excel文件里面去让客户直接下载excel,于是稍微修改了下别人的源码,直接生成Excel文件来让客户下载,演示源代码如下:

WebForm4.aspx----Html部分:
程序代码:

<%@ Page language="c#" Codebehind="WebForm4.aspx.cs" AutoEventWireup="false" Inherits="WebUI.WebForm4" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm4</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:datagrid id="DataGrid1" runat="server" width="100%">
<ItemStyle HorizontalAlign="Center"></ItemStyle>
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
<FooterStyle HorizontalAlign="Center"></FooterStyle>
<PagerStyle PageButtonCount="15" Mode="NumericPages"></PagerStyle>
</asp:datagrid>
<asp:Button id="Button1" style="Z-INDEX: 101; LEFT: 32px; POSITION: absolute; TOP: 152px" runat="server"
Text="Button"></asp:Button>
</form>
</body>
</HTML>


页面上就一个DataGrid和一个按钮,按钮用来触发将数据到Excel,后台的其他代码也就不弄上来了,下面是那个关键的按钮事件
程序代码:

private void Button1_Click(object sender, System.EventArgs e)
{
DataTable SourceTb = new DataTable();
DataColumn myDataColumn;

myDataColumn = new DataColumn();
myDataColumn.DataType = System.Type.GetType("System.String");
myDataColumn.ColumnName = "RowIndex"; //序 号
SourceTb.Columns.Add(myDataColumn);

myDataColumn = new DataColumn();
myDataColumn.DataType = System.Type.GetType("System.String");
myDataColumn.ColumnName = "CheckUpManName"; //审批人
SourceTb.Columns.Add(myDataColumn);

myDataColumn = new DataColumn();
myDataColumn.DataType = System.Type.GetType("System.String");
myDataColumn.ColumnName = "CheckUpIdeas"; //审批意见
SourceTb.Columns.Add(myDataColumn);

myDataColumn = new DataColumn();
myDataColumn.DataType = System.Type.GetType("System.String");
myDataColumn.ColumnName = "CheckUpDate"; //审批时间
SourceTb.Columns.Add(myDataColumn);

myDataColumn = new DataColumn();
myDataColumn.DataType = System.Type.GetType("System.String");
myDataColumn.ColumnName = "CheckUpRole"; //审批岗位
SourceTb.Columns.Add(myDataColumn);

myDataColumn = new DataColumn();
myDataColumn.DataType = System.Type.GetType("System.String");
myDataColumn.ColumnName = "HandleType"; //操作类型(1:提交| 9:驳回)
SourceTb.Columns.Add(myDataColumn);

DataRow myDataRow;
for(int i = 0;i < 30;i ++)
{
myDataRow = SourceTb.NewRow();
myDataRow["RowIndex"] = i.ToString();
myDataRow["CheckUpManName"] = "张三";
myDataRow["CheckUpIdeas"] = "同意";
myDataRow["CheckUpDate"] = "2006-03-20";
myDataRow["CheckUpRole"] = "物资部主任";
SourceTb.Rows.Add(myDataRow);
}

//绑定数据到DataGrid1
this.DataGrid1.DataSource = SourceTb.DefaultView;
this.DataGrid1.DataBind();
//将DataGrid1构成的html代码写进StringWriter
this.DataGrid1.Page.EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
this.DataGrid1.RenderControl(hw);
string HtmlInfo = tw.ToString().Trim();

string DocFileName = "审批信息.xls";
string FilePathName = Request.PhysicalPath;
FilePathName = FilePathName.Substring(0,FilePathName.LastIndexOf("\\"));
//得到Excel文件的物理地址
FilePathName = FilePathName +"\\" + DocFileName;
System.IO.File.Delete(FilePathName);
FileStream Fs = new FileStream(FilePathName, FileMode.Create);
BinaryWriter BWriter= new BinaryWriter(Fs,System.Text.Encoding.GetEncoding("GB18030"));
//将DataGrid的信息写入Excel文件
BWriter.Write(HtmlInfo);
BWriter.Close();
Fs.Close();
}


好了,写入信息到Excel文件成功了,至于说生成的Excel文件在哪里,大家一看就应该知道,要下载的话,也就是很简单的<a href='Excel文件路径'>文件下载</a>

分享到:
评论

相关推荐

    asp.net 将DataGrid数据写入Excel文件.rar

    asp.net 将DataGrid数据写入Excel文件.rar

    asp.net学习大全(超全面的资料整合)

    将DataGrid数据写入Excel文件.txt 揭开ASP.NET中Cookie编程的奥秘.txt 利用TreeView控件动态生成无限级树.txt 实现一个Asp.net自定义Back控件.txt 使用XML创建Excel文档.txt 鼠标停留在GridView某一行时颜色改变.txt...

    ASP.NET学习大全

    将DataGrid数据写入Excel文件.txt 揭开ASP.NET中Cookie编程的奥秘.txt 利用TreeView控件动态生成无限级树.txt 实现一个Asp.net自定义Back控件.txt 使用XML创建Excel文档.txt 鼠标停留在GridView某一行时颜色改变.txt...

    asp.net专家疑难解答200问源码

    128.如何把数据库中的数据以Excel文件的格式在显示浏览器中 129.如何给DataGrid控件添加个标题并实现分类显示 130.如何实现DataGrid控件中DropDownList控件的联动 131.DataGrid控件使用综合举例 第7章 数据绑定...

    asp.net专家疑难解答200问

    如何把数据库中的数据以Excel文件的格式在显示浏览器中 129.如何给DataGrid控件添加个标题并实现分类显示 130.如何实现DataGrid控件中DropDownList控件的联动 131.DataGrid控件使用综合举例 第7章 ...

    Visual C++程序开发范例宝典(光盘) 第四部分

    实例304 将DataGrid表格中的查询结果输出到Excel中 实例305 利用Word打印 实例306 利用Excel打印 10.10 控制打印 实例307 打印超长字符串自动换行 实例308 批量打印文档 实例309 实现横向打印 实例310 设置...

    Visual C++程序开发范例宝典(光盘) 第八部分

    实例304 将DataGrid表格中的查询结果输出到Excel中 实例305 利用Word打印 实例306 利用Excel打印 10.10 控制打印 实例307 打印超长字符串自动换行 实例308 批量打印文档 实例309 实现横向打印 实例310 设置...

    delphi 开发经验技巧宝典源码

    0142 使用FileWrite函数将缓冲区中的内容写入文件 91 4.10 其他函数 91 0143 使用Random函数产生7个随机数 91 0144 使用DiskFree函数返回磁盘驱动器的剩余空间 91 0145 如何使用Printer函数 92 0146 使用...

    delphi 开发经验技巧宝典源码06

    0142 使用FileWrite函数将缓冲区中的内容写入文件 91 4.10 其他函数 91 0143 使用Random函数产生7个随机数 91 0144 使用DiskFree函数返回磁盘驱动器的剩余空间 91 0145 如何使用Printer函数 92 0146 使用...

    Visual C++ 程序开发范例宝典 源码 光盘 part2

    8.3 更新数据 cc实例210 批量修改数据 cc实例211 将指定字段数据为空的记录添上数据 8.4 删除数据 cc实例212 删除单条数据 cc实例213 删除数据库中无用处的记录 8.5 视图 cc实例214 动态创建视图 cc...

    Visual C++程序开发范例宝典(PDF扫描版).part3

     cc实例211 将指定字段数据为空的记录添上数据   8.4 删除数据   cc实例212 删除单条数据   cc实例213 删除数据库中无用处的记录   8.5 视图   cc实例214 动态创建视图   cc实例215 通过视图...

    Visual C++程序开发范例宝典(PDF扫描版).part2

     cc实例211 将指定字段数据为空的记录添上数据   8.4 删除数据   cc实例212 删除单条数据   cc实例213 删除数据库中无用处的记录   8.5 视图   cc实例214 动态创建视图   cc实例215 通过视图...

Global site tag (gtag.js) - Google Analytics