예제 #1
0
 public void writeErrorToFile(ExcelWorksheet eSheet, int rownumber, Deca_Vietin_Error_Code item, string error)
 {
     using (var dbConn = Helpers.OrmliteConnection.openConn())
     {
         int i = 1;
         eSheet.Cells[rownumber, i++].Value = item.Code;
         eSheet.Cells[rownumber, i++].Value = item.Description;
         eSheet.Cells[rownumber, i++].Value = item.CreatedAt;
         eSheet.Cells[rownumber, i++].Value = item.CreatedBy;
         eSheet.Cells[rownumber, i++].Value = item.UpdatedAt;
         eSheet.Cells[rownumber, i++].Value = item.UpdatedBy;
         eSheet.Cells[rownumber, i++].Value = error;
     }
 }
예제 #2
0
        public ActionResult ImportFromExcel()
        {
            try
            {
                if (Request.Files["FileUpload"] != null && Request.Files["fileUpload"].ContentLength > 0)
                {
                    string fileExtension =
                        System.IO.Path.GetExtension(Request.Files["fileUpload"].FileName);

                    if (fileExtension == ".xls" || fileExtension == ".xlsx")
                    {
                        string fileLocation      = string.Format("{0}/{1}", Server.MapPath("~/Excel"), "[" + currentUser.UserName + "-" + DateTime.Now.ToString("yyyyMMddHHmmss") + "]" + Request.Files["fileUpload"].FileName);
                        string errorFileLocation = string.Format("{0}/{1}", Server.MapPath("~/Excel"), "[" + currentUser.UserName + "-" + DateTime.Now.ToString("yyyyMMddHHmmss") + "-Error]" + Request.Files["fileUpload"].FileName);

                        if (System.IO.File.Exists(fileLocation))
                        {
                            System.IO.File.Delete(fileLocation);
                        }

                        Request.Files["fileUpload"].SaveAs(fileLocation);
                        //Request.Files["fileUpload"].SaveAs(errorFileLocation);

                        var rownumber = 2;
                        var total     = 0;
                        int n         = 1;

                        FileInfo fileInfo = new FileInfo(fileLocation);
                        var      excelPkg = new ExcelPackage(fileInfo);

                        FileInfo template = new FileInfo(Server.MapPath(@"~\ExportExcelFile\Deca_Vietin_ErrorCode.xlsx"));
                        template.CopyTo(errorFileLocation);
                        FileInfo _fileInfo = new FileInfo(errorFileLocation);
                        var      _excelPkg = new ExcelPackage(_fileInfo);

                        ExcelWorksheet oSheet = excelPkg.Workbook.Worksheets["VieitinErrorCode"];
                        ExcelWorksheet eSheet = _excelPkg.Workbook.Worksheets["VieitinErrorCode"];

                        var data = WorksheetToDataTables(oSheet);
                        int temp;

                        var listData = data.AsEnumerable().Select(s => new Deca_Vietin_Error_Code
                        {
                            Code        = s["Code"] != null ? s["Code"].ToString() : "",
                            Description = s["Description"] != null ? s["Description"].ToString() : ""
                        }).ToList();

                        using (var dbConn = Helpers.OrmliteConnection.openConn())
                        {
                            if (n == 1)
                            {
                                var required = listData.Where(s => String.IsNullOrEmpty(s.Code) ||
                                                              String.IsNullOrEmpty(s.Description));
                                foreach (var item in required)
                                {
                                    writeErrorToFile(eSheet, rownumber, item, "Vui lòng nhập đầy đủ thông tin bắt buộc");
                                    rownumber++;
                                }
                                listData = listData.Except(required).ToList();
                                if (listData.Count() > 0)
                                {
                                    n = 1;
                                }
                                else
                                {
                                    n = 0;
                                }
                            }

                            foreach (var item in listData)
                            {
                                try
                                {
                                    var exist = dbConn.SingleOrDefault <Deca_Vietin_Error_Code>("Code={0}", item.Code);
                                    if (exist != null)
                                    {
                                        exist.Description = item.Description;
                                        exist.UpdatedAt   = DateTime.Now;
                                        exist.UpdatedBy   = currentUser.UserName;
                                        dbConn.Update(exist);
                                        total++;
                                    }
                                    else
                                    {
                                        var newData = new Deca_Vietin_Error_Code();
                                        newData.Code        = item.Code;
                                        newData.Description = item.Description;
                                        newData.CreatedAt   = DateTime.Now;
                                        newData.CreatedBy   = currentUser.UserName;
                                        dbConn.Insert(newData);
                                        total++;
                                    }
                                }
                                catch (Exception e)
                                {
                                    writeErrorToFile(eSheet, rownumber, item, e.Message);
                                    rownumber++;
                                }
                            }
                        }
                        _excelPkg.Save();

                        return(Json(new { success = true, total = total, totalError = rownumber - 2, link = errorFileLocation }));
                    }
                }
            }
            catch (Exception e)
            {
                return(Json(new { success = false, error = "errors:" + e.Message }));
            }

            return(Json(new { success = true }));
        }