public Attrs Clone() { Attrs attrs = new Attrs(); foreach (Attr attr in this) { attrs.Add(attr); } return(attrs); }
void btn_Click(object sender, EventArgs e) { Button btn = sender as Button; try { BP.Web.Controls.DDL DDL_ImpWay = (BP.Web.Controls.DDL) this.Pub1.FindControl("DDL_ImpWay"); System.Web.UI.WebControls.FileUpload fuit = (System.Web.UI.WebControls.FileUpload) this.Pub1.FindControl("fup"); if (DDL_ImpWay.SelectedIndex == 0) { this.Alert("请选择导入方式."); return; } string tempPath = this.Request.PhysicalApplicationPath + "\\Temp\\"; if (System.IO.Directory.Exists(tempPath) == false) { System.IO.Directory.CreateDirectory(tempPath); } MapDtl dtl = new MapDtl(this.FK_MapDtl); //求出扩展名. string fileName = fuit.FileName.ToLower(); if (fileName.Contains(".xls") == false) { this.Alert("上传的文件必须是excel文件."); return; } string ext = ".xls"; if (fileName.Contains(".xlsx")) { ext = ".xlsx"; } //保存临时文件. string file = tempPath + WebUser.No + ext; fuit.SaveAs(file); GEDtls dtls = new GEDtls(this.FK_MapDtl); System.Data.DataTable dt = BP.DA.DBLoad.GetTableByExt(file); file = this.Request.PhysicalApplicationPath + "\\DataUser\\DtlTemplete\\" + this.FK_MapDtl + ext; if (System.IO.File.Exists(file) == false) { if (ext == ".xlsx") { file = this.Request.PhysicalApplicationPath + "\\DataUser\\DtlTemplete\\" + this.FK_MapDtl + ".xls"; } else { file = this.Request.PhysicalApplicationPath + "\\DataUser\\DtlTemplete\\" + this.FK_MapDtl + ".xls"; } } System.Data.DataTable dtTemplete = BP.DA.DBLoad.GetTableByExt(file); #region 检查两个文件是否一致。 foreach (DataColumn dc in dtTemplete.Columns) { bool isHave = false; foreach (DataColumn mydc in dt.Columns) { if (dc.ColumnName == mydc.ColumnName) { isHave = true; break; } } if (isHave == false) { throw new Exception("@您导入的excel文件不符合系统要求的格式,请下载模版文件重新填入。"); } } #endregion 检查两个文件是否一致。 #region 生成要导入的属性. BP.En.Attrs attrs = dtls.GetNewEntity.EnMap.Attrs; BP.En.Attrs attrsExp = new BP.En.Attrs(); foreach (DataColumn dc in dtTemplete.Columns) { foreach (Attr attr in attrs) { if (attr.UIVisible == false) { continue; } if (attr.IsRefAttr) { continue; } if (attr.Desc == dc.ColumnName.Trim()) { attrsExp.Add(attr); break; } } } #endregion 生成要导入的属性. #region 执行导入数据. if (DDL_ImpWay.SelectedIndex == 1) { BP.DA.DBAccess.RunSQL("DELETE FROM " + dtl.PTable + " WHERE RefPK='" + this.WorkID + "'"); } int i = 0; Int64 oid = BP.DA.DBAccess.GenerOID("Dtl", dt.Rows.Count); string rdt = BP.DA.DataType.CurrentData; string errMsg = ""; foreach (DataRow dr in dt.Rows) { GEDtl dtlEn = dtls.GetNewEntity as GEDtl; dtlEn.ResetDefaultVal(); foreach (BP.En.Attr attr in attrsExp) { if (attr.UIVisible == false || dr[attr.Desc] == DBNull.Value) { continue; } string val = dr[attr.Desc].ToString(); if (val == null) { continue; } val = val.Trim(); switch (attr.MyFieldType) { case FieldType.Enum: case FieldType.PKEnum: SysEnums ses = new SysEnums(attr.UIBindKey); bool isHavel = false; foreach (SysEnum se in ses) { if (val == se.Lab) { val = se.IntKey.ToString(); isHavel = true; break; } } if (isHavel == false) { errMsg += "@数据格式不规范,第(" + i + ")行,列(" + attr.Desc + "),数据(" + val + ")不符合格式,改值没有在枚举列表里."; val = attr.DefaultVal.ToString(); } break; case FieldType.FK: case FieldType.PKFK: Entities ens = null; if (attr.UIBindKey.Contains(".")) { ens = BP.En.ClassFactory.GetEns(attr.UIBindKey); } else { ens = new GENoNames(attr.UIBindKey, "desc"); } ens.RetrieveAll(); bool isHavelIt = false; foreach (Entity en in ens) { if (val == en.GetValStrByKey("Name")) { val = en.GetValStrByKey("No"); isHavelIt = true; break; } } if (isHavelIt == false) { errMsg += "@数据格式不规范,第(" + i + ")行,列(" + attr.Desc + "),数据(" + val + ")不符合格式,改值没有在外键数据列表里."; } break; default: break; } if (attr.MyDataType == BP.DA.DataType.AppBoolean) { if (val.Trim() == "是" || val.Trim().ToLower() == "yes") { val = "1"; } if (val.Trim() == "否" || val.Trim().ToLower() == "no") { val = "0"; } } dtlEn.SetValByKey(attr.Key, val); } dtlEn.RefPKInt = (int)this.WorkID; dtlEn.SetValByKey("RDT", rdt); dtlEn.SetValByKey("Rec", WebUser.No); i++; dtlEn.InsertAsOID(oid); oid++; } #endregion 执行导入数据. if (string.IsNullOrEmpty(errMsg) == true) { this.Alert("共有(" + i + ")条数据导入成功。"); } else { this.Alert("共有(" + i + ")条数据导入成功,但是出现如下错误:" + errMsg); } } catch (Exception ex) { string msg = ex.Message.Replace("'", "‘"); this.Alert(msg); } }
void btn_Click(object sender, EventArgs e) { Button btn = sender as Button; try { BP.Web.Controls.DDL DDL_ImpWay = (BP.Web.Controls.DDL) this.Pub1.FindControl("DDL_ImpWay"); System.Web.UI.WebControls.FileUpload fuit = (System.Web.UI.WebControls.FileUpload) this.Pub1.FindControl("fup"); if (DDL_ImpWay.SelectedIndex == 0) { this.Alert("请选择导入方式."); return; } MapDtl dtl = new MapDtl(this.FK_MapDtl); string file = this.Request.PhysicalApplicationPath + "\\Temp\\" + WebUser.No + ".xls"; fuit.SaveAs(file); GEDtls dtls = new GEDtls(this.FK_MapDtl); System.Data.DataTable dt = BP.DBLoad.GetTableByExt(file); file = this.Request.PhysicalApplicationPath + "\\DataUser\\DtlTemplete\\" + this.FK_MapDtl + ".xls"; System.Data.DataTable dtTemplete = BP.DBLoad.GetTableByExt(file); #region 检查两个文件是否一致。 foreach (DataColumn dc in dtTemplete.Columns) { bool isHave = false; foreach (DataColumn mydc in dt.Columns) { if (dc.ColumnName == mydc.ColumnName) { isHave = true; break; } } if (isHave == false) { throw new Exception("@您导入的excel文件不符合系统要求的格式,请下载模版文件重新填入。"); } } #endregion 检查两个文件是否一致。 #region 生成要导入的属性. BP.En.Attrs attrs = dtls.GetNewEntity.EnMap.Attrs; BP.En.Attrs attrsExp = new BP.En.Attrs(); foreach (DataColumn dc in dtTemplete.Columns) { foreach (Attr attr in attrs) { if (attr.UIVisible == false) { continue; } if (attr.IsRefAttr) { continue; } if (attr.Desc == dc.ColumnName.Trim()) { attrsExp.Add(attr); break; } } } #endregion 生成要导入的属性. #region 执行导入数据. if (DDL_ImpWay.SelectedIndex == 1) { BP.DA.DBAccess.RunSQL("DELETE " + dtl.PTable + " WHERE RefPK='" + this.WorkID + "'"); } int i = 0; Int64 oid = BP.DA.DBAccess.GenerOID(this.FK_MapDtl, dt.Rows.Count); string rdt = BP.DA.DataType.CurrentData; foreach (DataRow dr in dt.Rows) { GEDtl dtlEn = dtls.GetNewEntity as GEDtl; dtlEn.ResetDefaultVal(); foreach (BP.En.Attr attr in attrsExp) { if (attr.UIVisible == false || dr[attr.Desc] == DBNull.Value) { continue; } string val = dr[attr.Desc].ToString(); if (val == null) { continue; } val = val.Trim(); switch (attr.MyFieldType) { case FieldType.Enum: case FieldType.PKEnum: SysEnums ses = new SysEnums(attr.UIBindKey); foreach (SysEnum se in ses) { if (val == se.Lab) { val = se.IntKey.ToString(); break; } } break; case FieldType.FK: case FieldType.PKFK: break; default: break; } dtlEn.SetValByKey(attr.Key, val); } dtlEn.RefPKInt = (int)this.WorkID; dtlEn.SetValByKey("RDT", rdt); dtlEn.SetValByKey("Rec", WebUser.No); i++; dtlEn.InsertAsOID(oid); oid++; } #endregion 执行导入数据. this.Alert("共有(" + i + ")条数据导入成功。"); } catch (Exception ex) { string msg = ex.Message.Replace("'", "‘"); this.Alert(msg); } }