使用NPOI庫導入導出EXCEL
阿新 • • 發佈:2017-05-26
date 表頭 xssf content mar exc 下標 都是 bool
一、EXCEL 導入(Excel 導入導出實際項目中會被封裝成**Helper 本示例只對簡單功能做演示)
NPOI 包引用
視圖view
@{ ViewBag.Title = "NPOIExcel"; } <h2>NPOIExcel</h2> <form action="@Url.Action("NPOIInport", "Home")" method="post" enctype="multipart/form-data"> <input type="file" name="Importexcelfile" /> <button type="submit">提交</button> </form> //enctype="multipart/form-data" 上傳文件時form 表單必加
Action
命名空間引用
using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel;
using NPOI.XSSF.UserModel;
using System.Data;
/// <summary> /// NPOI 導入excel /// </summary> /// <returns></returns> [HttpPost] public ActionResult NPOIInport() {View Codebool isok = false; string msg = string.Empty; var file = Request.Files["Importexcelfile"];//接收的文件對象 var filename = SaveUploadExcel(file);//將文件保存至某一路徑下 並形成新的文件名稱 var filePath=System.Configuration.ConfigurationManager.AppSettings["Upload"] + @"\excel\" + filename;//新路徑 IWorkbook workbook = null; //定義工作簿接口 ISheet sheet=null;//定義sheet表 DataTable data = new DataTable(); FileStream filestream = new FileStream(filePath, FileMode.Open, FileAccess.Read); if (file.ContentLength>0) { if (filePath.IndexOf(".xlsx") > 0) { workbook = new XSSFWorkbook(filestream);//.xlsx 文件 } else { workbook = new HSSFWorkbook(filestream);//.xls文件 } sheet = workbook.GetSheetAt(0);//默認第一個sheet sheet 下標 //sheet = workbook.GetSheet("sheet的名字");//獲取想要查詢sheet的名字 if (sheet!=null) { for (int i = 0; i < sheet.LastRowNum; i++) { IRow row = sheet.GetRow(i);//獲取第一行 一般都是表頭 var firstvalue = row.GetCell(0);//第一行的第一列 var secondvalue = row.GetCell(1); } //常見讀取excel 已經夠用 實際項目中會遇到 再次封裝數據形成table 一般這個幫助類會叫**Helper IRow firstrow = sheet.GetRow(0); int cellcount = firstrow.LastCellNum;//總列數 for (int i = firstrow.FirstCellNum; i < cellcount; i++) { ICell icell = firstrow.GetCell(i); if (icell!=null) { string cellvalue = icell.StringCellValue;//獲取當前單元格的value DataColumn column = new DataColumn(cellvalue); data.Columns.Add(column);//添加表頭 } } int startrow = sheet.FirstRowNum + 1; for (int i = startrow; i < sheet.LastRowNum; i++) { IRow row = sheet.GetRow(i); if (row!=null) { DataRow datarow = data.NewRow(); for (int j = row.FirstCellNum; j < cellcount; j++) { if (row.GetCell(j)!=null) { datarow[j] = row.GetCell(j).ToString(); } } data.Rows.Add(datarow); } } //return data; } } return Json(new { Isok = isok, Msg = msg }); } public static string SaveUploadExcel(HttpPostedFileBase fileexcel) { string filename = fileexcel.FileName; string extension = Path.GetExtension(filename); int filesize = fileexcel.ContentLength; if (filesize>int.Parse(System.Configuration.ConfigurationManager.AppSettings["UploadFileSize"])) { return "文件超過上限"; } string dirPath = System.Configuration.ConfigurationManager.AppSettings["Upload"] + @"\excel\"; //生成新的文件名 string newFileName = string.Format("{0}{1}", DateTime.Now.ToString("yyMMddHHmmssfffffff"), extension); if (!Directory.Exists(dirPath)) Directory.CreateDirectory(dirPath); fileexcel.SaveAs(dirPath + newFileName); //返回新生成的文件名稱 return newFileName; }
二、EXCEL 導出
使用NPOI庫導入導出EXCEL