泛型导入丶验证和异常提示

//数据验证Validata<T>();//转换为集合DataTableToList<T>();//数据异常处理SetValue<T>();//文件导入ExcelImport();

 1     public class GenericExcelToList
 2     {
 3         public static List<ValidationResult> Validata<T>(List<T> lists) {
 4             var vrs = new List<ValidationResult>();
 5             for (int i = 0; i < lists.Count; i++) {
 6                 List<ValidationResult> vr = Validata(lists[i]);
 7                 foreach (var vd in vr) {
 8                     vd.ErrorMessage = "第" + (i + 1) + "行," + vd.ErrorMessage;
 9                 }
10                 vrs.AddRange(vr);
11                 if (vr.Count > 3)
12                 {
13                     vrs = vrs.GetRange(0, 3);
14                     vrs[vrs.Count - 1].ErrorMessage += "等......";
15                     break;
16                 }
17             }
18             return vrs;
19         }
20         public static List<ValidationResult> Validata<T>(T t)
21         {
22             var vc = new ValidationContext(t, null, null);
23             var vr = new List<ValidationResult>();
24             Validator.TryValidateObject(t, vc, vr, trure);
25             return vr;
26         }
27         public static void SetValue<T>(PropertyInfo property, string value, T t) {
28             string type = property.PropertyType.Name.ToLower();
29             if (type == "nullable`1")
30                 type = property.PropertyType.GetGenericArguments()[0].Name.ToLower();
31             switch (type) {
32                 case "int32":
33                     property.SetValue(t,Convert.ToInt32(value),null);
34                     break;
35                 case "string":
36                     property.SetValue(t,value,null);
37                     break;
38                 case "double":
39                     property.SetValue(t, Convert.ToDouble(value), null);
40                     break;
41                 case "decimal":
42                     property.SetValue(t, Convert.ToDecimal(value), null);
43                     break;
44                 case "datetime":
45                     property.SetValue(t, Convert.ToDateTime(value), null);
46                     break;
47                 default:
48                     property.SetValue(t, value, null);
49                     break;
50             }
51         }
52         public static void DataTableToList<T>(string keys, List<T> lists, DataTable dt) where T : new() {
53             string[] splitKeys = keys.Split(‘,‘);
54             PropertyInfo[] properties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
55             for (var row = 0; row < dt.Rows.Count; row++) {
56                 var t = new T();
57                 for (var column = 0; column < dt.Columns.Count; column++) {
58                     try
59                     {
60                         var value = dt.Rows[row][column].ToString();
61                         if (value == "") continue;
62                         if (column > splitKeys.Count()) break;
63                         PropertyInfo property = properties.FirstOrDefault(m => m.Name == splitKeys[column]);
64                         if (property == null) continue;
65                         SetValue(property, value, t);
66                     }
67                     catch (Exception e)
68                     {
69                         e.HelpLink="导入数据第"+(row+1)+"行"+dt.Columns[column].ColumnName+"数据格式有误!";
70                         throw e;
71                     }
72                 }
73                 lists.Add(t);
74             }
75         }
76         public static Boolean IsColumnNamesEqual(string keys, DataTable dt)
77         {
78             var columnNames = (from DataColumn column in dt.Columns select column.ColumnName).ToList();
79             string dtColumnNames = string.Join(",", columnNames);
80             return keys == dtColumnNames;
81         }
82         public static Boolean IsColumnsEqual(string keys, DataTable dt) {
83             string[] splitKeys = keys.Split(‘,‘);
84             return splitKeys.Count() == dt.Columns.Count;
85         }
86         public static DataTable ExcelImport(string fileName) {
87             var book = new Workbook(fileName);
88             worksheet sheet = book.Worksheets[0];
89             Cells cells = sheet.Cells;
90             DataTable dt = cells.ExportDataTableAsString(0, 0, cells.MaxDataRow + 1, cells.MaxDataColomn + 1, true);
91             return dt;
92         }
93     }
时间: 2024-10-13 17:29:24

泛型导入丶验证和异常提示的相关文章

