.net导出Excel

        protected void btnPrint_Click(object sender, EventArgs e)
        {
            DataTable dt = DbHelperSQL.GetTable("select b.ProNumber as 产品编号,b.Name as 产品名称,b.kucun as 剩余库存,b.Price as 产品价格,a.buynum as 购买数量,(b.price*a.buynum) as 合计金额 from shopcar as a,Product as b where a.Proid=b.id and a.userid=" + Session["UserID"] + "");
            if (dt.Rows.Count == 0)
            {
                MsgBox.Show(this,"没有数据,导出失败");
            }
            else
            {
                //导出Excel
                ExcelImport(dt, "购物车"+DateTime.Now.ToString("yyyyMMddHHmm"));
            }
        }

        protected void ExcelImport(DataTable dt, string ExportFileName)
        {
            StringWriter sw = GetStringWriter(dt);
            //当前编码
            HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            //把输出的文件名进行编码
            string fileName = HttpUtility.UrlEncode(ExportFileName, System.Text.Encoding.UTF8);
            //文件名
            string str = "attachment;filename=" + fileName + ".xls";
            //把文件头输出,此文件头激活文件下载框
            HttpContext.Current.Response.AppendHeader("Content-Disposition", str);//http报头文件
            HttpContext.Current.Response.ContentType = "application/ms-excel";
            this.Page.EnableViewState = false;
            Response.Write(sw);
            Response.End();
        }
        private StringWriter GetStringWriter(DataTable dt)
        {
            StringWriter sw = new StringWriter();
            //读列名
            foreach (DataColumn dc in dt.Columns)
                sw.Write(dc.ColumnName + "\t");
            //读列值
            //重新的一行
            sw.Write(sw.NewLine);
            if (dt != null)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        sw.Write(dr[i].ToString() + "\t");
                    }
                    sw.Write(sw.NewLine);
                }
            }
            sw.Close();

            return sw;
        }

导出DataTable

对于大量的数据,导出Excel的方式。
     上篇博客介绍了导出Excel一种方式:通过DataTable
      这篇博客,介绍另一中导出Excel方式-通过DataGrid.
 
      导出Excel的过程:
      虽然这次是通过DataGrid导出Excel,但是不是从界面上DataGrid控件导出Excel。因为这次实际项目中的需求是把查询到的信息导出Excel,界面上的DataGrid控件只显示一部分,也就是正如上篇博客中提到控件实现了分页,所以不可以直接从界面控件导出。
      但是实现的过程一样,只不过,这次DataGrid是动态生成的。
       
      此导出过程用到StringWriter类(将文本信息写入字符串),HtmlTextWriter类:将标记字符和文本写入到 ASP.NET 服务器控件输出流。(命名空间:System.Web.UI)
      Control.RenderControl (HtmlTextWriter) ——将服务器控件的内容输出到所提供的 HtmlTextWriter 对象中。
     然后respose输出StringWriter对象。

 /// <summary>
    /// 导出Excel
    /// </summary>
    /// <param name="dt"></param>
    /// <param name="ExportFileName"></param>
    protected void ExcelExport(DataTable dt, string ExportFileName)
    {
        DataGrid dgExcel = new DataGrid();
        dgExcel.DataSource = dt;
        dgExcel.DataBind();

        HttpContext.Current.Response.Charset = "GB2312";
        string fileName = HttpUtility.UrlEncode(ExportFileName, System.Text.Encoding.UTF8);
        string str="attachment;filename="+fileName+".xls";
        HttpContext .Current .Response .ContentEncoding =System.Text.Encoding .UTF7;
        HttpContext.Current.Response .ContentType ="application/ms-excel";
        HttpContext .Current .Response .AppendHeader ("content-disposition",str);

         StringWriter sw = new StringWriter();
        HtmlTextWriter htmTextWriter = new HtmlTextWriter(sw);
        dgExcel .RenderControl(htmTextWriter );
        Response .Write(sw);
        Response .End();

    }
/// <summary>
    /// 导出excel按钮
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnExport_Click(object sender, EventArgs e)
    {
        DataTable dt = new SelectClassRoomManager().SelectClassRoomByTypeBuildNo(ddlClassType.SelectedValue, ddlBuildingID.SelectedValue);
        if (dt.Rows.Count == 0)
            Response.Write("<script>alert(‘没有数据,没有必要导出啊哈‘);</script>");
        else
        {

            //导出excel
            ExcelExport(dt, "教室");
        }
    }

其中用DataGrid导出Excel的时候,其导出的文件名编码:

