ASP.NET导出EXCEL类
说明:可以导出ASP.NET页面和DATAGRID(WebControl)数据,可以导出表单头
using System;
using System.Data;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Diagnostics;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Collections;
namespace bookstore
{
///
/// Excel 的摘要说明。
///
public class Excel
{
public Excel()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public void SaveToExcel(Page myPage, DataTable dt,DataGrid DG,string myExcelHeader,HtmlTable Tab,string myFileName)
{
HttpResponse resp;
resp=myPage.Response;
resp.ContentEncoding=Encoding.GetEncoding("GB18030");
resp.AppendHeader("Content-Disposition","attachment;filename="+myFileName+".xls");
resp.ContentType="application/ms-excel";
string colHeaders = "\t\t\t\t"+ myExcelHeader +"\n\n\n";
colHeaders+=tableHeader(Tab)+"\n";
StringBuilder sb=new StringBuilder();
int mycol=DG.Columns.Count;
ArrayList myAL=new ArrayList();
for(int i=0;i {
colHeaders +=DG.Columns[i].HeaderText+"\t";
myAL.Add(((System.Web.UI.WebControls.BoundColumn)(DG.Columns[i])).DataField);
}
colHeaders += "\n";
sb.Append(colHeaders);
int myrow=dt.Rows.Count;
for(int k=0;k {
foreach(string field in myAL)
{
sb.Append(dt.Rows[k][field]);
sb.Append("\t");
}
sb.Append("\n");
}
colHeaders=sb.ToString();
colHeaders=colHeaders+"\n";
resp.Write(colHeaders);
resp.End();
resp.Clear();
resp.Close();
}
/*得到表单头子*/
/*表单头子有TABLE组成,偶次项排列,TABLE在HTML中加 RUNAT=SERVER*/
public string tableHeader(HtmlTable Tab)
{
int iCols=Tab.Rows[0].Cells.Count;
int iRows=Tab.Rows.Count;
string str="";
for(int row=0;row {
for(int col=0;col {
if(col%2==1)//取偶次项的控件数据(目前只有TextBox和DropDownList,没有包含LABEL)
{
try
{
if(Tab.Rows[row].Cells[col].Controls[0].ToString()=="System.Web.UI.LiteralControl")
{
if(Tab.Rows[row].Cells[col].Controls[1].ToString()=="System.Web.UI.WebControls.TextBox")
{
str+=((System.Web.UI.WebControls.TextBox)(Tab.Rows[row].Cells[col].Controls[1])).Text+"\t";
}
if(Tab.Rows[row].Cells[col].Controls[1].ToString()=="System.Web.UI.WebControls.DropDownList")
{
str+=((System.Web.UI.WebControls.ListControl)(((System.Web.UI.WebControls.DropDownList)((Tab.Rows[row].Cells[col].Controls[1]))))).SelectedValue+"\t";
}
}
else
{
if(Tab.Rows[row].Cells[col].Controls[0].ToString()=="System.Web.UI.WebControls.TextBox")
{
str+=((System.Web.UI.WebControls.TextBox)(Tab.Rows[row].Cells[col].Controls[0])).Text+"\t";
}
if(Tab.Rows[row].Cells[col].Controls[0].ToString()=="System.Web.UI.WebControls.DropDownList")
{
str+=((System.Web.UI.WebControls.ListControl)(((System.Web.UI.WebControls.DropDownList)((Tab.Rows[row].Cells[col].Controls[0]))))).SelectedValue+"\t";
}
}
}
catch
{
str+=Tab.Rows[row].Cells[col].InnerHtml+"\t";
}
if((col+1)%iCols==0)
{
str+="\n";
}
}
else
{
str+="\t"+Tab.Rows[row].Cells[col].InnerHtml+"\t";
}
}
}
return(str);
}
}
}
ASP.NET导出EXCEL类
3星 · 超过75%的资源 需积分: 0 60 浏览量
更新于2008-04-16
收藏 1KB RAR 举报
ASP.NET是一种基于.NET Framework的服务器端编程模型,用于构建动态Web应用程序。在ASP.NET中,导出Excel功能常被用于将网页上的数据,如GridView控件中的数据,导出为Excel文件,方便用户进行数据分析和存储。GridView是ASP.NET提供的一种用于显示数据集的控件,它可以轻松地从数据库中获取数据并以表格形式展示。
在ASP.NET中实现导出Excel功能,主要涉及到以下几个关键知识点:
1. **Excel文件格式**:Excel文件有两种主要格式,即.xls(旧版的BIFF格式)和.xlsx(新版本的Open XML格式)。现代的应用通常使用.xlsx格式,因为它支持更多的特性和更小的文件大小。
2. **创建Excel工作簿**:在ASP.NET中,可以使用Microsoft Office Interop库(需要在服务器上安装Office)或者开源库如EPPlus、NPOI来创建和操作Excel文件。InterOp库直接操作Excel应用程序,而EPPlus和NPOI则使用Open XML SDK,无需安装Office即可工作。
3. **GridView与Excel**:GridView控件可以直接绑定到数据源,如SQL Server数据库,或者通过编程方式填充数据。导出时,可以遍历GridView的行和单元格,将数据写入Excel工作表。
4. **数据转换**:将GridView数据转换为Excel格式,需要处理数据类型转换,如日期、数字等。Excel对这些格式有特定的要求,需要正确设置单元格的样式和格式。
5. **样式和格式化**:在导出过程中,可能需要保持GridView的样式,如字体、颜色、边框等。这可以通过设置Excel单元格的样式属性来实现。
6. **文件流与响应**:在ASP.NET中,使用Response对象将Excel文件作为HTTP响应发送到客户端。设置Response的ContentType为“application/vnd.ms-excel”,然后将Excel数据写入Response.OutputStream,最后调用Response.End()结束响应。
7. **内存优化**:为了避免内存占用过大,可以使用流式处理,即创建Excel文件后不保存到磁盘,而是直接写入Response,减少服务器资源消耗。
8. **安全性与兼容性**:考虑到不同用户的系统环境和浏览器兼容性,可能需要提供多种导出选项,如CSV格式,它可以在大多数文本编辑器和电子表格程序中打开。
9. **错误处理**:在导出过程中可能出现各种异常,如数据格式错误、文件写入失败等,需要适当的错误处理机制,确保用户体验。
10. **性能优化**:对于大量数据,导出可能需要时间,可以考虑分批处理,或者提供进度提示,避免用户长时间等待。
以上就是ASP.NET中导出Excel的相关知识点。在实际开发中,根据项目需求和资源限制,可以选择合适的方法和技术来实现这一功能。在使用开源库时,还需要关注其版本更新和社区支持,以确保代码的稳定性和可维护性。
wm85
- 粉丝: 5
- 资源: 16
最新资源
- 基于TypeScript的数据库实训平台前端设计源码
- 基于SSM框架与微信小程序的图书馆自习室座位预约管理系统设计源码
- 基于SL4J格式的C++日志管理设计源码
- 基于yolov3-tiny-bubbliiiing和Tkinter的实时物体检测界面设计源码
- 基于《JS DOM 编程艺术》(第2版)的JavaScript DOM编程设计源码学习
- ADASIS V2&V3协议
- 基于HTML、JavaScript等技术的全栈前端学习笔记设计源码
- 基于Vue的网易云音乐高仿设计源码
- 基于C语言的串口数据流处理库设计源码
- PTA实验和作业成绩.rar
- 基于SpringBoot+Vue的校园闲置物品租售平台设计源码
- 基于Vue3+AntDesign4的ivzone CRUD组件库及后台管理模板设计源码
- 基于EVE ESI的合同估价与吉他价格计算器设计源码
- 基于Vue-cli3的仿去哪儿旅行APP设计源码
- 基于Windows日志监听的SQLServer登录失败IP黑名单自动添加设计源码
- 基于Java和最新框架的在线课程教育系统设计源码