C#項目中excel的數據導入功能
實現思路
1.點擊按鈕的時候,將文件上傳並指定上傳路勁
2.文件上傳成功后,這個文件就在服務器中的一個文件里面
3.將上傳的文件當成一個“移動的數據庫”,利用NPOI獲取excel表中的數據
4.通過for循環遍歷表中 每一行的的值 再調用添加的接口將數據添加到數據庫中去
注意:下面的代碼我只展示控制器里的代碼 其他層的代碼就不展示了
[HttpPost] public ActionResult Upload() { var file = Request.Files[0]; //拿到前端上傳的文件 var Isxls = Path.GetExtension(file.FileName).ToString().ToLower(); if (Isxls != ".xls" && Isxls != ".xlsx") //判斷文件格式 { return Error(); } if (file == null) { return Error("文件無內容,請檢查后重新上傳~"); } string userId = OperatorProvider.Instance.Current.UserId; //這里是獲取當前登錄用戶的ID 可以不要 我是用來拼接上傳后文件的名稱 string virtualPath = Path.Combine("/Content/Uploads/Files", userId + Path.GetExtension(file.FileName)); string filePath = Request.MapPath(virtualPath); if (FileUtil.Exists(filePath))//判斷文件是否存在 { FileUtil.Delete(filePath); } file.SaveAs(filePath);//這里是拿到上傳后的文件 NPOI.XSSF.UserModel.XSSFWorkbook workBook = new NPOI.XSSF.UserModel.XSSFWorkbook(new FileStream(Path.GetFullPath(filePath), FileMode.Open)); NPOI.XSSF.UserModel.XSSFSheet sheet = (NPOI.XSSF.UserModel.XSSFSheet)workBook.GetSheetAt(0); int rowCount = sheet.LastRowNum; //開始添加 for (int j = 0; j < rowCount; j++) { //獲取excel每一行的值 string Id = Guid.NewGuid().ToString(); string CreateTime = sheet.GetRow(j + 1).GetCell(0).ToString().Trim().Replace("\n", ";"); string ClientName = sheet.GetRow(j + 1).GetCell(1).ToString().Trim().Replace("\n", ";"); //創建需要導入數據的實體類對象 SysClient model = new SysClient(); model.Id = Id; model.CreateTime = CreateTime ; model.ClientName = ClientName; clientLogic.Inserts(model);//調用寫好的添加接口 } return Success("導入成功!"); } }
關於導入的功能我這里寫的簡單了些 當然你也可以根據自己的想法去寫 這里我只提供一個思路。