CentOS下yii异常提示某个文件夹没有写的权限

CentOS下yii异常提示某个文件夹没有写的权限,明明给了最高的777权限,却一直提示没有写的权限.弄了好久,才明白是selinux作怪. 解决方法1:懒人方法,关闭selinux.比如 setenforce 0  等等... 生产环境中,基于安全性的考虑,不建议关闭selinux 解决方法2:彻底解决:chcon -R -t httpd_sys_content_t /your yii app dir.

myeclipes代码提示异常提示

The'org.eclipse.jdt.ui.JavaAllCompletionProposalComputer' Proposal computer from the ' org.eclipse.jdt.ui' plug-in did not complete normally. ' computeCompletionProposals()' operation. To avoid this message, disable the ' org.eclipse.jdt.ui' plug-in

捕捉Entity framework 6的详细异常提示

采用 try { } catch (Exception e) { throw; } 不能捕捉到详细异常提示, e.message的内容为"Validation failed for one or more entities. See 'EntityValidationErrors' property for more details." 如果需要获取详细的异常提示,采用 1 try 2 { 3 return base.SaveChanges(); 4 } 5 catch (DbEnti

Kendo Grid editing 自定义验证报错提示

Kendo UI是一个强大的框架用于快速HTML5 UI开发.基于最新的HTML5.CSS3和JavaScript标准. Kendo UI包含了开发现代JavaScript开发所需要的所有一切,包括:强大的数据源,通用的拖拉(Drag-and-Drop)功能,模板,和UI控件. 今天开始就对项目里使用的kendo控件技巧做记录,有个别错误希望大家不吝指出,谢谢. 首先就是Grid控件编辑是,验证错误时弹出的提示居然是中文加字段名字,如下图.抓狂啊!!请问这样的低级的提示能拿得出手吗? 这样的提示

去掉不想要的异常提示

今天在调试公司项目的时候出现了这样的提示: 引发了异常,行 1653,列 4,在 http://localhost:24333/Scripts/jquery-1.10.2.js 中0x800a139e - JavaScript 运行时错误: SyntaxError 开始以为是jQuery版本问题,修改成1.8.2之后还是会有这个提示,只不过文件版本号变成1.8.2, 稍微搜索了一下,发现这是jQuery自己会处理的异常,但是VS还是会固执的提示这个异常 后来和其它同事的配置比较了一下,原来是选项

android工程导入没有错误,运行提示Unable to instantiate activity ComponentInfo

导入小米clientside_android_sdk的demo OAuth-OpenAuthDemo,点Java Build Path的Libraries内Add External JARs,将oauth-xiaomiopenauth.jar包引入. clean工程,然后build project,随之run的时候,提示: Unable to instantiate activity ComponentInfo之类,java.lang.RuntimeException: Unable to in

后端自动验证与错误提示

验证错误提示:控制器里调取模型中的方法 $this->error($cate->getError()); 模型里CateModel.class.php: <?php namespace Admin\Model; use Think\Model; class CateModel extends Model{ protected $_validate = array( array('catename','require','不能为空',1,'regesx',3), //默认情况下用正则进行验

laravel5.4中验证与错误提示设置

1.对于交互提交数据,验证如: #验证 $this->validate(\request(),[ 'title' => 'required|string|min:3|max:20', 'content' => 'required|string|min:10', ],[ 'title.min' => 'this is short', # 自定义提示内容 ]); 2.具体对字段的系统提供限制,参考:resource/lang/cn/validation.php 3.如果想将英文提示换成

ASP.NET Core 2.2 WebApi 系列【八】统一返回格式(返回值、模型验证、异常)

现阶段,基本上都是前后端分离项目,这样一来,就需要前后端配合,没有统一返回格式,那么对接起来会很麻烦,浪费时间.我们需要把所有接口及异常错误信息都返回一定的Json格式,有利于前端处理,从而提高了工作效率. 一.准备工作 定义响应实体类 /// <summary> /// 响应实体类 /// </summary> public class ResultModel { /// <summary> /// 状态码 /// </summary> public in