`

ASP.NET页面数据导出 excel表方法

    博客分类:
  • .NET
阅读更多
//1、由dataset生成 
public void CreateExcel(DataSet ds,string typeid,string FileName)  
  { 
   HttpResponse resp; 
   resp = Page.Response; 
   resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); 
   resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);    
   string colHeaders= "", ls_item=""; 
   int i=0; 
 
   //定义表对象与行对像,同时用DataSet对其值进行初始化 
   DataTable dt=ds.Tables[0]; 
   DataRow[] myRow=dt.Select("");  
   // typeid=="1"时导出为EXCEL格式文件;typeid=="2"时导出为XML格式文件 
   if(typeid=="1") 
   { 
    //取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符 
    for(i=0;i     colHeaders+=dt.Columns[i].Caption.ToString()+"\t"; 
    colHeaders +=dt.Columns[i].Caption.ToString() +"\n";    
    //向HTTP输出流中写入取得的数据信息 
    resp.Write(colHeaders);  
    //逐行处理数据   
    foreach(DataRow row in myRow) 
    { 
     //在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n 
     for(i=0;i      ls_item +=row[i].ToString() + "\t";      
     ls_item += row[i].ToString() +"\n"; 
     //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据     
     resp.Write(ls_item); 
     ls_item=""; 
    } 
   } 
   else 
   { 
    if(typeid=="2") 
    {  
     //从DataSet中直接导出XML数据并且写到HTTP输出流中 
     resp.Write(ds.GetXml()); 
    }     
   } 
   //写缓冲区中的数据到HTTP头文件中 
   resp.End(); 
 
 
  } 
//2、由datagrid生成 
public void ToExcel(System.Web.UI.Control ctl)   
  { 
   HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls"); 
   HttpContext.Current.Response.Charset ="UTF-8";     
   HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.Default; 
   HttpContext.Current.Response.ContentType ="application/ms-excel";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword 
   ctl.Page.EnableViewState =false;    
   System.IO.StringWriter  tw = new System.IO.StringWriter() ; 
   System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw); 
   ctl.RenderControl(hw); 
   HttpContext.Current.Response.Write(tw.ToString()); 
   HttpContext.Current.Response.End(); 
  } 
 
用法:ToExcel(datagrid1); 
 
//3、这个用dataview 
public void OutputExcel(DataView dv,string str) 
{ 
   // 
   // TODO: 在此处添加构造函数逻辑 
   // 
                           //dv为要输出到Excel的数据,str为标题名称 
   GC.Collect(); 
   Application excel;// = new Application(); 
   int rowIndex=4; 
   int colIndex=1; 
 
   _Workbook xBk; 
   _Worksheet xSt; 
 
   excel= new ApplicationClass(); 
   
   xBk = excel.Workbooks.Add(true); 
    
   xSt = (_Worksheet)xBk.ActiveSheet; 
 
   // 
   //取得标题 
   // 
   foreach(DataColumn col in dv.Table.Columns) 
   { 
    colIndex++; 
    excel.Cells[4,colIndex] = col.ColumnName; 
    xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[4,colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置标题格式为居中对齐 
   } 
 
   // 
   //取得表格中的数据 
   // 
   foreach(DataRowView row in dv) 
   { 
    rowIndex ++; 
    colIndex = 1; 
    foreach(DataColumn col in dv.Table.Columns) 
    { 
     colIndex ++; 
     if(col.DataType == System.Type.GetType("System.DateTime")) 
     { 
      excel.Cells[rowIndex,colIndex] = (Convert.ToDateTime(row[col.ColumnName].ToString())).ToString("yyyy-MM-dd"); 
      xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置日期型的字段格式为居中对齐 
     } 
     else 
      if(col.DataType == System.Type.GetType("System.String")) 
     { 
      excel.Cells[rowIndex,colIndex] = "'"+row[col.ColumnName].ToString(); 
      xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置字符型的字段格式为居中对齐 
     } 
     else 
     { 
      excel.Cells[rowIndex,colIndex] = row[col.ColumnName].ToString(); 
     } 
    } 
   } 
   // 
   //加载一个合计行 
   // 
   int rowSum = rowIndex + 1; 
   int colSum = 2; 
   excel.Cells[rowSum,2] = "合计"; 
   xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,2]).HorizontalAlignment = XlHAlign.xlHAlignCenter; 
   // 
   //设置选中的部分的颜色 
   // 
   xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Select(); 
   xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Interior.ColorIndex = 19;//设置为浅黄色,共计有56种 
   // 
   //取得整个报表的标题 
   // 
   excel.Cells[2,2] = str; 
   // 
   //设置整个报表的标题格式 
   // 
   xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Bold = true; 
   xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Size = 22; 
   // 
   //设置报表表格为最适应宽度 
   // 
   xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Select(); 
   xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Columns.AutoFit(); 
   // 
   //设置整个报表的标题为跨列居中 
   // 
   xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).Select(); 
   xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).HorizontalAlignment = XlHAlign.xlHAlignCenterAcrossSelection; 
   // 
   //绘制边框 
   // 
   xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Borders.LineStyle = 1; 
   xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,2]).Borders[XlBordersIndex.xlEdgeLeft].Weight = XlBorderWeight.xlThick;//设置左边线加粗 
   xSt.get_Range(excel.Cells[4,2],excel.Cells[4,colIndex]).Borders[XlBordersIndex.xlEdgeTop].Weight = XlBorderWeight.xlThick;//设置上边线加粗 
   xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[rowSum,colIndex]).Borders[XlBordersIndex.xlEdgeRight].Weight = XlBorderWeight.xlThick;//设置右边线加粗 
   xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,colIndex]).Borders[XlBordersIndex.xlEdgeBottom].Weight = XlBorderWeight.xlThick;//设置下边线加粗 
   // 
   //显示效果 
   // 
   excel.Visible=true; 
 
   //xSt.Export(Server.MapPath(".")+"\\"+this.xlfile.Text+".xls",SheetExportActionEnum.ssExportActionNone,Microsoft.Office.Interop.OWC.SheetExportFormat.ssExportHTML); 
   xBk.SaveCopyAs(Server.MapPath(".")+"\\"+this.xlfile.Text+".xls"); 
 
   ds = null; 
            xBk.Close(false, null,null); 
    
            excel.Quit(); 
            System.Runtime.InteropServices.Marshal.ReleaseComObject(xBk); 
            System.Runtime.InteropServices.Marshal.ReleaseComObject(excel); 
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xSt); 
            xBk = null; 
            excel = null; 
   xSt = null; 
            GC.Collect(); 
   string path = Server.MapPath(this.xlfile.Text+".xls"); 
 
   System.IO.FileInfo file = new System.IO.FileInfo(path); 
   Response.Clear(); 
   Response.Charset="GB2312"; 
   Response.ContentEncoding=System.Text.Encoding.UTF8; 
   // 添加头信息,为"文件下载/另存为"对话框指定默认文件名 
   Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(file.Name)); 
   // 添加头信息,指定文件大小,让浏览器能够显示下载进度 
   Response.AddHeader("Content-Length", file.Length.ToString()); 
    
   // 指定返回的是一个不能被客户端读取的流,必须被下载 
   Response.ContentType = "application/ms-excel"; 
    
   // 把文件流发送到客户端 
   Response.WriteFile(file.FullName); 
   // 停止页面的执行 
   
   Response.End(); 
} 

 
分享到:
评论

相关推荐

    ASP.NET页面数据导出excel

    本文将详细介绍四种从ASP.NET页面导出数据到Excel的方法。 方法一: 这种方法利用了ASP.NET的Response对象,将DataGrid或GridView等控件的数据直接输出为HTML格式,然后设置Content-Type为"application/vnd.ms-...

    asp.net+Ajax实现Excel文件导出

    本篇文章将详细讲解如何利用ASP.NET与Ajax技术实现在Web应用中导出Excel文件。 首先,ASP.NET是Microsoft开发的一个用于构建动态网站、Web应用程序和服务的框架。它基于.NET Framework,提供了丰富的服务器控件、...

    asp.net里导出excel表方法汇总

    ### ASP.NET 中导出 Excel 表的方法汇总 在 ASP.NET 应用程序中,导出数据到 Excel 是一个常见的需求。下面将详细介绍 ASP.NET 中几种常见的导出 Excel 的方法及其实现原理。 #### 方法一:使用 DataSet 直接生成 ...

    ASP.NET 分Sheet导出EXCEL 2003 导出引用dll

    在ASP.NET开发中,有时我们需要将大量的数据导出到Excel文件中,以便用户可以方便地进行数据管理和分析。特别是当数据量大到一个工作表无法容纳时,分Sheet导出就显得尤为重要。本文将深入探讨如何在ASP.NET环境中...

    asp.net 导出数据与图片到excel

    在.NET框架中,ASP.NET是一...综上所述,ASP.NET导出数据和图片到Excel涉及到的技术和注意事项广泛,需要综合运用编程技巧和库来实现高效、稳定且安全的导出功能。在实际开发中,应根据项目需求和环境选择合适的方法。

    C# asp.net导入和导出excel完整源码

    在C# ASP.NET开发中,导入和导出Excel文件是一项常见的需求,这通常涉及到与数据库交互,以便将数据从数据库导出到Excel表格或者从Excel表格导入到数据库中。本项目提供了一个完整的实例代码,可以帮助开发者快速...

    asp.net实现数据导入导出Excel 多Sheet表

    ### ASP.NET 实现数据导入导出到 Excel 中的多 Sheet 表 在 ASP.NET 开发过程中,经常需要处理数据的导入导出功能,特别是在需要将数据分门别类地存储到不同的工作表(Sheet)中时,这便涉及到 Excel 的多 Sheet ...

    asp.net中如何导出excel表的几个方法

    ASP.NET 中导出 Excel 表的几个方法 在 ASP.NET 开发过程中,经常需要将数据导出到 Excel 表中,以便于用户查看和分析数据。这篇文章将介绍三种在 ASP.NET 中导出 Excel 表的方法,分别使用 DataSet、DataGrid 和 ...

    ASP.NET导出数据到Excel

    #### 二、ASP.NET导出数据到Excel的实现方法 ##### 1. 使用Server对象 通过`Server.Transfer`或`Server.Execute`方法重定向到一个特定的页面,在该页面中生成Excel文件并返回给客户端。 ##### 2. 使用Response...

    asp.net导入和导出excel完整实例代码

    asp.net数据库中导出excel表,excel表数据导入到数据库中,这两个应用的完整实例代码,把相应的数据库连接该一下就可以用,基于C#。

    ASP.NET导出数据到Excel.rar

    这个压缩包"ASP.NET导出数据到Excel.rar"很可能包含了实现这一功能的代码示例或教程。 在ASP.NET中,导出数据到Excel主要涉及以下知识点: 1. **数据源**:首先,你需要一个数据源,可以是数据库(如SQL Server、...

    asp.net导出数据到excel

    在ASP.NET中,将数据导出到Excel是一项常见的任务,特别是在数据分析、报表生成或数据交换等场景下。这里我们将深入探讨如何使用C#语言来实现这个功能,以及处理大量数据时的一些策略。 首先,让我们了解基础步骤。...

    asp.net导出excel(带图片)

    ### 知识点一:ASP.NET 中导出 Excel 文件的基本流程 1. **创建 Excel 工作簿**: - 使用 `Microsoft.Office.Interop.Excel` 命名空间中的类来创建一个 Excel 工作簿对象。 - 示例代码片段中通过 `new Microsoft....

    【ASP.NET编程知识】Asp.Net使用Npoi导入导出Excel的方法.docx

    "ASP.NET使用Npoi导入导出Excel的方法" 在ASP.NET编程中,导入和导出Excel文件是一种非常常见的功能。Npoi是一个开源的库,能够帮助开发者轻松地实现Excel文件的导入和导出。本文将详细介绍如何使用Npoi在ASP.NET中...

    asp.net里导出excel表方法汇总.rar

    以下是一些常见的ASP.NET导出Excel的方法及其详细解释: 1. **Response.Write方法**: 这是最基础的导出方式,通过HTTP响应直接输出Excel文件内容。首先,你需要创建一个HTML表格,然后设置响应头,使其指示浏览器...

    Asp.net 导出Excel文件总结(导出csv、Office COM组建、Jet OLEDB、NPOI)

    在Asp.net开发中,有时候我们需要将数据导出到Excel文件以便用户下载或者进行进一步的数据处理。本篇文章将总结四种常见的导出...通过实践,开发者可以更好地掌握在Asp.net中导出Excel文件的技巧,提高项目开发效率。

    asp.net 导出GridView里的数据到Excel中

    ### ASP.NET GridView数据导出到Excel的实现方法 #### 一、导出概述 在Web开发中,尤其是在使用ASP.NET进行开发时,经常会有将数据显示在GridView中,并允许用户将这些数据导出为Excel文件的需求。这种功能对于...

    asp.net导入导出excel表,导入到sql数据库

    以上就是关于“asp.net导入导出excel表,导入到sql数据库”的详细解析,涵盖了从数据的导出到导入的整个流程,希望对你的项目有所帮助。在实际开发中,务必注意错误处理和异常捕获,确保数据的完整性和安全性。

    asp.net中用于导出excel需要的NPOI.dll

    在ASP.NET开发中,有时我们需要将数据导出为Excel格式供用户下载,这时可以借助第三方库来实现,其中NPOI.dll就是一个广泛使用的工具。NPOI是一个强大的库,允许开发者在.NET环境中读写Microsoft Office文件,包括...

    ASP.NET 导入、导出Excel (支持Office Excel 2003、 2007)

    "ASP.NET 导入、导出Excel (支持Office Excel 2003、2007)"是一个关键的话题,它涉及到如何在Web应用程序中实现对Excel文件的读取和写入,以满足数据交换和报表生成的需求。下面我们将详细探讨这个主题。 一、...

Global site tag (gtag.js) - Google Analytics