Asp.Net中如何将数据导出到excel

一、定义文档类型、字符编码  


   Response.Clear();

   Response.Buffer= true;

   Response.Charset="utf-8";  

   //下面这行很重要, attachment 参数表示作为附件下载,您可以改成 online在线打开

   //filename=FileFlow.xls 指定输出文件的名称,注意其扩展名和指定文件类型相符,可以为:.doc    .xls    .txt   .htm  

   Response.AppendHeader("Content-Disposition","attachment;filename=FileFlow.xls");

   Response.ContentEncoding=System.Text.Encoding.GetEncoding("utf-8");  

   //Response.ContentType指定文件类型 可以为application/ms-excel    application/ms-word    application/ms-txt    application/ms-html    或其他浏览器可直接支持文档 

   Response.ContentType = "application/ms-excel";

   this.EnableViewState = false;  

  二、定义一个输入流  


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

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

  三、将目标数据绑定到输入流输出  


   this.RenderControl(oHtmlTextWriter);   

   //this 表示输出本页,你也可以绑定datagrid,或其他支持obj.RenderControl()属性的控件  

   Response.Write(oStringWriter.ToString());

   Response.End();  

  总结:本例程在Microsoft Visual Studio .NET 2003平台下测试通过,适用于C#和VB,当采用VB的时候将 this 关键字改成 me 。 



第2种:

众所周知,WEB上的打印是比较困难的,常见的WEB上打印的方法大概有三种:

  1、直接利用IE的打印功能。一般来说,这种方法可以做些扩展,而不是单单的调用javascript:print()这样简单,比如,可以使用如下代码:

<OBJECT
id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0>
</OBJECT>
<input
type=button value=打印 onclick=document.all.WebBrowser.ExecWB(6,1)>
<input
type=button value=直接打印 onclick=document.all.WebBrowser.ExecWB(6,6)>
<input
type=button value=页面设置 onclick=document.all.WebBrowser.ExecWB(8,1)>
<input
type=button value=打印预览 onclick=document.all.WebBrowser.ExecWB(7,1)>

  这种方法可以适用于简单的数据打印,对系统要求不高,但不足之处在于可以控制的能力比较差,比如处理分页等问题。

  2、利用水晶报表或其他第三方工具,如微软的Reporting service。水晶报表或其他第三方控件的打印,一般是导出到Excel,WORD,PDF等再进行打印的,效果比较好,但编程比较复杂,控制起来也不大方便,而且这些工具都是要收费的。

  3、将数据库的数据或要打印的内容导出到Excel,Word中去打印。使用这种方法,可以在服务端或者客户端进行。在服务端使用的话,要求服务端要安装Word,Excel,在客户端使用的话,要求客户端在IE的安全设置上有一定要求。使用这种方法,可适应性比较强,控制较好。本文将以在ASP.NET中使用Excel为例子,介绍如何将数据导出到Excel的几种方法。

  首先,先介绍在服务端使用Excel的方法。要在服务器端使用Excel,必须要求服务器端安装Excel,并且要求一定的访问权限。比如,需要添加<identity impersonate="true"/>到web.config中。在本文中,要给予WEB目录可写的权限。

  接下来,使用VS.NET 2003新建一个VB.NET的工程,并添加引用。由于我们要使用的是Excel,所以添加一个关于COM的应用,这里添加的是Microsoft Excel Object Library,之后,添加的代码如下:

Imports System.Runtime.InteropServices.Marshal
Imports Office
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 '以COM方式处理Excel
 Dim oExcel As New Excel.Application
 Dim oBooks As Excel.Workbooks, oBook As Excel.Workbook
 Dim oSheets As Excel.Sheets, oSheet As Excel.Worksheet
 Dim oCells As Excel.Range
 Dim sFile As String, sTemplate As String
 '定义一个datatable
 Dim dt As DataTable = CType(Application.Item("MyDataTable"), DataTable)

 sFile = Server.MapPath(Request.ApplicationPath) & "\MyExcel.xls"
 '定义模版文件
 sTemplate = Server.MapPath(Request.ApplicationPath) & "\MyTemplate.xls"
 oExcel.Visible = False
 oExcel.DisplayAlerts = False
 '定义一个新的工作簿
 oBooks = oExcel.Workbooks
 oBooks.Open(Server.MapPath(Request.ApplicationPath) & "\MyTemplate.xls") oBook = oBooks.Item(1)
 oSheets = oBook.Worksheets
 oSheet = CType(oSheets.Item(1), Excel.Worksheet)

 '命名该sheet
 oSheet.Name = "First Sheet"
 oCells = oSheet.Cells
 '调用dumpdata过程,将数据导入到Excel中去
 DumpData(dt, oCells)
 '保存
 oSheet.SaveAs(sFile)
 oBook.Close()

 '退出Excel,并且释放调用的COM资源
 oExcel.Quit()
 ReleaseComObject(oCells) : ReleaseComObject(oSheet)
 ReleaseComObject(oSheets) : ReleaseComObject(oBook)
 ReleaseComObject(oBooks) : ReleaseComObject(oExcel)
 oExcel = Nothing : oBooks = Nothing : oBook = Nothing
 oSheets = Nothing : oSheet = Nothing : oCells = Nothing
 System.GC.Collect()
 Response.Redirect(sFile)
