阅读:4877
回复:7
|
[技术实例]如何批量导入用户和组织?
如何批量导入用户和组织?
进入后台管理,点开组织机构下面的同步设置。 如果没有现成的AD用户,就做个EXCEL表导入数据到数据库 Excel导入组织架构的模板和关键代码 前台代码: <div> <asp:FileUpload ID="FileUpload7" runat="server" Width="200px" /><div> 组织信息导入 <asp:TextBox runat="server" ID="TextBox3" Width="100px"/> <asp:Button ID="Button7" runat="server" Text="导入" Width="100px" OnClick="Button7_Click" /> </div> </div> 后台代码: protected void Button7_Click(object sender, EventArgs e) { IWorkbook workbook = null; if (FileUpload7.HasFile) { string upfile = Server.MapPath("") + "/Temp/" + FileUpload7.PostedFile.FileName; if (!Directory.Exists(Server.MapPath("") + "/Temp/")) { Directory.CreateDirectory(Server.MapPath("") + "/Temp/"); } FileUpload7.PostedFile.SaveAs(upfile); string newpath = upfile; using (FileStream fs = File.OpenRead(newpath)) //打开myxls.xls文件 { if (FileUpload7.PostedFile.FileName.IndexOf(".xlsx") > 0) // 2007版本 workbook = new XSSFWorkbook(fs); else if (FileUpload7.PostedFile.FileName.IndexOf(".xls") > 0) // 2003版本 workbook = new HSSFWorkbook(fs); #region 导入组织信息 ISheet sheet = workbook.GetSheetAt(0); //读取当前表数据 for (int j = 1; j <= sheet.LastRowNum; j++) //LastRowNum 是当前表的总行数 { IRow row = sheet.GetRow(j); //读取当前行数据 if (row != null&&row.Cells.Count>0) { #region 导入单位信息 var code = row.Cells[0].StringCellValue.Trim(); var parentid = OThinker.H3.WorkSheet.AppUtility.Engine.Organization.Company.CompanyID; var name = row.Cells[2].StringCellValue.Trim(); var unit = new OThinker.Organization.OrganizationUnit() { ObjectID = Guid.NewGuid().ToString(), Code = code, CompanyID = OThinker.H3.WorkSheet.AppUtility.Engine.Organization.Company.CompanyID, Name = name, ParentID = parentid, // Sort Key SortKey = j, // 类型 CategoryID = null }; // 写入服务器 var result = OThinker.Organization.HandleResult.SUCCESS; if (OThinker.H3.WorkSheet.AppUtility.Engine.Organization.GetUnitByCode(code) != null) { result = OThinker.H3.WorkSheet.AppUtility.Engine.Organization.UpdateUnit(null, unit); } else { result = OThinker.H3.WorkSheet.AppUtility.Engine.Organization.AddUnit(null, unit); } if (result != OThinker.Organization.HandleResult.SUCCESS) { OThinker.H3.WorkSheet.AppUtility.Engine.LogWriter.Write(name); } #endregion } } #endregion #region 导入用户信息 sheet = workbook.GetSheetAt(1); //读取当前表数据 for (int j = 1; j <= sheet.LastRowNum; j++) //LastRowNum 是当前表的总行数 { IRow row = sheet.GetRow(j); //读取当前行数据 if (row != null && row.Cells.Count > 0) { #region 导入单位信息 var oucode = row.Cells[0].StringCellValue.Trim(); var code = row.Cells[1].StringCellValue.Trim(); var parentou = OThinker.H3.WorkSheet.AppUtility.Engine.Organization.GetUnitByCode(oucode); var name = row.Cells[2].StringCellValue.Trim(); var employeenumber = row.Cells[3].ToString().Trim().Replace(" ", ""); var birthday = row.Cells[4].DateCellValue; var email = row.Cells[5].ToString().Trim(); var officemobile = row.Cells[6]==null?"": row.Cells[6].ToString().Trim(); var unit = new OThinker.Organization.User() { ObjectID = Guid.NewGuid().ToString(), Code = code, CompanyID = OThinker.H3.WorkSheet.AppUtility.Engine.Organization.Company.CompanyID, Name = name, ParentID = parentou == null ? OThinker.H3.WorkSheet.AppUtility.Engine.Organization.Company.CompanyID : parentou.ObjectID, // Sort Key SortKey = j, // 类型 CategoryID = null, EmployeeNumber = employeenumber, OfficePhone = officemobile, Email = email, Birthday = birthday }; // 写入服务器 OThinker.Organization.HandleResult result = OThinker.Organization.HandleResult.SUCCESS; if (OThinker.H3.WorkSheet.AppUtility.Engine.Organization.GetUserByEmployeeNumber(code) != null) { result = OThinker.H3.WorkSheet.AppUtility.Engine.Organization.UpdateUnit(null, unit); } else { result = OThinker.H3.WorkSheet.AppUtility.Engine.Organization.AddUnit(null, unit); } if (result != OThinker.Organization.HandleResult.SUCCESS) { OThinker.H3.WorkSheet.AppUtility.Engine.LogWriter.Write(name); } #endregion } } #endregion File.Delete(upfile); } } } Excel整理模板 图片:0.png ![]() 本帖整理于 批量导入用户和组织的功能有吗 ? |
最新喜欢:![]()
|
3楼#
发布于:2017-04-21 17:36
请问,这两段分别写在哪里?是要写到相应的源代码文件里,还是有相应的设置界面可以写入?
|
|