using Common; using BLL; using Model; using Lib; using System.Web.Mvc; using wms; using System.Data; using System.Web; using System; using NPOI.SS.UserModel; using System.IO; using NPOI.HSSF.UserModel; using NPOI.XSSF.UserModel; namespace WMS.Areas.BasicInfo.Controllers { public class MatController : MasterPage { [LoginFilter] public ActionResult MatList() { ViewBag.Brand = LocalHelper.GetBrandItemsHtml(); ViewBag.MatType = LocalHelper.GetDictionaryHtml("MatType"); ViewBag.IsDel = LocalHelper.GetMatIsDelHtml(); ViewBag.Title = "物料管理"; return View(); } [LoginFilter] public ActionResult AddMat() { string Guid = Request.QueryString.Get("MatNo"); if (Guid.IsEmpty()) { ViewBag.UnitList = LocalHelper.GetUnitList(""); ViewBag.Brand = LocalHelper.GetBrandItemsHtml(); ViewBag.MatType = LocalHelper.GetDictionaryHtml("MatType"); ViewBag.Admin = new Material(); } else { IDALMatNo provider = new DALMatNo(); Material entity = provider.GetModel(Guid); entity = entity == null ? new Material() : entity; ViewBag.UnitList = LocalHelper.GetUnitList(entity.UnitNum); ViewBag.Brand = LocalHelper.GetBrandItemsHtml(entity.BrandId); ViewBag.MatType = LocalHelper.GetDictionaryHtml("MatType",entity.MatTypeId); ViewBag.Admin = entity; } return View(); } public ActionResult Dialog() { return View(); } /// /// 导入Excel /// /// /// [HttpPost] public JsonResult ExcelToUpload(HttpPostedFileBase file) { DataTable excelTable = new DataTable(); string msg = string.Empty; if (Request.Files.Count > 0) { try { HttpPostedFileBase mypost = Request.Files[0]; string fileName = Request.Files[0].FileName; //在文件夹Report 用来接收上传的文件 string serverpath = Server.MapPath(string.Format("~/{0}", "Report/") + fileName); mypost.SaveAs(serverpath); NPOIExcel nPOI = new NPOIExcel("", "", ""); excelTable = NPOIExcel.InputExcel(serverpath); //excelTable = GetExcelDataTable(serverpath); //删除服务器生成的文件 System.IO.File.Delete(serverpath); //注意Excel表内容格式,第一行必须为列名与数据库列名匹配 //接下来为各列名对应下来的内容 string CreateUser = this.LoginUserCode; msg = DALMatNo.ImportExcel(excelTable, CreateUser);// 写入基础数据 } catch (Exception ex) { msg = ex.Message; } } else { msg = "请选择文件"; } return Json(msg); } public static DataTable GetExcelDataTable(string filePath) { IWorkbook Workbook; DataTable table = new DataTable(); try { using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { //XSSFWorkbook 适用XLSX格式,HSSFWorkbook 适用XLS格式 string fileExt = System.IO.Path.GetExtension(filePath).ToLower(); if (fileExt == ".xls") { Workbook = new HSSFWorkbook(fileStream); } else if (fileExt == ".xlsx") { Workbook = new XSSFWorkbook(fileStream); } else { Workbook = null; } } } catch (Exception ex) { throw ex; } //定位在第一个sheet ISheet sheet = Workbook.GetSheetAt(0); //第一行为标题行 IRow headerRow = sheet.GetRow(0); int cellCount = headerRow.LastCellNum; int rowCount = sheet.LastRowNum; //循环添加标题列 for (int i = headerRow.FirstCellNum; i < cellCount; i++) { DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue); table.Columns.Add(column); } //数据 for (int i = (sheet.FirstRowNum + 1); i <= rowCount; i++) { IRow row = sheet.GetRow(i); DataRow dataRow = table.NewRow(); if (row != null) { for (int j = row.FirstCellNum; j < cellCount; j++) { if (row.GetCell(j) != null) { dataRow[j] = GetCellValue(row.GetCell(j)); } } } table.Rows.Add(dataRow); } return table; } private static string GetCellValue(ICell cell) { if (cell == null) { return string.Empty; } switch (cell.CellType) { case CellType.Blank: return string.Empty; case CellType.Boolean: return cell.BooleanCellValue.ToString(); case CellType.Error: return cell.ErrorCellValue.ToString(); case CellType.Numeric: case CellType.Unknown: default: return cell.ToString(); case CellType.String: return cell.StringCellValue; case CellType.Formula: try { HSSFFormulaEvaluator e = new HSSFFormulaEvaluator(cell.Sheet.Workbook); e.EvaluateInCell(cell); return cell.ToString(); } catch { return cell.NumericCellValue.ToString(); } } } } }