1. 程式人生 > >使用NPOI庫導入導出EXCEL

使用NPOI庫導入導出EXCEL

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()
        {
            
bool 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; }
View Code

二、EXCEL 導出

使用NPOI庫導入導出EXCEL