A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© duanhuilin 中级黑马   /  2012-11-19 10:24  /  2556 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ASP.NET(C#)将数据导出到Word或Excel
命名空间:
using System.IO;
using System.Text;
将DataGrid的数据导出到Excel
         string excelname="excel文件名";
         HttpContext.Current.Response.Charset = "GB2312";
         HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
         HttpContext.Current.Response.ContentType = "application/ms-excel";
         HttpContext.Current.Response.AppendHeader("Content-disposition", "attachment;filename=" + excelname + ".xls");
         dr1.Page.EnableViewState = false;
         StringWriter sw = new StringWriter();
         HtmlTextWriter tw = new HtmlTextWriter(sw);
         dr1.RenderControl(tw);
         HttpContext.Current.Response.Write(sw.ToString());
         HttpContext.Current.Response.End();
将DataGrid的数据导出到Word
         string excelname="word文件名";
         HttpContext.Current.Response.Charset = "GB2312";
         HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
         HttpContext.Current.Response.ContentType = "application/ms-winword";
         HttpContext.Current.Response.AppendHeader("Content-disposition", "attachment;filename=" + excelname + ".doc");
         dr1.Page.EnableViewState = false;
         StringWriter sw = new StringWriter();
         HtmlTextWriter tw = new HtmlTextWriter(sw);
         dr1.RenderControl(tw);
         HttpContext.Current.Response.Write(sw.ToString());
         HttpContext.Current.Response.End();

评分

参与人数 1技术分 +1 收起 理由
张文 + 1 最好能来点注释。

查看全部评分

2 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
朋友,我这是我常用的将数据到出EXCEL,并分页显示的方法,感觉还挺好用的!发给你,互相学习!!
  1. protected void btnExcel_Click(object sender, EventArgs e)
  2.     {
  3.         //导出数据到EXCEL
  4.         string modeFile = Server.MapPath("PrintProvider.xls");
  5.         string tempFile = Server.MapPath("ProviderTemp.xls");//取Excel报表模板
  6.         File.Copy(tempFile, modeFile, true);
  7.         
  8.         Excel.Application xExcel = new Excel.ApplicationClass();//创建excel对象
  9.         Excel.Workbook xBook = xExcel.Workbooks.Open(modeFile, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
  10.         Excel.Worksheet xSheet = (Excel.Worksheet)xBook.Worksheets[1];

  11.         try
  12.         {
  13.             string sqlStr;         

  14.             sqlStr = "select * from PM_notice";
  15.             DataTable dt = Class1.GetDsFromSql(sqlStr).Tables[0];
  16.             //查询结果数据
  17.             int count = dt.Rows.Count;
  18.             int page = 0;
  19.             if (count % 15 == 0)
  20.             {
  21.                 page = count / 15;
  22.             }
  23.             else
  24.             {
  25.                 page = count / 15 + 1;
  26.             }
  27.             if (page == 0) page = 1;

  28.             int sheet = 1;
  29.             int tempSheet = sheet;
  30.             int p;
  31.             for (p = 1; p < page; p++)
  32.             {
  33.                 xSheet = (Excel.Worksheet)xBook.Worksheets[tempSheet];
  34.                 xSheet.Copy(Type.Missing, xBook.Worksheets[tempSheet]);
  35.                 tempSheet++;
  36.             }
  37.             xBook.Save();
  38.             int index = 0;
  39.             for (p = 0; p < page; p++)
  40.             {
  41.                 xSheet = (Excel.Worksheet)xBook.Worksheets[sheet++];

  42.                 int row = 3;//jjjjjjjjjjjjj
  43.                 for (int i = p * 15; i < (p + 1) * 15 && i < count; i++)
  44.                 {
  45.                     index++;
  46.                     xSheet.Cells[row, 1] = index.ToString();//序号列
  47.                     xSheet.Cells[row, 2] = dt.Rows[i]["title"].ToString();
  48.                     xSheet.Cells[row, 3] = dt.Rows[i]["content"].ToString();
  49.                     xSheet.Cells[row, 4] = dt.Rows[i]["uploader"].ToString();
  50.                     xSheet.Cells[row, 5] = dt.Rows[i]["uploadTime"].ToString();
  51.                     xSheet.Cells[row, 6] = dt.Rows[i]["deadline"].ToString();
  52.                     xSheet.Cells[row, 7] = dt.Rows[i]["remark"].ToString();
  53.                     row++;
  54.                 }
  55.             }
  56.         }
  57.         catch (Exception ee)
  58.         {
  59.             this.lblProviderInfo.Text = "报表生成过程出现错误,请稍后重试!";
  60.         }
  61.         finally
  62.         {
  63.             try
  64.             {
  65.                 xBook.Save();
  66.                 xBook.Close(false, null, null);
  67.                 xExcel.Quit();
  68.                 System.Runtime.InteropServices.Marshal.ReleaseComObject(xBook);
  69.                 System.Runtime.InteropServices.Marshal.ReleaseComObject(xExcel);
  70.                 System.Runtime.InteropServices.Marshal.ReleaseComObject(xSheet);
  71.                 xBook = null;
  72.                 xExcel = null;
  73.                 xSheet = null;
  74.                 GC.Collect();
  75.                 string path = Server.MapPath("PrintProvider.xls");

  76.                 System.IO.FileInfo file = new System.IO.FileInfo(path);
  77.                 Response.Clear();
  78.                 Response.Charset = "GB2312";
  79.                 Response.ContentEncoding = System.Text.Encoding.UTF8;
  80.                 // 添加头信息,为"文件下载/另存为"对话框指定默认文件名
  81.                 Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(file.Name));
  82.                 // 添加头信息,指定文件大小,让浏览器能够显示下载进度
  83.                 Response.AddHeader("Content-Length", file.Length.ToString());

  84.                 // 指定返回的是一个不能被客户端读取的流,必须被下载
  85.                 Response.ContentType = "application/ms-excel";

  86.                 // 把文件流发送到客户端
  87.                 Response.WriteFile(file.FullName);
  88.                 // 停止页面的执行

  89.                 Response.End();

  90.             }
  91.             catch (Exception eee)
  92.             {
  93.                 //this.lblProviderInfo.Text = eee.ToString();
  94.             }
  95.         }
  96.     }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马