阅读:4378 回复:7
H3BPM
655

帖子

2504

跟帖

46406

积分

管理员
管理员
  • 社区居民

[技术实例]如何批量导入用户和组织?

楼主#
更多 发布于:2017-02-09 09:59
如何批量导入用户和组织?

进入后台管理,点开组织机构下面的同步设置。

如果没有现成的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



本帖整理于 批量导入用户和组织的功能有吗 ?

最新喜欢:

实名用户_64a7bb6f实名用户_6...
10月签到活动奖励发放啦:http://bbs.h3bpm.com/read.php?tid=5377&fid=5
111
111
3

帖子

161

跟帖

3593

积分

黄金榴莲
黄金榴莲
  • 社区居民
1楼#
发布于:2017-02-09 10:15
谢楼主分享
力微休负重,言轻莫劝人!
秦始皇
167

帖子

1099

跟帖

19415

积分

论坛版主
论坛版主
  • 社区居民
  • 忠实会员
2楼#
发布于:2017-02-09 14:07
llleeeddd
5

帖子

16

跟帖

1023

积分

中级榴莲
中级榴莲
3楼#
发布于:2017-04-21 17:36
请问,这两段分别写在哪里?是要写到相应的源代码文件里,还是有相应的设置界面可以写入?
东门之菀
9

帖子

47

跟帖

1438

积分

黄金榴莲
黄金榴莲
  • 社区居民
4楼#
发布于:2017-05-08 19:10
同四楼问。。。
SO
SO
9

帖子

13

跟帖

10

积分

中级榴莲
中级榴莲
5楼#
发布于:2017-11-29 21:07
写入数据库数据没有显示。难道ID有规则?
SO
SO
9

帖子

13

跟帖

10

积分

中级榴莲
中级榴莲
6楼#
发布于:2017-11-29 21:28
原来数据库只是备用存在内存中的
东门之菀
9

帖子

47

跟帖

1438

积分

黄金榴莲
黄金榴莲
  • 社区居民
7楼#
发布于:2018-03-04 21:25
对小白能不能说具体一点,不懂啊,怎么做
游客

返回顶部