导入(批量增加)

  1   public HandlerResponse UpLoadBank()
  2         {
  3             HandlerResponse hres = new HandlerResponse();
  4             this.Context.Response.AddHeader("Content-Type", "text/html; charset=utf-8");
  5             DataTable dt = new DataTable("BankT");
  6
  7             #region 规则
  8             //必须有商户号和生效日期,才进行导入,
  9             //且必商户号和生效日期存在,才更新,这里不进行插入数据
 10             #endregion
 11             int pointIndex = Context.Request.Files[0].FileName.LastIndexOf(".");
 12             string lastName = Context.Request.Files[0].FileName.Substring(pointIndex);
 13             #region 检查文件格式
 14             if (lastName != ".xlsx")
 15             {
 16                 hres.ErrorCode = "0000000001";
 17                 hres.ErrorMessage = "文件上传格式不正确,只支持.xlsx文件";
 18                 return hres;
 19             }
 20             #endregion
 21             // string  userAccount =ObjectToData.getString(context.Request["userAccount"]);
 22             if (Context.Request.Files[0].ContentLength < 1) { throw new Exception("您上传的文件大小为0K,文件名:" + Context.Request.Files[0].FileName); }
 23             XLWorkbook workbook = new XLWorkbook(Context.Request.Files[0].InputStream);
 24             IXLWorksheet worksheet = workbook.Worksheet(1);
 25             #region 制作表
 26
 27             // dt.Columns.Add("ID");
 28             dt.Columns.Add("merchant_id");//商户ID
 29             dt.Columns.Add("bank_account");//银行账户
 30             dt.Columns.Add("bank_name");//开户银行
 31             dt.Columns.Add("sub_bank_name");//开户支行
 32             dt.Columns.Add("lian_hang_number");//联行号
 33             dt.Columns.Add("account_name");//开户人姓名
 34             dt.Columns.Add("iden_sn");//身份证号码
 35             dt.Columns.Add("telephone");//持卡人联系电话
 36
 37             #endregion
 38             int merchant_id;
 39             HashSet<string> merchanthashset = new HashSet<string>();
 40
 41             #region 赋值
 42             for (int i = 2; i <= 50000; i++)
 43             {
 44                 int is_permit = 0;//必须有商户号和生效日期,且
 45                 var row = worksheet.Row(i);
 46                 //得到标题,然后动态的获取列
 47                 if (row != null && row.Cell(1).Value.ToString().Length > 0)
 48                 {
 49                     DataRow dataRow = dt.NewRow();
 50                     int merchantColumn = GetColumnNum(dt, "商户号", worksheet);
 51
 52                     if (merchantColumn > 0)
 53                     {
 54                         is_permit++;
 55                         if (!int.TryParse(row.Cell(merchantColumn).Value.ToString(), out merchant_id))
 56                         {
 57                             hres.ErrorCode = "0000000001";
 58                             hres.ErrorMessage = "第" + i + "行," + merchantColumn + "列," + row.Cell(merchantColumn).Value.ToString() + "商户号格式不正确";
 59                             return hres;
 60                         }
 61                         dataRow["merchant_id"] = row.Cell(merchantColumn).Value;
 62                         merchanthashset.Add(row.Cell(merchantColumn).Value.ToString().Trim());
 63                     }
 64                     // /^\d{1,30}$/
 65                     int bank_accountColumn = GetColumnNum(dt, "银行账号", worksheet);
 66                     if (bank_accountColumn > 0) //1收单手续J卡。
 67                     {
 68                         is_permit++;
 69                         if (isBank_account(row.Cell(bank_accountColumn).Value.ToString()) == false)
 70                         {
 71                             hres.ErrorCode = "0000000001";
 72                             hres.ErrorMessage = "第" + i + "行," + bank_accountColumn + "列,银行账号为30位以内的数字!";
 73                             return hres;
 74                             // throw new Exception();
 75                         }
 76
 77                         dataRow["bank_account"] = row.Cell(bank_accountColumn).Value;
 78                     }
 79                     int bank_nameColumn = GetColumnNum(dt, "开户银行", worksheet);
 80                     if (bank_nameColumn > 0) //2  收单手续费V卡
 81                     {
 82                         is_permit++;
 83                         if (row.Cell(bank_nameColumn).Value.ToString().Trim().Length > 50 || row.Cell(bank_nameColumn).Value.ToString().Trim().Length == 0)
 84                         {
 85                             hres.ErrorCode = "0000000001";
 86                             hres.ErrorMessage = "第" + i + "行," + bank_nameColumn + "列,开户银行长度应大于0小于50";
 87                             return hres;
 88                             //throw new Exception("收单手续费M卡允许是0-100之间的有效数字");
 89                         }
 90
 91
 92                         dataRow["bank_name"] = row.Cell(bank_nameColumn).Value;
 93                     }
 94                     int sub_bank_nameColumn = GetColumnNum(dt, "开户支行", worksheet);
 95                     if (sub_bank_nameColumn > 0) //3 收单手续费M卡
 96                     {
 97                         is_permit++;
 98                         if (row.Cell(sub_bank_nameColumn).Value.ToString().Trim().Length > 50 || row.Cell(sub_bank_nameColumn).Value.ToString().Trim().Length == 0)
 99                         {
100                             hres.ErrorCode = "0000000001";
101                             hres.ErrorMessage = "第" + i + "行," + sub_bank_nameColumn + "列,开户支行长度应大于0小于50";
102                             return hres;
103                             //throw new Exception("收单手续费M卡允许是0-100之间的有效数字");
104                         }
105
106                         dataRow["sub_bank_name"] = row.Cell(sub_bank_nameColumn).Value;
107                     }
108                     ///^\d{1,20}$/
109                     int lian_hang_numberColumn = GetColumnNum(dt, "联行号", worksheet);
110                     if (lian_hang_numberColumn > 0)
111                     {
112                         is_permit++;
113                         if (isLian_hang_numberColumn(row.Cell(lian_hang_numberColumn).Value.ToString()) == false)
114                         {
115                             hres.ErrorCode = "0000000001";
116                             hres.ErrorMessage = "第" + i + "行," + lian_hang_numberColumn + "列,联行号为20位以内的数字";
117                             return hres;
118                             // throw new Exception("结算周期格式错误");
119                         }
120                         dataRow["lian_hang_number"] = row.Cell(lian_hang_numberColumn).Value;
121                     }
122                     int account_nameColumn = GetColumnNum(dt, "开户人姓名", worksheet);
123                     if (account_nameColumn > 0)
124                     {
125                         is_permit++;
126                         if (row.Cell(account_nameColumn).Value.ToString().Trim().Length > 50 || row.Cell(account_nameColumn).Value.ToString().Trim().Length == 0)
127                         {
128                             hres.ErrorCode = "0000000001";
129                             hres.ErrorMessage = "第" + i + "行," + account_nameColumn + "列,开户人姓名长度应大于0小于50";
130                             return hres;
131                             //throw new Exception("收单手续费M卡允许是0-100之间的有效数字");
132                         }
133                         dataRow["account_name"] = row.Cell(account_nameColumn).Value;
134                     }
135                     int iden_snColumn = GetColumnNum(dt, "身份证号码", worksheet);
136
137                     if (iden_snColumn > 0)
138                     {
139                         if (row.Cell(iden_snColumn).Value.ToString().Trim().Length > 20 || row.Cell(iden_snColumn).Value.ToString().Trim().Length == 0)
140                         {
141                             hres.ErrorCode = "0000000001";
142                             hres.ErrorMessage = "第" + i + "行," + iden_snColumn + "列,身份证号码名长度应大于0小于20";
143                             return hres;
144                             //throw new Exception("收单手续费M卡允许是0-100之间的有效数字");
145                         }
146                         dataRow["iden_sn"] = row.Cell(iden_snColumn).Value;
147                     }
148                     int telephoneColumn = GetColumnNum(dt, "手机号码", worksheet);
149                     if (telephoneColumn > 0)
150                     {
151                         if (isLian_hang_numberColumn(row.Cell(telephoneColumn).Value.ToString()) == false)
152                         {
153                             hres.ErrorCode = "0000000001";
154                             hres.ErrorMessage = "第" + i + "行," + telephoneColumn + "列,手机号码为20位以内的数字";
155                             return hres;
156                             // throw new Exception(" ");
157                         }
158                         dataRow["telephone"] = row.Cell(telephoneColumn).Value;
159                     }
160                     if (is_permit < 6)
161                     {
162                         hres.ErrorMessage = "导入数据中必须存在商户号,银行账号,开户银行,开户支行,联行号,开户人姓名";
163                         hres.ErrorCode = "0000000001";
164                         return hres;
165                     }
166                     dt.Rows.Add(dataRow);
167                 }
168                 else
169                 {
170                     break;
171                 }
172             }
173             #endregion
174             #region 更新
175             MB_DAL.MerManage.MerMerchBankAccount mermerchbank = new MB_DAL.MerManage.MerMerchBankAccount();
176             MB_DAL.MerManage.MerMerch mermerch = new MB_DAL.MerManage.MerMerch();
177
178
179             eap.share.DAO trandao = new eap.share.DAO();
180             DataTable temp = new DataTable();
181
182             #region 查询数据是否存在
183
184             for (int i = 0; i < dt.Rows.Count; i++)
185             {
186                 temp = mermerchbank.GetMerMerchBankAccount(dt.Rows[i]["merchant_id"].ToString(), dt.Rows[i]["bank_account"].ToString());
187                 if (temp.Rows.Count > 0)
188                 {
189                     hres.ErrorCode = "0000000001";
190                     hres.ErrorMessage = "商户号:" + dt.Rows[0]["merchant_id"].ToString() + ",银行账号" + dt.Rows[i]["bank_account"].ToString() + "已存在";
191                     return hres;
192                 }
193                 else
194                 {
195
196                 }
197             }
198
199             #endregion
200             #region 检查商户是否存在
201             foreach (var s in merchanthashset)
202             {
203                 if (mermerch.CheckMerchant(s.ToString(), 1).Rows.Count <= 0)
204                 {
205                     hres.ErrorCode = "0000000001";
206                     hres.ErrorMessage = "商户号:" + s + "不存在或者未开通";
207                     return hres;
208                 }
209             }
210             #endregion
211             StringBuilder log_desc = new StringBuilder();
212             CMLoger.WriteDebugLog("[商户管理-结算信息维护]-银行账户导入【开始】,操作人" + "[" + base.strUserAccount + "-" + base.strUserDisplayName + "]");
213             log_desc.Append("[商户管理-结算信息维护]-银行账户导入");
214             //trandao.BeginTransaction();
215             try
216             {
217                 MB_DAL.MerManage.MerMerchFee mermerchFee = new MB_DAL.MerManage.MerMerchFee();
218                 MB_DAL.MerManage.MerMerchFeeDetail mermerchFeeDetail = new MB_DAL.MerManage.MerMerchFeeDetail();
219                 for (int i = 0; i < dt.Rows.Count; i++)
220                 {
221                     try
222                     {
223                         mermerchbank.InsertMerMerchBankAccountTran(trandao, dt.Rows[i]["merchant_id"].ToString().Trim(), dt.Rows[i]["bank_account"].ToString().Trim(), dt.Rows[i]["bank_name"].ToString().Trim(), dt.Rows[i]["sub_bank_name"].ToString().Trim(), dt.Rows[i]["lian_hang_number"].ToString().Trim(),
224                             dt.Rows[i]["account_name"].ToString().Trim(), dt.Rows[i]["iden_sn"].ToString().Trim(), dt.Rows[i]["telephone"].ToString().Trim(), base.strUserDisplayName);
225                         log_desc.Append("[商户号:" + dt.Rows[i]["merchant_id"].ToString().Trim() + "],[银行账号" + dt.Rows[i]["bank_account"].ToString().Trim());
226                         CMLoger.WriteDebugLog("[商户管理-结算信息维护]-银行账户导入中" + "[商户号:" + dt.Rows[i]["merchant_id"].ToString().Trim() + "],[银行账号" + dt.Rows[i]["bank_account"].ToString().Trim() + "]");
227                     }
228                     catch (Exception ex)
229                     {
230
231                     }
232                 }
233                 // trandao.Commit();
234                 CMLoger.WriteDebugLog("[商户管理-结算信息维护]-银行账户导入【完成】,上传了" + dt.Rows.Count.ToString() + "条数据");
235                 Public.PublicClass.InsertLog(4, "[商户管理-结算信息维护]-银行账户导入:上传了" + dt.Rows.Count.ToString() + "条数据");
236                 hres.ErrorCode = "0000000000";
237                 hres.ErrorMessage = "操作成功";
238             }
239             catch (Exception ex)
240             {
241                 trandao.Rollback();
242                 hres.ErrorCode = "0000000001";
243                 hres.ErrorMessage = ex.Message;
244                 CMLoger.WriteErrorLog(ex.Message + "[" + base.strUserAccount + "-" + base.strUserDisplayName + "]");
245
246             }
247             #endregion
248
249             return hres;
250
251
252         }
253         public bool isBank_account(string bank_account)
254         {
255             string strRegex = @"^\d{1,30}$";
256             Regex re = new Regex(strRegex);
257             if (re.IsMatch(bank_account))
258             {
259                 return true;
260             }
261             else
262             {
263                 return false;
264             }
265         }
266         public bool isLian_hang_numberColumn(string lian_hang_numberColumn)
267         {
268             string strRegex = @"^\d{1,20}$";
269             Regex re = new Regex(strRegex);
270             if (re.IsMatch(lian_hang_numberColumn))
271             {
272                 return true;
273             }
274             else
275             {
276                 return false;
277             }
278         }
279         /// <summary>
280         /// 根据标题去匹配所属列
281         /// </summary>
282         /// <param name="title"></param>
283         /// <returns></returns>
284         private int GetColumnNum(DataTable dt, string title, IXLWorksheet worksheet)
285         {
286             int columNumber = 0;
287             for (int i = 1; i <= dt.Columns.Count; i++)
288             {
289                 string workTitle = worksheet.Row(1).Cell(i).Value.ToString();
290                 //判断相不相等
291                 if (title == workTitle)
292                 {
293                     columNumber = i;
294                 }
295             }
296             return columNumber;
297         }
298         /// <summary>
299         ///  保证金周期
300         /// </summary>
301         /// <param name="marginCycle"></param>
302         /// <returns></returns>
303         public bool isMarginCycle(string marginCycle)
304         {
305             string strRegex = @"^[0-9]*[1-9][0-9]*$";
306             Regex re = new Regex(strRegex);
307             if (re.IsMatch(marginCycle))
308             {
309                 return true;
310             }
311             else
312             {
313                 return false;
314             }
315         }
316
317         private string showJsonError(string msg)
318         {
319             return "{" + string.Format("success:false,msg:‘{0}‘", msg) + "}";
320         }
321         public override bool IsReusable
322         {
323             get
324             {
325                 return false;
326             }
327         }
时间: 2024-10-14 09:43:33

