標籤:
廢話不多說,直接上遇到的問題
需求:在這個介面點擊匯出,匯出頁面資料,苦於沒有做過webfrom項目,弄了半天還是沒想到原生態的好方法,所以在網上看了下有沒有匯出的好例子,結果發現有人推薦使用Npoi,抱著強烈的好奇心,就去查了下這個東東,發現果然強大,哈哈,裡面整合了很多東西,下面直接進入解決問題正題:
實現過程(僅供參考)
①發現項目裡面介面方法返回DataTable是帶參數的,所以新增了一個無參數的方法
②實現這個方法,重點是將查詢到的結果集放大DataTable中
③先去官網:http://npoi.codeplex.com/ 下載需要引入dll(可以選擇.net2.0或者.net4.0的dll),然後在網站中添加引用。[因為我的項目就用到了excel匯出,所以只添加了這兩個dll]
④執行點擊事件即可[本項目是點擊匯出Excel時,執行button3的點擊事件]
⑤添加方法(本方法可通用,其中rs是申明的一個全域DataTable ,將介面調用的查詢資料庫的方法直接返回給rs)
1 NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook(); 2 NPOI.SS.UserModel.ISheet sheet = book.CreateSheet("Sheet1"); 3 //設定列的資訊 4 5 NPOI.SS.UserModel.IRow headerrow = sheet.CreateRow(0); 6 ICellStyle style = book.CreateCellStyle(); 7 style.Alignment = HorizontalAlignment.Center; 8 style.VerticalAlignment = VerticalAlignment.Center; 9 rs =CMSModelManager.SendInfoManageDAO.GetFirstSendInfoManageByIds();10 IRow rowHead = sheet.CreateRow(0);11 //填寫表頭12 for (int i = 0; i < rs.Columns.Count; i++)13 {14 rowHead.CreateCell(i, CellType.String).SetCellValue(rs.Columns[i].ColumnName.ToString());15 }16 17 //填寫內容18 for (int i = 0; i < rs.Rows.Count; i++)19 {20 IRow row = sheet.CreateRow(i + 1);21 for (int j = 0; j < rs.Columns.Count; j++)22 {23 row.CreateCell(j, CellType.String).SetCellValue(rs.Rows[i][j].ToString());24 }25 }26 MemoryStream ms = new MemoryStream();27 book.Write(ms);28 Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", HttpUtility.UrlEncode("寄件資訊表" + "_" + DateTime.Now.ToString("yyyy-MM-dd"), System.Text.Encoding.UTF8)));29 Response.BinaryWrite(ms.ToArray());30 Response.End();31 book = null;32 ms.Close();33 ms.Dispose();View Code
⑥效果
本文完
Npoi匯出Excel 實戰篇(Webform)