End Sub

'将DATATABLE的内容导出到Excel的单元格中去
Private Function DumpData(ByVal dt As DataTable, ByVal oCells As Excel.Range) As String
 Dim dr As DataRow, ary() As Object
 Dim iRow As Integer, iCol As Integer

 '输出列标题
 For iCol = 0 To dt.Columns.Count - 1
  oCells(2, iCol + 1) = dt.Columns(iCol).ToString
 Next

 '将数据导出到相应的单元格
 For iRow = 0 To dt.Rows.Count - 1
  dr = dt.Rows.Item(iRow)
  ary = dr.ItemArray
  For iCol = 0 To UBound(ary)
   oCells(iRow + 3, iCol + 1) = ary(iCol).ToString
   Response.Write(ary(iCol).ToString & vbTab)
  Next
 Next
End Function
End Class


  在上面的代码中,首先,先定义了一些关于Excel的对象,如application,workbook,sheets,sheet等,这些都是在使用Excel的COM对象时,必不可少的。之后,我们事先先定义了一个Excel的模版文件,并且用Excel先打开这个模版文件,再调用一个自定义的过程dumpdata。在这个自定义的过程中,将datatable中的数据,逐一导入到Excel的单元格中去。读者自己可以慢慢体会下,上面的代码中,是如何将datatable中的数据导出到Excel中去的。程序运行后,可以在当前的工作目录下,生成名为myExcel.xls的Excel文件,如下图:



相关资源:
http://www.codeproject.com/aspnet/DGExdel.asp

asp.net】将GridView数据导出Excel 概要:    中午睡了一会,醒来的时候看到老师叫我去办公室,需求是这样的,把excel表中的每个同学,判断图片目录中是否有对应的照片(图片的名字用的学号或身份证号码) 没有对应图片的学生记录,存入自己的数据表中或直接输出,最后下载成Excel 于是回去后他把Excel和照片发给我 正文开始:  虽然没接触过Excel数据导入和将GridView数据导出Excel,在 阅读详情

相关推荐

ASP.NET实现数据导出Excel的全攻略

