C# .NET MVC 读取Excel文件或者读取CSV文件的方法

 #region 恢复角色信息 result为文件完整路径,fileExtension为文件后缀名
        public bool RoleData(string result, string fileExtension)
        {
            try
            {
                FileStream fs = new FileStream(result, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);//编码方式与写入文件相同
                //文件处理后的数据集合
                List data = new List();
                //StringBuilder sb = new StringBuilder();
                //按行读取文件到data里面
                while (!sr.EndOfStream)
                {
                    data.Add(sr.ReadLine());
                }
                //处理CSV文件
                if (fileExtension == ".csv" || fileExtension == ".CSV")
                {
                    string[] HeadArray = { }; //字符串转数组
                    string Headstr = (string)data[0];
                    HeadArray = Headstr.Split(',');
                    //判断文件格式
                    if (HeadArray.Length != 2)
                    {
                        return false;
                    }
                    if (HeadArray[0] != "RoleName")
                    {
                        return false;
                    }
                    if (HeadArray[1] != "IsActive")
                    {
                        return false;
                    }
                    //处理数据内容
                    for (int i = 1; i < data.Count; i++)
                    {
                        string[] strArray = { }; //字符串转数组
                        string str = (string)data[i];
                        SystemRoles Role = new SystemRoles();
                        strArray = str.Split(','); //字符串转数组
                                                   //int num=strArray.Length - 1;
                        Role.RoleName = strArray[0];
                        Role.IsActive = bool.Parse(strArray[1]);

                        //查询数据库中是否存在该条数据,存在就跳过
                        using (OSIMSystemEntities db = new OSIMSystemEntities())
                        {
                            string RoleName = strArray[0];
                            //保证系统管理员的基本权限
                            if (RoleName == "系统管理员")
                            {
                                //表里有系统管理员这个角色就验证权限,没有则添加该角色
                                if (db.SystemRoles.Where(m => m.RoleName == RoleName).Count() > 0)
                                {
                                    //判断关系表中是否存在该权限,存在则跳过不存在则添加权限
                                    for (int a = 2; a < 10; a++)
                                    {
                                        int Fid = db.SystemFunction.FirstOrDefault(m => m.OrderbyId == a).ID;
                                        int Rid = db.SystemRoles.FirstOrDefault(m => m.RoleName == "系统管理员").ID;
                                        if (db.Function_Role.Where(m => m.RoleId == Rid && m.FunctionId == Fid).Count() > 0)
                                        {
                                            continue;
                                        }
                                        else
                                        {
                                            Function_Role function_Role = new Function_Role();
                                            function_Role.FunctionId = Fid;
                                            function_Role.RoleId = Rid;
                                            db.Function_Role.Add(function_Role);
                                            db.SaveChanges();
                                        }
                                    }
                                }
                                else
                                {
                                    //添加系统管理员
                                    db.SystemRoles.Add(Role);
                                    db.SaveChanges();
                                }
                            }
                            else
                            {
                                if (db.SystemRoles.Where(m => m.RoleName == RoleName).Count() > 0)
                                {
                                    continue;
                                }
                            }

                        }

                        //添加该条数据到数据库
                        using (OSIMSystemEntities db = new OSIMSystemEntities())
                        {
                            string RoleName = strArray[0];
                            //添加该角色后验证权限
                            if (RoleName == "系统管理员")
                            {
                                //判断关系表中是否存在该权限,存在则跳过不存在则添加权限
                                for (int a = 2; a < 10; a++)
                                {
                                    int Fid = db.SystemFunction.FirstOrDefault(m => m.OrderbyId == a).ID;
                                    int Rid = db.SystemRoles.FirstOrDefault(m => m.RoleName == "系统管理员").ID;
                                    if (db.Function_Role.Where(m => m.RoleId == Rid && m.FunctionId == Fid).Count() > 0)
                                    {
                                        continue;
                                    }
                                    else
                                    {
                                        Function_Role function_Role = new Function_Role();
                                        function_Role.FunctionId = Fid;
                                        function_Role.RoleId = Rid;
                                        db.Function_Role.Add(function_Role);
                                        db.SaveChanges();
                                    }
                                }
                            }
                            else
                            {
                                db.SystemRoles.Add(Role);
                                db.SaveChanges();
                            }

                        }


                    }

                    fs.Close();
                    fs.Dispose();
                }
                //处理Excel文件
                if (fileExtension == ".xls" || fileExtension == ".xlsx" || fileExtension == ".XLS" || fileExtension == ".XLSX")
                {
                    //Excel文件的一行数据处理成list开始
                    string head = (string)data[0];
                    var Array = head.Replace("\n", ",").Replace(" ", ",").Replace("\t", ",").Replace("\r", ","); ; //字符串转数组                                 
                    var HeadList = Array.Split(',').ToList();
                    //判断文件格式
                    if (HeadList.Count != 2)
                    {
                        return false;
                    }
                    if (HeadList[0] != "RoleName")
                    {
                        return false;
                    }
                    if (HeadList[1] != "IsActive")
                    {
                        return false;
                    }
                    //Excel文件的一行数据处理成list结束
                    //处理数据内容
                    for (int i = 1; i < data.Count; i++)
                    {
                        string str = (string)data[i];
                        SystemRoles Role = new SystemRoles();
                        var Str = str.Replace("\n", ",").Replace(" ", ",").Replace("\t", ",").Replace("\r", ","); ; //字符串转数组                                 
                        var DataList = Str.Split(',').ToList();
                        //int num=strArray.Length - 1;
                        Role.RoleName = DataList[0];
                        Role.IsActive = bool.Parse(DataList[1]);

                        //查询数据库中是否存在该条数据,存在就跳过
                        using (OSIMSystemEntities db = new OSIMSystemEntities())
                        {
                            string RoleName = DataList[0];
                            //保证系统管理员的基本权限
                            if (RoleName == "系统管理员")
                            {
                                //表里有系统管理员这个角色就验证权限,没有则添加该角色
                                if (db.SystemRoles.Where(m => m.RoleName == RoleName).Count() > 0)
                                {
                                    //判断关系表中是否存在该权限,存在则跳过不存在则添加权限
                                    for (int a = 2; a < 10; a++)
                                    {
                                        int Fid = db.SystemFunction.FirstOrDefault(m => m.OrderbyId == a).ID;
                                        int Rid = db.SystemRoles.FirstOrDefault(m => m.RoleName == "系统管理员").ID;
                                        if (db.Function_Role.Where(m => m.RoleId == Rid && m.FunctionId == Fid).Count() > 0)
                                        {
                                            continue;
                                        }
                                        else
                                        {
                                            Function_Role function_Role = new Function_Role();
                                            function_Role.FunctionId = Fid;
                                            function_Role.RoleId = Rid;
                                            db.Function_Role.Add(function_Role);
                                            db.SaveChanges();
                                        }
                                    }
                                }
                                else
                                {
                                    //添加系统管理员
                                    db.SystemRoles.Add(Role);
                                    db.SaveChanges();
                                }
                            }
                            else
                            {
                                if (db.SystemRoles.Where(m => m.RoleName == RoleName).Count() > 0)
                                {
                                    continue;
                                }
                            }

                        }

                        //添加该条数据到数据库
                        using (OSIMSystemEntities db = new OSIMSystemEntities())
                        {
                            string RoleName = DataList[0];
                            //添加该角色后验证权限
                            if (RoleName == "系统管理员")
                            {
                                //判断关系表中是否存在该权限,存在则跳过不存在则添加权限
                                for (int a = 2; a < 10; a++)
                                {
                                    int Fid = db.SystemFunction.FirstOrDefault(m => m.OrderbyId == a).ID;
                                    int Rid = db.SystemRoles.FirstOrDefault(m => m.RoleName == "系统管理员").ID;
                                    if (db.Function_Role.Where(m => m.RoleId == Rid && m.FunctionId == Fid).Count() > 0)
                                    {
                                        continue;
                                    }
                                    else
                                    {
                                        Function_Role function_Role = new Function_Role();
                                        function_Role.FunctionId = Fid;
                                        function_Role.RoleId = Rid;
                                        db.Function_Role.Add(function_Role);
                                        db.SaveChanges();
                                    }
                                }
                            }
                            else
                            {
                                db.SystemRoles.Add(Role);
                                db.SaveChanges();
                            }

                        }

                    }

                    fs.Close();
                    fs.Dispose();
                }


                //删除上传到服务器的文件资源
                System.IO.File.Delete(result);

                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        #endregion
————————————————
版权声明:本文为CSDN博主「小白」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44217121/article/details/122954130

 

方法是以文件流的方式读取

你可能感兴趣的:(笔记,mvc,c#,.net)