.net客户端导出Excel实现代码及注意事项
2023-06-13 09:14:45 时间
客户端导出excel
复制代码代码如下:
/*
*将DataGrid导出为Excel文件
*
*@paramstrTitle 文件标题
*@paramdgData 待导出的DataGrid
*@paramiStartCol 起始列序号
*@paramiEndCol 结束列序号
*
*创建人: calvin
*创建日期:2005-10-08
*修改人:
*修改日期:
**/
functionDataGrid2Excel(strTitle,dgData,iStartCol,iEndCol)
{
//定义ExcelApplicaitonObject
varappExcel=null;
//当前激活的工作簿
varcurrentWork=null;
varcurrentSheet=null;
try
{
//初始化application
appExcel=newActiveXObject("Excel.Application");
appExcel.Visible=true;
}
catch(e)
{
window.alert("PleaseInstallExcelFirst");
return;
}
//获取当前激活的工作部
currentWork=appExcel.Workbooks.Add();
currentSheet=currentWork.ActiveSheet;
//填充excel内容
//设置标题
currentSheet.Cells(1,1).Value=strTitle;
currentSheet.Cells(1,1).Value=dgData.innerText;
window.alert(dgData.innerHTML);
//填充内容
for(variRow=0;iRow<dgData.rows.length-1;iRow++)
{
//显示指定列的内容
for(variCol=iStartCol;iCol<=iEndCol;iCol++)
{
currentSheet.Cells(iRow+2,iCol+1).Value=
dgData.rows[iRow].cells[iCol].innerText;
}
}
}
/**************************************************************************/
/**
*导出dgData中0-3列的数据到excel文件中
**/
functionToExcel()
{
DataGrid2Excel("使用javascript导出excel的例子",document.getElementsById("dgData"),0,3);
}这种方法的缺点是:
(1)了能够在客户端调用Excel.Application,需要把IE的安全级别设为“低”。
(2)与方法一相同,还是只能导出当前显示在datagrid里面的数据,无法导出分页的数据。
--------------------------------------------------------------------------------
终极解决方案:将DataTable导出为excel
好,让我们快点结束这篇无聊的post。一般来说,页面上的datagrid是以查询得到的一个DataTable为数据源的。那么为了把全部数据导入excel中,我们只要把DataTable数据源输出为excel就可以了。
/**////<summary>
///把DataTable内容导出伟excel并返回客户端
///</summary>
///<paramname="dgData">待导出的DataTable</param>
///创建人:陈文凯
///创建日期:2005年10月08日
///修改人:
///修改日期:
publicstaticvoidDataTable2Excel(System.Data.DataTabledtData)
{
System.Web.UI.WebControls.DataGriddgExport=null;
//当前对话
System.Web.HttpContextcurContext=System.Web.HttpContext.Current;
//IO用于导出并返回excel文件
System.IO.StringWriterstrWriter=null;
System.Web.UI.HtmlTextWriterhtmlWriter=null;
if(dtData!=null)
{
//设置编码和附件格式
curContext.Response.ContentType="application/vnd.ms-excel";
curContext.Response.ContentEncoding=System.Text.Encoding.UTF8;
curContext.Response.Charset="";
//导出excel文件
strWriter=newSystem.IO.StringWriter();
htmlWriter=newSystem.Web.UI.HtmlTextWriter(strWriter);
//为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的DataGrid
dgExport=newSystem.Web.UI.WebControls.DataGrid();
dgExport.DataSource=dtData.DefaultView;
dgExport.AllowPaging=false;
dgExport.DataBind();
//返回客户端
dgExport.RenderControl(htmlWriter);
curContext.Response.Write(strWriter.ToString());
curContext.Response.End();
}
}
需要注意的是,导出excel之前要把datatable的列名更改为客户要求的文字,就ok了。因为是从DataTable导出的,所以这种方法解决了分页数据的问题,堪称终极解决方案。
相关文章
- 导出的Excel名字乱码_恢复的excel文件乱码
- 最流行的 .NET 反编译工具合集
- net framework 4.0安装失败0x80240037_0x80300001
- 【水一篇】骚操作之net 6的winform启动的同时启动Net 6 WebApi【同一套代码】
- 宝塔面板Linux系统通过Docker部署VB.NET Asp.Net Core WebAPI应用
- VB.NET MDB数据库导出到Excel表生成分析报表
- .net 温故知新:【10】.NET ORM框架EFCore使用入门之CodeFirs、DBFirst
- Rider 2022.3.3(跨平台.NET IDE集成开发)
- 报表 MySQL导出Excel数据报表的指南(mysql导出excel)
- 轻松实现Excel导入MySQL数据库(excel导入mysql数据库)
- .net下的数据库连接SQLServer驱动在.NET平台下的数据库连接简明介绍(sqlserver驱动在)
- .Net搭配Redis解决高性能应用问题(.net redis)
- Oracle数据快速导出至Excel表格(oracle导出excel)
- NET与Oracle结合出现新的可能(.net oracle)
- 通过Excel表驱动Oracle实现数据分析(excel表oracle)
- 从Excel表到Oracle数据库精彩转变(excel转oracle)
- Excel数据快速导入Oracle数据库(excel入oracle)
- Net和MySQL互相受益的强大组合(.net 与mysql)
- 递归输出ASP.NET页面所有控件的类型和ID的代码
- .Net中导出数据到Excel(asp.net和winform程序中)
- ASP.NET用DataSet导出到Excel的方法
- js导出table数据到excel即导出为EXCEL文档的方法
- asp.net读取excel文件的三种方法示例