[C#] NPOI 2.0将DataTable对象转换为Excel 2007文件提供下载 →→→→→进入此内容的聊天室

来自 , 2019-12-19, 写在 C#, 查看 152 次.
URL http://www.code666.cn/view/daaaf136
  1. using NPOI.SS.UserModel;
  2. using NPOI.XSSF.UserModel;
  3. using System.IO;
  4.         private Stream RenderDataTableToExcel(DataTable SourceTable)
  5.         {
  6.             XSSFWorkbook workbook = null;
  7.             MemoryStream ms = null;
  8.             ISheet sheet = null;
  9.             XSSFRow headerRow = null;
  10.             try
  11.             {
  12.                 workbook = new XSSFWorkbook();
  13.                 ms = new MemoryStream();
  14.                 sheet = workbook.CreateSheet();
  15.                 headerRow = (XSSFRow)sheet.CreateRow(0);
  16.                 foreach (DataColumn column in SourceTable.Columns)
  17.                     headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName);
  18.                 int rowIndex = 1;
  19.                 foreach (DataRow row in SourceTable.Rows)
  20.                 {
  21.                     XSSFRow dataRow = (XSSFRow)sheet.CreateRow(rowIndex);
  22.                     foreach (DataColumn column in SourceTable.Columns)
  23.                         dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString());
  24.                     ++rowIndex;
  25.                 }
  26.                 //列宽自适应,只对英文和数字有效
  27.                 for (int i = 0; i <= SourceTable.Columns.Count; ++i)
  28.                     sheet.AutoSizeColumn(i);
  29.                 workbook.Write(ms);
  30.                 ms.Flush();
  31.             }
  32.             catch (Exception ex)
  33.             {
  34.                 return null;
  35.             }
  36.             finally
  37.             {
  38.                 ms.Close();
  39.                 sheet = null;
  40.                 headerRow = null;
  41.                 workbook = null;
  42.             }
  43.             return ms;
  44.         }
  45.         private void DownloadExcel(DataTable dt,string reportName)
  46.         {
  47.                 Stream s = RenderDataTableToExcel(dt);
  48.                 if (s != null)
  49.                 {
  50.                     MemoryStream ms = resultStream.result as MemoryStream;
  51.                     Response.AddHeader("Content-Disposition", string.Format("attachment;filename=" + HttpUtility.UrlEncode(reportName) + DateTime.Now.ToString("yyyyMMdd") + ".xlsx"));
  52.                     Response.AddHeader("Content-Length", ms.ToArray().Length.ToString());
  53.                     Response.BinaryWrite(ms.ToArray());
  54.                     Response.Flush();
  55.                     ms.Close();
  56.                     ms.Dispose();
  57.                 }
  58. else
  59. Response.Write("出错,无法下载!");
  60.         }

回复 "NPOI 2.0将DataTable对象转换为Excel 2007文件提供下载"

这儿你可以回复上面这条便签

captcha