EXCEL 导入

            lMessage.Visible = false;
            try
            {
                if (this.fileUpLoad.HasFile == false)//HasFile用来检查FileUpload是否有指定文件
                {
                    Response.Write("<script>alert('请您选择Excel文件')</script> ");
                    return;//当无文件时,返回
                }
                string IsXls = System.IO.Path.GetExtension(fileUpLoad.FileName).ToString().ToLower();//System.IO.Path.GetExtension获得文件的扩展名
                if (IsXls != ".csv")
                {
                    Response.Write("<script>alert('只可以选择Excel文件')</script>");
                    return;//当选择的不是Excel文件时,返回
                }
                string filename = fileUpLoad.FileName;
                string newFileName = DateTime.Now.ToString("yyyyMMddHHmmss") + this.CurrentUser.NTAccount + filename;//获取Execle文件名  DateTime日期函数
                string savePath = Server.MapPath(("uploadfiles\\") + newFileName);//Server.MapPath 获得虚拟服务器相对路径
                fileUpLoad.SaveAs(savePath);                        //SaveAs 将上传的文件内容保存在服务器上
                ImportCSV ic = new ImportCSV(Server.MapPath("uploadfiles\\"), newFileName);
                DataTable dt = ic.ReadCsvFileToTable();
                Dictionary<string, string> errorUser = new Dictionary<string, string>();
                List<LeaveCulcalateInfo> lRightEmployeeCode = new List<LeaveCulcalateInfo>();
                List<LeaveCulcalateInfo> _dict = new List<LeaveCulcalateInfo>();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    string title = dt.Rows[i]["Employee Code"].ToString();
                    string linkurl = dt.Rows[i]["Last Working Day"].ToString();

                    object obj = null;
                    try
                    {
                        obj = Convert.ToDateTime(dt.Rows[i]["Last Working Day"].ToString());
                    }
                    catch { lMessage.Visible = true; this.lMessage.Text = "Last Working Day column is missing"; }
                    LeaveCulcalateInfo info = new LeaveCulcalateInfo();
                    info.EmployeeCode = dt.Rows[i]["Employee Code"].ToString();
                    try
                    {
                        info.EmployeeName = dt.Rows[i]["Name"].ToString();
                        return;
                    }
                    catch
                    {
                        lMessage.Visible = true;
                        this.lMessage.Text = "Name column is missing"; return;
                    }
                    try
                    {
                        info.LastWorkDate = obj == null ? null : dt.Rows[i]["Last Working Day"].ToString();
                        return;
                    }
                    catch
                    {
                        lMessage.Visible = true; this.lMessage.Text = "Last Working Day column is not exits";
                        return;
                    }
                    _dict.Add(info);
                }
                if (_dict.Count > 0)
                {
                    foreach (var item in _dict)
                    {
                        string str;
                        OCM_EmployeeSnapshot employeeInfo = null;
                        try
                        {
                            employeeInfo = BLL.DataDictionaryBLL.GetUserByCode(item.EmployeeCode);
                        }
                        catch { }
                        if (employeeInfo == null)
                        {
                            errorUser.Add(item.EmployeeCode, LanguageChinese ? "用户不存或者已过期在请仔细检查导入数据" : "User Is Not Exist");
                            continue;
                            //ScriptManager.RegisterStartupScript((System.Web.UI.Page)HttpContext.Current.CurrentHandler, typeof(System.Web.UI.Page),
                            //    "success", "<script>alert('" + this.ErrorAlert() + LanguageChinese?"用户信息错误,请核实":"User"+ "!');</script>", false);
                            return;
                        }
                        if (BLL.LeaveReport.IsExistLeaveCalculate(employeeInfo))
                        {
                            errorUser.Add(item.EmployeeCode, LanguageChinese ? "刚导入过" : "Is Exist");
                            continue;
                        }

                        try
                        {
                            Leave_LeaveDateCalculate app = new Leave_LeaveDateCalculate();
                            app.ID = Guid.NewGuid();
                            app.EmployeeID = employeeInfo.EmployeeID;
                            app.EmployeeCode = employeeInfo.EmployeeCode;
                            app.EmployeeName = item.EmployeeName;
                            app.StartWorkDate = null;
                            if (employeeInfo.PositionID != null)
                            {
                                OCM_PositionSnapshot deparInfo = BLL.DataDictionaryBLL.GetDepartmentInfoByID((Guid)employeeInfo.PositionID);
                                if (deparInfo != null)
                                    app.LegalEntityID = deparInfo.LegalEntityID;
                            }
                            if (item.LastWorkDate == null)
                                app.Lastworkday = null;
                            else
                                app.Lastworkday = Convert.ToDateTime(item.LastWorkDate);
                            app.Status = null;
                            app.CreateBy = this.CurrentUser.NTAccount;
                            app.CreateON = DateTime.Now;
                            BLL.LeaveReport.AddLeaveCalculateReport(app);
                            lRightEmployeeCode.Add(new LeaveCulcalateInfo() { EmployeeCode = employeeInfo.EmployeeCode, EmployeeName = item.EmployeeName, LastWorkDate = item.LastWorkDate });
                        }
                        catch (Exception ex) { LogHelper.LogException(ex); }
                    }

                    List<EmployeeCalculateInfo> list = new List<EmployeeCalculateInfo>();
                    if (lRightEmployeeCode.Count > 0)
                    {
                        list = BLL.LeaveReport.GetEmployeeCalculateInfo(null, null, this.CurrentUser.NTAccount, LanguageChinese ? "zh-cn" : "");

                    }
                    AspNetPager1.RecordCount = list.Count;
                    this.Repeater1.DataSource = list.Skip((AspNetPager1.CurrentPageIndex - 1) * this.AspNetPager1.PageSize).Take(this.AspNetPager1.PageSize).ToList<EmployeeCalculateInfo>();
                    this.Repeater1.DataBind();
                    if (File.Exists(savePath))
                        File.Delete(savePath);
                    StringBuilder builder = new StringBuilder();
                    if (errorUser.Count > 0)
                    {
                        foreach (var item in errorUser)
                        {
                            builder.AppendFormat("NT:{0}, Message:{1} 。", item.Key, item.Value);
                        }
                        LogHelper.LogException(builder.ToString(), null);
                        ScriptManager.RegisterStartupScript((System.Web.UI.Page)HttpContext.Current.CurrentHandler, typeof(System.Web.UI.Page),
                      "success", "<script>alert('" + this.SuccessfullAlert() + builder.ToString() + "!');</script>", false);
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript((System.Web.UI.Page)HttpContext.Current.CurrentHandler, typeof(System.Web.UI.Page),
                        "success", "<script>alert('" + this.SuccessfullAlert() + "!');</script>", false);
                    }

                }

            }
            catch (Exception ex)
            {
                LogHelper.LogException(ex);
                ScriptManager.RegisterStartupScript((System.Web.UI.Page)HttpContext.Current.CurrentHandler, typeof(System.Web.UI.Page), "success", "<script>alert('" + this.ErrorAlert() + "!');location.href='frmLeaveDateCalculate.aspx';</script>", false);
            }


 

   public class ImportCSV
    {
        private string path;

        private string fileName;

        public ImportCSV(string filePath, string fileName)//构造函数
        {
            this.path = filePath;
            this.fileName = fileName;
        }

        public DataTable ReadCsvFileToTable()
        {
            return ReadCsvFileToTable(true, ',');
        }

        public DataTable ReadCsvFileToTable(bool HeadYes, char span)
        {
            //文件路径和文件名
            string files = path + fileName;
            DataTable dt = new DataTable();
            StreamReader fileReader = new StreamReader(files, Encoding.Default);
            try
            {
                //是否为第一行(如果HeadYes为TRUE,则第一行为标题行)
                int lsi = 0;
                //列之间的分隔符
                char cv = span;
                while (fileReader.EndOfStream == false)
                {
                    string line = fileReader.ReadLine();
                    string[] y = line.Split(cv);
                    //第一行为标题行
                    if (HeadYes == true)
                    {
                        //第一行
                        if (lsi == 0)
                        {
                            for (int i = 0; i < y.Length; i++)
                            {
                                dt.Columns.Add(y[i].Trim().ToString());
                            }
                            lsi++;
                        }
                        //从第二列开始为数据列
                        else
                        {
                            DataRow dr = dt.NewRow();
                            for (int i = 0; i < y.Length; i++)
                            {
                                dr[i] = y[i].Trim();
                            }
                            dt.Rows.Add(dr);
                        }
                    }

                    //第一行不为标题行

                    else
                    {

                        if (lsi == 0)
                        {
                            for (int i = 0; i < y.Length; i++)
                            {
                                dt.Columns.Add(i.ToString());
                            }
                            lsi++;
                        }

                        DataRow dr = dt.NewRow();

                        for (int i = 0; i < y.Length; i++)
                        {
                            dr[i] = y[i].Trim();
                        }
                        dt.Rows.Add(dr);
                    }
                }
            }

            catch (Exception ex)
            {
                throw ex;
            }

            finally
            {
                fileReader.Close();
                fileReader.Dispose();
            }
            return dt;

        }

    }


 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值