导入(批量增加)的相关文章

关于使用MySQL语法ON DUPLICATE KEY UPDATE单个增加更新及批量增加更新的sql

应用场景: 在实际应用中,经常碰到导入数据的功能,当导入的数据不存在时则进行添加,有修改时则进行更新, 在刚碰到的时候,第一反应是将其实现分为两块,分别是判断增加,判断更新,后来发现在mysql中有ON DUPLICATE KEY UPDATE一步就可以完成,感觉实在是太方便了, 该语句是基于唯一索引或主键使用,比如一个字段a被加上了unique index,并且表中已经存在了一条记录值为1. 比如: 下面两个语句会有相同的效果: INSERT INTO table (a,b,c) VALUES

jQuery批量修改Name值,批量增加name后缀,非each(不需要循环)

背景 表单字段,配置where属性自动刷新到可查询区域,查询字段需增加_where后缀,响应后台规则 问题 批量设置的查询字段,必须批量增加_where后缀方可正常查询.each循环有点麻烦,有没有更方便的批量修改方法. 调查 方向就是jquery批量修改name,整个互联网充斥的都是.attr("name","new_value").只有单值修改,最终,发现这篇系统性文章 Jquery attr()方法 属性赋值和属性获取 jquery中用attr()方法来获取和

C#.NET常见问题(FAQ)-如何批量增加或取消注释