htmltable {th, td {th {pre {简介:在ASP.NET导出网页数据Excel是一项常见需求,特别是在数据分析和报表生成等场景。本文将详细介绍使用C#实现该功能的方法和安全性考虑。首先,将探讨使用服务器端技术或JavaScript导出Excel的基本方法。随后,会深入介绍服务器端导出Excel时推荐的流式导出方法,如创建CSV文件和使用Open XML SDK生成xlsx文件。

weixin_42578963的博客 945

.net(dataset)输出流导出excel

.net(dataset)输出流导出excel(无需生成模版excel文件,直接输出数据导出excel表格)

ASP.NET导出Excel数据的完整示例源码

ASP.NET是一个流行的服务器端网页应用程序框架,由微软开发。它用于构建动态网页和网络应用程序。ASP.NET支持多种编程语言,包括C#、VB.NET等,并且与.NET框架紧密集成。该技术的核心特性包括:基于服务器控件的模型,事件驱动的编程范式以及页面生命周期的概念。为了提高工作效率和保持一致性,自定义视图和模板的使用是不可或缺的。这可以确保所有用户在打开Excel文件时看到相同的布局和格式。以下是创建和应用自定义视图的示例:// 创建自定义视图。

weixin_42576467的博客 705

基于ASP.NET实现的DataTableToExcel(Excel导入导出)实例源码

基于C#+ASP.NET实现DataTableToExcel(Excel导入导出)类库,Excel与DataTable互操作示例程序。

asp.net导出数据Excel的两种方法

//第一种HttpResponse Page.Responsepublic void CreateExcel(DataTable dt,string FileName) { string FileType = "application/ms-excel"; Response.Clear(); Response.Charset = "UTF-8...

weixin_42353499的博客 1万+

asp.net中怎么导出excel

这个类可以很好的控制Excel。读出内容想怎么导就怎么导 /// <summary> /// Excel处理类 /// </summary> public class ExcelHander { public ExcelHander() { // // TODO: Add constructor logic here // } private string ...

banglvfei0870的博客 172

asp.net导出Excel的方法

Asp.net导出excel的我认为好的方法: 前提条件: using System.Data.SqlClient;    //SqlConnection 用到这个命名空间 using System.Data;                    //DataSet 用到这个命名空间 using System.IO;                        //FileStream

mengyulove的专栏 564

ASP.Net数据导出Excel的几种方法

方法一通过GridView(简评:方法比较简单,但是只适合生成格式简单的Excel,且无法保留VBA代码),页面无刷新 aspx.cs部分 代码如下: using System;using System.Collections;using System.Configuration;using System.Data;using System.Web;using Sy...

weixin_30888413的博客 1309

ASP.NET数据导出Excel

ASP.NET数据导出Excel》 开发工具与关键技术:Visual Studio / .NET 作者:肖春庆 撰写时间:2019年04月03日 在使用软件过程中,我们会将自己需要用的数据,以Excel工作表的形式进行数据导出,以便数据的使用或者光看。 引用NPOI插件,把NPOI添加在项目中,并引用进来(图1)。 选择项目路径,找到NPOI.dll确定引用,引用成功时,在资源管理器中的引用中...

weixin_44547775的博客 6223

导出EXCEL汇编】asp.net数据导出excel中,并设置其格式

第1篇:asp.net数据导出excel中,并设置其格式 -----------------------------------------------------------    添加引用:Microsoft   Excel   11.0   Object   Library ;   添加:using Microsoft.Office.Interop.Excel;   一、

TianGaojie123abc的专栏 1808

asp.net数据导出Excel

参照文章 asp.net前台请参照链接文章 asp.net后台 //导出事件 protected void export_Click(object sender, EventArgs e) { //导出所有的检索数据 message.Text = ""; //开始时间 string fromData = fromDate.Text.Trim(); //结束时间 string toData = toDate

weixin_44084713的博客 349

asp.net导出数据Excel的三种方法

Asp.net导出Excel也是个老生常谈的问题,在此归纳一下。 第一种是比较常用的方法。是利用控件的RenderControl功能,得到该控件生成的HTML,然后以Excel文件的类型输出到客户端。这种方法生成的其实是个HTML文件,只不过Excel支持HTML格式,所以使用起来似乎和真正的Excel文件没什么两样,但它终究不是Excel格式,它不能当作数据源供其他程序调用。 这种

TianGaojie123abc的专栏 1161

asp.net导出数据Excel的方法(完全无组件,不用调用Excel.exe)

asp.net导出数据Excel的方法(完全无组件,不用调用Excel.exe), http://www.pccode.net/info/2011/03/06/20110306-7149.html

WYZSC的专栏 2857

asp.net导出数据Excel的几种方法(2/3)

     继续前文,第二种方法是利用Excel的Com接口库来完成,这种方法的优点是功能强大,可像使用Excel程序一样来操作Excel文件,缺点是需要服务器安装Excel程序,且需要一定的安全配置。一、准备工作:1)安装Microsoft Excel2)Com的安全设置。   在命令行输入DCOMCNFG ,进入组件服务设置界面,如图:打到Micorosoft Excel

cpp2017(慕白兄)的专栏 8492

asp.net导出Excel文件之方法比较

web导出Excel也不是什么新鲜的话题了,到网上一查,结果一大堆。可是要挑选一个好的、合适的方法也不容易。再加上自己也没有真正的做过这方面的导出工作,到底选那种方法好呢?最近一个一个方法地试了一边,小结出来给大家做个参考。测试题目:通过一个模板,导出Excel文件。(模板结构较复杂,有公式、样式、合并行等)(一)、首先想到的是用服务器端的Excel软件com来生成目标Excel。    

zuzubo的专栏 5059

[转]asp.net导出数据Excel的三种方法

原文出处:asp.net导出数据Excel的几种方法(1/3) 、asp.net导出数据Excel的几种方法(2/3)、asp.net导出数据Excel的几种方法(3/3) asp.net导出Excel也是个老生常谈的问题,在此归纳一下。 第一种是比较常用的方法。是利用控件的RenderControl功能,得到该控件生成的HTML,然后以Excel文件的类型输出到客户端。这种方法...

weixin_30741653的博客 426

【译】Asp.Net 导出 Excel 数据的9种方案

简介 Excel 的强大之处在于它不仅仅只能打开Excel格式的文档,它还能打开CSV格式、Tab格式、website table 等多钟格式的文档。它具备自动识别行号,字符,格式化数字等功能,例如:如果你在Excel 单元格中输入数字 "123456789012" 会自动转化为"1.23457E+11"。 背景介绍 正因为Excel的强大和易用,大家都喜欢将数据导出Excel 备用。这...

weixin_30387423的博客 550
上一篇: 文件操作
下一篇: 我的系统属性也个性(原作中有几处错误,为尊重原作特在原文最后更正)
weixin_33810302
博客等级 码龄11年 4571粉丝 148原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值