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;
}
}
2208

被折叠的 条评论
为什么被折叠?