string fileName = HttpUtility.UrlEncode(ExportFileName, System.Text.Encoding.UTF8);

其导出的当前文件编码:

HttpContext .Current .Response .ContentEncoding =System.Text.Encoding .UTF7;

但是这两种导出的Excel的文件不同,内容是一样的,但是其格式不同,使用上篇博客DataTable导出Excel,是真正的excel,而使用DataGrid导出的Excel,貌似有点类似记事本。还是贴的图,大家看看吧。

DataTable导出的Excel 如下:

原博地址

http://blog.csdn.net/yuebinghaoyuan/article/details/6703044

时间: 2024-12-22 06:55:12

.net导出Excel的相关文章

通用导出excel(可控制内容)

实体类 package util; import java.sql.Timestamp; public class Book { private int bookId; private String name; private String author; private float price; private String isbn; private String pubName; private Timestamp date; public Book() { } public Book(i

使用Apache POI导出Excel小结--导出XLS格式文档

使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI导出Excel小结--导出XLSX格式文档 使用Apache POI导出Excel--大数量导出 导出XLS格式文档 做企业应用项目难免会有数据导出到Excel的需求,最近在使用其,并对导出Excel封装成工具类开放出来供大家参考.关于Apache POI Excel基本的概念与操作我在这里就不啰嗦

利用poi导出Excel

import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.sql.Date;import java.util.ArrayList;import java.util.List; import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.

goalng导出excel(csv格式)

最近项目中有个小需求,需要将查询结果导出到excel.之间前java比较容易,使用POI很容易就能实现,查了下golang的文档,发现golang下边并没有导出excel的包,但是却有一个encoding/csv的包,看了下发现可以导出csv文件,大家都知道csv文件其实就是文本格式的excel文件,可以直接通过excel打开或是导入excel. 看起来挺好的,问题如愿解决,但是事实证明对已一个还不成熟的语言或是库最好还是先测一下的好.兴冲冲的卸了测试例子,成功导出了一个text.csv文件,一

java 操作 Excel,java导出excel

WritableWorkbook out = null; try { response.getServletResponse().reset(); ((HttpServletResponse) response.getServletResponse()).setHeader("Content-Disposition", "attachment;filename=export.xls"); response.getServletResponse().setConten

导出excel 0kb的问题

运行导出代码,浏览器提示下载框,但是大小为0kb,跟踪代码执行情况,在这一行就结束了wb = new XSSFWorkbook( is );没有异常抛出.(可能是tomcat层面把异常处理了) 总之,找了半天问题,终于发现了,原来是jar包版本不一致造成的.看poi-ooxml-3.8的pom: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId>

C#.Net 导出Excel 之单元格 相关设置

range.NumberFormatLocal = "@";     //设置单元格格式为文本range = (Range)worksheet.get_Range("A1", "E1");     //获取Excel多个单元格区域:本例做为Excel表头range.Merge(0);     //单元格合并动作worksheet.Cells[1, 1] = "Excel单元格赋值";     //Excel单元格赋值range

POI导出EXCEL经典实现

在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.而数据导出的格式一般是EXCEL或者PDF,我这里就用两篇文章分别给大家介绍下.(注意,我们这里说的数据导出可不是数据库中的数据导出!么误会啦^_^) 呵呵,首先我们来导出EXCEL格式的文件吧.现在主流的操作Excel文件的开源工具有很多,用得比较多的就是Apache的POI及JExcelAPI.这里我们用Apache POI!我们先去Apach

Java 导出Excel

比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI和Java Excel,现在以前一种为例子做一个讲解,后一个感兴趣的可以去自己查下资料,楼主也会贴出代码,但是!没有跑过,不保证成功率··· Jakarta POI 1.首先下载poi-3.6-20091214.jar,下载地址如下: 官方主页http://poi.apache.org/index.html API文档http://poi.apache.org/apidocs/index.html Maven 依赖: <

bos 第4 (区域excel批量导入、区域通用分页查询、分区的添加、分区多条件分页查询、分区导出excel)

BOS项目笔记 第4天 今天内容安排: 1.区域批量导入功能 jQuery OCUpload(一键上传插件).apache POI.pinyin4j 2.实现区域的分页查询 3.对分页代码重构 4.添加分区(combobox下拉框) 5.分区的组合条件分页查询 6.分区数据导出功能 1. 区域数据批量导入功能 1.1 一键上传插件使用 ajax不能做文件上传. 第一步:在jsp页面中引入插件的js文件 <script type="text/javascript" src=&quo