选中一批文本之后 批量增加注释:Ctrl+K Ctrl+C 批量取消注释:Ctrl+K Ctrl+U ? ? 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 ? 我的在线论坛: http://csrobot.gz01.bdysite.com/ ? 问题交流: QQ:910358960 邮箱:[email protected] ? ? ?

Web端权限管理新增实用功能:批量增加操作,简单方便快速!

扩展了吉日嘎拉的Web端权限管理功能后,每次添加菜单倒没啥问题,毕竟菜单的数量有限,可是每增加一个模块.功能或者说权限控制点,就得针对各种常规操作,新增很多遍. 浪费时间,还容易出错.新增了一个字典表ItemsActionCategory,将常用的操作都记录到这个表,然后新增一个批量增加的功能,一键增加几十个操作控制. 保存后的效果如下,这里的规则:模块.操作,中间用.号连接. 一切从实用出发,减少重复劳动,节省时间,多出来的时间可以去多赚钱+多陪家人.

c#调用存储过程实现批量增加和修改数据

1 例如当我在编辑表格数据,一次编辑了多行需要保存到数据库时,就需要判断数据库中是否已经存在,存在则修改,不存在则新增一条或多条数据,即所谓批量增加或者跟新数据. 首先需要构建数据包,把要添加或者跟新的数据构建成一个datatable,例如我数据库中的表结构是这样 CREATE TABLE [dbo].[FlagDescription]( [FundId] [CHAR(10)] not null, [SurveyType] [tinyint] not null, [DefectReason] T

thinkphp5 模型批量增加数据小记

楼主最近在学习thinkphp5,真的没应广大使用教程所说:你最好就是没学过thinkphp3.2.要不然苦恼重重. 因为想将一些功能实现一次,故自己写了一个文件上传类. 可以实现单文件,多文件上传(文件或者图片). 鉴于thinkphp 5的写法,看文档是新增用$model->save()方法.如果是批量增加的话,就有两种做法: 做法一:$model->saveAll($data); 做法二:$model->isUpdate(false)->save();//循环 官方是这样给出

在AndroidStudio v1.2.0中导入或增加新项目或工程(导入第三方类库或工程)

以下说明基于AndroidStdudio版本v1.2 由于AndroidStudio项目止录与Eclipse中的Worksapce在意义上的改变,所以导入新包或建立新项目时并不和以前那样了. 下面是我碰到的以解决问题的办法.以供参考. 1. 创建好项目后,将需要的第三方jar文件拷贝到工程目录下的app\libs目录中,由于在1.2版本中的build.gradle文件中已经加上了依赖目录,所以不用再改该文件了. dependencies { compile fileTree(dir: 'libs

cacti批量增加监控脚本

#!/bin/bash ### IP_LIST=`cat /root/list.txt` for i in $IP_LIST do ID=`echo $i|awk -F \_ '{print $1}'` IP=`echo $i|awk -F \_ '{print $2}'` /data/webapps/cacti/cli/add_device.php --description="$ID" --ip="$IP" --template=3  --avail=snmp

hibernate 批量增加 修改 删除

4.2  Hibernate的批量处理 Hibernate完全以面向对象的方式来操作数据库,当程序里以面向对象的方式操作持久化对象时,将被自动转换为对数据库的操作.例如调用Session的delete()方法来删除持久化对象,Hibernate将负责删除对应的数据记录:当执行持久化对象的set方法时,Hibernate将自动转换为对应的update方法,修改数据库的对应记录. 问题是如果需要同时更新100?000条记录,是不是要逐一加载100?000条记录,然后依次调用set方法——这样不仅繁琐