C#开发之Excel录入

用NPOI创建一个新的EXCEL文件。

第一步,引用空间

using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;

创建工作簿

HSSFWorkbook wk = new HSSFWorkbook();
//创建一个Sheet
ISheet sheet = wk.CreateSheet("例子");

XSSFWorkbook xssfworkbook = new XSSFWorkbook() ;
ISheet sheet = xssfworkbook.CreateSheet();

创建单元行

//在第一行创建行
IRow row = sheet.CreateRow(0);
//在第一行的第一列创建单元格
ICell cell = row.CreateCell(0);

对单元格赋值

cell.SetCellValue("测试");

Controller

using System.IO;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;

        public ActionResult ApplicationsImport()
        {
            string fileName = string.Empty;
            int successSum = 0;
            int failSum = 0;
            string lang = System.Threading.Thread.CurrentThread.CurrentUICulture.Name;
            OperationResult operationResult = new OperationResult()
            {
                IsSuccess = false,
                Error = "导入失败!"
            };

            //var categoryJson = WebRequestHelper.GetRequest("AppCategory/GetAllForImport");
            //var resulttree = Newtonsoft.Json.JsonConvert.DeserializeObject>>(categoryJson);

            //if (!resulttree.IsSuccess)
            //{
            //    throw new Exception(resulttree.Error);
            //}

            //var categoryList = resulttree.Data;
            try
            {
                HttpPostedFileBase fileData = Request.Files[0];
                if (fileData != null && fileData.ContentLength > 0)
                {
                    if (Directory.Exists(Server.MapPath("~/Content/LoadFile/App")) == false)//如果不存在就创建file文件夹
                    {
                        Directory.CreateDirectory(Server.MapPath("~/Content/LoadFile/App"));
                    }
                    string fileSave = Server.MapPath("~/Content/LoadFile/App/");
                    string extName = Path.GetExtension(fileData.FileName);
                    string newName = Guid.NewGuid().ToString() + extName;
                    fileData.SaveAs(Path.Combine(fileSave, newName));

                    var strFileName = "~/Content/LoadFile/App/" + newName;
                    ISheet sheet;
                    if (extName.ToLower() == ".xlsx")
                    {
                        XSSFWorkbook xssfworkbook;
                        using (FileStream file = new FileStream(Server.MapPath(strFileName), FileMode.Open, FileAccess.Read))
                        {
                            xssfworkbook = new XSSFWorkbook(file);
                        }
                        sheet = xssfworkbook.GetSheetAt(0);
                    }
                    else
                    {
                        HSSFWorkbook hssfworkbook;
                        using (FileStream file = new FileStream(Server.MapPath(strFileName), FileMode.Open, FileAccess.Read))
                        {
                            hssfworkbook = new HSSFWorkbook(file);
                        }
                        sheet = hssfworkbook.GetSheetAt(0);
                    }

                    IRow headerRow = sheet.GetRow(0);
                    if (headerRow == null)
                    {
                        System.IO.File.Delete(Server.MapPath(strFileName));
                        if (lang.ToLower() == "zh-cn")
                        {
                            return Json(new { IsSuccess = false, Error = fileName + "导入失败:导入格式错误!" }, JsonRequestBehavior.AllowGet);
                        }
                        else
                        {
                            return Json(new { IsSuccess = false, Error = fileName + "Import failure: import format error!" }, JsonRequestBehavior.AllowGet);
                        }

                    }
                    int cellCount = headerRow.LastCellNum;
                    if (cellCount != 21)//21列 除了guid
                    {
                        System.IO.File.Delete(Server.MapPath(strFileName));
                        if (lang.ToLower() == "zh-cn")
                        {
                            return Json(new { IsSuccess = false, Error = fileName + "导入失败:导入格式错误!" }, JsonRequestBehavior.AllowGet);
                        }
                        else
                        {
                            return Json(new { IsSuccess = false, Error = fileName + "Import failure: import format error!" }, JsonRequestBehavior.AllowGet);
                        }
                    }
                    //因全部完成无法获取提示信息,故而先检验数据完整性
                    //for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
                    //{
                    //    IRow row = sheet.GetRow(i);
                    //    for (int j = row.FirstCellNum; j < cellCount; j++)
                    //    {
                    //        //var ass = row.GetCell(j+1);
                    //        if (j == 8 && row.GetCell(j) != null)
                    //        {
                    //            if (row.GetCell(j).ToString() == "0")
                    //            {
                    //                break;
                    //            }
                    //        }
                    //        if (row.GetCell(j) == null && !(j == 7 || j == 3 || j == 4))
                    //        {
                    //            System.IO.File.Delete(Server.MapPath(strFileName));
                    //            if (lang.ToLower() == "zh-cn")
                    //            {
                    //                return Json(new { IsSuccess = false, Error = fileName + "导入失败:导入格式错误!" }, JsonRequestBehavior.AllowGet);
                    //            }
                    //            else
                    //            {
                    //                return Json(new { IsSuccess = false, Error = fileName + "Import failure: import format error!" }, JsonRequestBehavior.AllowGet);
                    //            }
                    //        }
                    //    }

                    //}

                    for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
                    {
                        IRow row = sheet.GetRow(i);

                        //string appName = row.GetCell(0).ToString();
                        //string appEngName = row.GetCell(1).ToString();

                        //InsistutionTest entity = new InsistutionTest();
                        //entity.Id =new Guid(row.GetCell(0).ToString());
                        //entity.Name = row.GetCell(1).ToString();
                        //entity.No = row.GetCell(2).ToString();
                        //entity.Version = row.GetCell(3).ToString();

                        ForeCast entity = new ForeCast();
                        entity.Id = Guid.NewGuid();
                        entity.ForecastVersion = row.GetCell(0).ToString();
                        entity.ExchangeRateDate = Convert.ToDateTime(row.GetCell(1).ToString());
                        entity.ProductID = row.GetCell(2).ToString();
                        entity.DatasetID = row.GetCell(3).ToString();
                        entity.Dataset = row.GetCell(4).ToString();
                        entity.PublishedDate = Convert.ToDateTime(row.GetCell(5).ToString());
                        entity.Unit = row.GetCell(6).ToString();
                        entity.Currency = row.GetCell(7).ToString();
                        entity.GeographyLevel1 = row.GetCell(8).ToString();
                        entity.GeographyLevel2 = row.GetCell(9).ToString();
                        entity.GeographyLevel3 = row.GetCell(10).ToString();
                        entity.ServicesLevel1 = row.GetCell(11).ToString();
                        entity.ServicesLevel2 = row.GetCell(12).ToString();
                        entity.ServicesLevel3 = row.GetCell(13).ToString();
                        entity.ServicesLevel4 = row.GetCell(14).ToString();
                        entity.TechnologyLevel1 = row.GetCell(15).ToString();
                        entity.TechnologyLevel2 = row.GetCell(16).ToString();
                        entity.TechnologyLevel3 = row.GetCell(17).ToString();
                        entity.TechnologyLevel4 = row.GetCell(18).ToString();
                        entity.MetricLevel1 = row.GetCell(19).ToString();
                        entity.MetricLevel2 = row.GetCell(20).ToString();
                        

                        var paras = JsonConvert.SerializeObject(entity);

                        string result = WebRequestHelper.PostRequest("ForeCast/Import", paras);

                        JObject jo = (JObject)JsonConvert.DeserializeObject(result);
                        string isSuccess = jo["IsSuccess"].ToString();
                        if (isSuccess == "False")
                        {
                            //System.IO.File.Delete(Server.MapPath(strFileName));
                            //return Json(new { IsSuccess = false, Error = fileName + "导入失败:导入格式错误!" }, JsonRequestBehavior.AllowGet);
                            failSum = failSum + 1;
                        }
                        else
                        {
                            successSum = successSum + 1;
                        }
                    }
                    System.IO.File.Delete(Server.MapPath(strFileName));

                    var addLog = new LogOperation
                    {
                        Account = CurrentUserID,
                        Name = CurrentUserName,
                        Module = EnumOperation.News.ToString(),
                        Operation = "导入",
                        OpTime = DateTime.Now,
                        Remark = "APP导入",
                        IP = GetIp()
                    };

                    //WebRequestHelper.PostRequest("Log/AddOperationLog", JsonConvert.SerializeObject(addLog));
                }
            }
            catch (Exception e)
            {
                var asdfdsf = e.Message;
                if (lang.ToLower() == "zh-cn")
                {
                    return Json(new { IsSuccess = false, Error = fileName + "导入失败:导入格式错误!" }, JsonRequestBehavior.AllowGet);
                }
                else
                {
                    return Json(new { IsSuccess = false, Error = fileName + "Import failure: import format error!" }, JsonRequestBehavior.AllowGet);
                }
            }
            string error;
            if (failSum > 0)
            {
                if (lang.ToLower() == "zh-cn")
                {
                    return Json(new { IsSuccess = false, Error = fileName + "导入失败:名称重复!" }, JsonRequestBehavior.AllowGet);
                }
                else
                {
                    return Json(new { IsSuccess = false, Error = fileName + "Import failure: Repeat name!" }, JsonRequestBehavior.AllowGet);
                }
                //error = "成功导入" + successSum + "条记录," + failSum + "条导入失败,失败原因可能是格式错误或已存在相同的数据!";
            }
            else
            {
                operationResult.IsSuccess = true;
                error = "成功导入" + successSum + "条记录";
            }
            return Json(new { IsSuccess = operationResult.IsSuccess, Error = error }, JsonRequestBehavior.AllowGet);
        }

View页面 文件上传










@Scripts.Render("~/bundles/jqueryval")
@Html.ImportJs("~/Content/webuploader-0.1.5/webuploader.min.js")
@Html.ImportCss("~/Content/webuploader-0.1.5/webuploader.css")
@Html.ImportJs("~/Content/webuploader-0.1.5/webuploader.js")

你可能感兴趣的:(c#)