NPOI 是POI項目的 .NET 版本。POI是一個開源的java讀寫Excel、Word等微軟OLE2組件文檔的項目。
使用 NPOI 你就可以在沒有安裝 Office 或者相應環境的機器上對 WORD/EXCEL 文檔進行讀寫。NPOI是構建在POI 3.x版本之上的,它可以在沒有安裝Office的情況下對Word/Excel文檔進行讀寫操作。使用 NPOI 你就可以在沒有安裝 Office 或者相應環境的機器上對 WORD/EXCEL 文檔進行讀寫。NPOI是構建在POI 3.x版本之上的,它可以在沒有安裝Office的情況下對Word/Excel文檔進行讀寫操作。
下面我們使用NPOI在MVC4框架下制作一個導出的功能。
(1)在DAL數據訪問層,定義需要需要導出的數據表,可以根據需要導出的字段,進行SQL語句的組織條件。
public DataTable GetData() { DataTable dt = new DataTable(); using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connStr"].ToString())) { string sql = "select [LoginID],[WageID],[Name],[UserLimit],[OnDutyTime],[CarShiFa],[OnDutyDay],[NightOnDuty],[AllNightOnDuty],[CarAllowance],[WorkOvertime],[WeekendNightWork],[WeekendOverNight] from Kaoqinsum where OnDutyTime=datename(yy,getdate()) + '-' + datename(m,dateadd(m,-1,getdate()))"; conn.Open(); SqlCommand cmd = new SqlCommand(sql, conn); SqlDataAdapter sda = new SqlDataAdapter(cmd); sda.Fill(dt); conn.Close(); return dt; } }
?。?)在BLL業務邏輯層,調用數據訪問層中的GetDate();
public DataTable GetDate() { return new SalaryManageDAL.KaoqinsumDAL().GetData(); }
(3)在控制器中,我們來書寫導出功能的主要代碼。
public ActionResult DaoChu() { DataTable dt = new SalaryManageBLL.KaoqinsumBLL().GetDate(); //1、實例化workbook工作簿對象 HSSFWorkbook hssfworkbook = new HSSFWorkbook(); //2、創建文檔摘要信息 DocumentSummaryInformation dsf = PRopertySetFactory.CreateDocumentSummaryInformation(); dsf.Company = "沈陽工學院";//公司 dsf.Category = "Statistics";//類別 //CustomProperties 自定義屬性 SummaryInformation si = PropertySetFactory.CreateSummaryInformation(); si.Author = "院辦";//作者 //Comments 評論 CreateDateTime 創建時間 Template模板 si.Keywords = "kaoqin,yuanban";//關鍵字 si.Subject = "kaoqin";//主題 si.Title = "考勤匯總";//標題 si.RevNumber = "1.0";//版本號 //3、將寫好的文檔摘要 賦值workbook對象 hssfworkbook.DocumentSummaryInformation = dsf; hssfworkbook.SummaryInformation = si; //4、創建Sheet HSSFSheet Sheet1 = (HSSFSheet)hssfworkbook.CreateSheet("Sheet1"); HSSFSheet Sheet2 = (HSSFSheet)hssfworkbook.CreateSheet("Sheet2"); HSSFSheet Sheet3 = (HSSFSheet)hssfworkbook.CreateSheet("Sheet3"); //5、創建頁眉頁腳 Sheet1.CreateRow(0).CreateCell(1).SetCellValue(123); Sheet1.Header.Center = "統計數據"; Sheet1.Header.Left = "logo.png"; Sheet1.Header.Right = "zhguAddress"; Sheet1.Footer.Center = "page"; //6、標題 string yeartime = time(); HSSFCell fcell = (HSSFCell)Sheet1.CreateRow(0).CreateCell(0);//第一行 fcell.SetCellValue("沈陽工學院" + yeartime + "考勤匯總情況表");//文本 //合并單元格 Sheet1.AddMergedRegion(new CellRangeAddress(0, 0, 0, 13));//2.0使用 2.0以下為Region //標題樣式 HSSFCellStyle fCellStyle = (HSSFCellStyle)hssfworkbook.CreateCellStyle(); HSSFFont ffont = (HSSFFont)hssfworkbook.CreateFont(); ffont.FontHeight = 20 * 20; ffont.FontName = "宋體"; ffont.Color = HSSFColor.BLUE.index; fCellStyle.SetFont(ffont); fCellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.CENTER;//垂直對齊 fCellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.CENTER;//水平對齊 fcell.CellStyle = fCellStyle; //7、設置單元格格式 創建單元格 /*模擬設定7列*/ HSSFDataFormat dataformat = (HSSFDataFormat)hssfworkbook.CreateDataFormat();//數據格式 HSSFFont font = (HSSFFont)hssfworkbook.CreateFont();//數據字體 font.Color = HSSFColor.BLACK.index; //顏色 font.IsItalic = false;//斜體 font.IsStrikeout = false;//加粗 font.FontName = "宋體";//字體 //必不可少 可以變更在循環輸出數據時指定類型 需要調用sqlDbType 較復雜 //Id int類型 HSSFCell cell1 = (HSSFCell)Sheet1.CreateRow(1).CreateCell(0); //創建單元格 HSSFCellStyle cellStyle1 = (HSSFCellStyle)hssfworkbook.CreateCellStyle();//單元格樣式 cellStyle1.DataFormat = HSSFDataFormat.GetBuiltinFormat(""); // CellRangeAddressList ranglist1 = new CellRangeAddressList(0, 65535, 0, 0);//集合限定類型 // DVConstraint constraint1 = DVConstraint.CreateNumericConstraint(DVConstraint.ValidationType.INTEGER, DVConstraint.OperatorType.BETWEEN, "0", "100");//約束 cellStyle1.SetFont(font); cell1.CellStyle = cellStyle1; cell1.SetCellValue(""); //Name HSSFCell cell2 = (HSSFCell)Sheet1.CreateRow(1).CreateCell(1); HSSFCellStyle cellStyle2 = (HSSFCellStyle)hssfworkbook.CreateCellStyle(); cellStyle2.DataFormat = HSSFDataFormat.GetBuiltinFormat(""); cellStyle2.SetFont(font); cell2.CellStyle = cellStyle2; cell2.SetCellValue(""); //phone HSSFCell cell3 = (HSSFCell)Sheet1.CreateRow(1).CreateCell(2); HSSFCellStyle cellStyle3 = (HSSFCellStyle)hssfworkbook.CreateCellStyle(); cellStyle3.DataFormat = HSSFDataFormat.GetBuiltinFormat(""); cellStyle3.SetFont(font); cell3.CellStyle = cellStyle3; cell3.SetCellValue(""); //address HSSFCell cell4 = (HSSFCell)Sheet1.CreateRow(1).CreateCell(3); HSSFCellStyle cellStyle4 = (HSSFCellStyle)hssfworkbook.CreateCellStyle(); cellStyle4.DataFormat = HSSFDataFormat.GetBuiltinFormat(""); cellStyle4.SetFont(font); cell4.CellStyle = cellStyle4; cell4.SetCellValue(""); //Status HSSFCell cell5 = (HSSFCell)Sheet1.CreateRow(1).CreateCell(4); HSSFCellStyle cellStyle5 = (HSSFCellStyle)hssfworkbook.CreateCellStyle(); cellStyle5.DataFormat = HSSFDataFormat.GetBuiltinFormat(""); cellStyle5.SetFont(font); cell5.CellStyle = cellStyle5; cell5.SetCellValue(""); //balance HSSFCell cell6 = (HSSFCell)Sheet1.CreateRow(1).CreateCell(5); HSSFCellStyle cellStyle6 = (HSSFCellStyle)hssfworkbook.CreateCellStyle(); cell6.SetCellValue(""); cellStyle6.DataFormat = HSSFDataFormat.GetBuiltinFormat(""); cellStyle6.SetFont(font); cell6.CellStyle = cellStyle6; //CreateDate HSSFCell cell7 = (HSSFCell)Sheet1.CreateRow(1).CreateCell(6); HSSFCellStyle cellStyle7 = (HSSFCellStyle)hssfworkbook.CreateCellStyle(); cellStyle7.DataFormat = HSSFDataFormat.GetBuiltinFormat(""); cellStyle7.SetFont(font); cell7.CellStyle = cellStyle7; cell7.SetCellValue(""); HSSFCell cell8 = (HSSFCell)Sheet1.CreateRow(1).CreateCell(7); HSSFCellStyle cellStyle8 = (HSSFCellStyle)hssfworkbook.CreateCellStyle(); cellStyle8.DataFormat = HSSFDataFormat.GetBuiltinFormat(""); cellStyle8.SetFont(font); cell8.CellStyle = cellStyle8; cell8.SetCellValue(""); HSSFCell cell9 = (HSSFCell)Sheet1.CreateRow(1).CreateCell(8); HSSFCellStyle cellStyle9 = (HSSFCellStyle)hssfworkbook.CreateCellStyle(); cellStyle9.DataFormat = HSSFDataFormat.GetBuiltinFormat(""); cellStyle9.SetFont(font); cell9.CellStyle = cellStyle9; cell9.SetCellValue(""); HSSFCell cell10 = (HSSFCell)Sheet1.CreateRow(1).CreateCell(9); HSSFCellStyle cellStyle10 = (HSSFCellStyle)hssfw
新聞熱點
疑難解答