【库房】批量导入Excel表格
发布日期:2021-10-01 22:20:11
浏览次数:10
分类:技术文章
本文共 7358 字,大约阅读时间需要 24 分钟。
如何制作导入Excel表格
Controllers
public ActionResult PostExcel(string files) { TimeSpan ts1 = new TimeSpan(DateTime.Now.Ticks); Liststorage = new List (); System.Data.DataTable tb = new System.Data.DataTable(); HttpPostedFileBase file = Request.Files["files"]; string strFileName; string strSavaPath; string ClientPath = AppDomain.CurrentDomain.BaseDirectory + "模板\\"; string strPaperld = "sheet1"; if (file == null || file.ContentLength <= 0) { ViewBag.error = "文件不能为空"; } strFileName = Path.GetFileName(file.FileName); int intFilesize = file.ContentLength; string strNoFilename = System.IO.Path.GetFileNameWithoutExtension(strFileName); strSavaPath = Path.Combine(ClientPath, strFileName); file.SaveAs(strSavaPath); string tablename = "t_storage"; List list = istoragebll.ExcelToDataTable(strSavaPath, strPaperld, tablename); return Json(list, JsonRequestBehavior.AllowGet); }
BLL
public ListExcelToDataTable(string strSavaPath, string strSheetName, string tablename) { List list = istoragedal.ExcelToDataTable(strSavaPath, strSheetName, tablename); //如果模板或没有找到文档返回空 if (list == null) { return null; } //把失败记录放入失败的list集合中 List listfail = new List (); //设置成功N条失败N条记录 int fail = 0; //提取文件信息 t_storage t = new t_storage(); //设置标记Log 0:数据验证成功。1:数据验证失败 int log = 0; if (list.Count > 0) { for (int i = 0; i < list.Count; i++) { log = 0; t.storageID = Guid.NewGuid().ToString(); t.storageName = list[i].StorageName; t.place = list[i].Place; t.capacity = list[i].Capacity; t.remark = list[i].Remark; //在数据库中添加记录 if (log == 0) { //查询ID是否重复 if (istoragedal.isable(t).Count == 1) { fail++; //把失败记录放入失败的list集合中 listfail.Add(list[i]); continue; } istoragedal.insertStorage(t); } } } //把成功N条和失败N条记录存入listfail下载最后一个commentied中 list[0].Commentid = list.Count - fail;//成功的条数 list[0].Postcommentid = fail.ToString();//失败条数 listfail.Add(list[0]); return listfail; }
DAL
//添加引用using System.Data.OleDb; public ListExcelToDataTable(string strSavaPath, string strSheetName, string tablename) { try { string strConn; string strFileType = System.IO.Path.GetExtension(strSavaPath); if (string.IsNullOrEmpty(strFileType)) return null; if (strFileType == ".xls") { strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strSavaPath + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\""; } else { strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + strSavaPath + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\""; } OleDbConnection conn = new OleDbConnection(strConn); conn.Open(); OleDbDataAdapter adpter = new OleDbDataAdapter("select * from [" + strSheetName + "$]", strConn); DataSet myDataset = new DataSet(); try { adpter.Fill(myDataset, tablename); } catch (Exception) { throw new Exception("配置文件的sheet名称配置错误"); } finally { if (conn.State == ConnectionState.Open) { conn.Close(); adpter.Dispose(); conn.Dispose(); } } System.Data.DataTable table = myDataset.Tables[tablename].DefaultView.ToTable(); table.Columns["库房名称"].ColumnName = "storageName"; table.Columns["库房位置"].ColumnName = "place"; table.Columns["库房面积(㎡)"].ColumnName = "capacity"; table.Columns["备注"].ColumnName = "remark"; DataTable newtable = table.Copy(); List liststorage = new List (); liststorage = DatatableToList.ConvertToList (newtable); return liststorage; } catch (Exception) { return null; } }
JS
function importExcelTest() { //var aaa = $('#FileUpload'). var file = $('#FileUpload').filebox("getText"); var files = $('#FileUpload').filebox("getText"); //判断文件上传是否为空 if (file == null || file == "") { $.messager.alert('系统提示', '请选择将要上传的文件!'); } //分割文件的类型 var file_typename = file.substring(file.lastIndexOf('.'), file.length); if (file_typename == '.xlsx' || file_typename == 'xls') { var options = { method: 'POST', url: '/Storage/PostExcel', data: file, dataType: 'json', success: function (data) { if (data.length == 1) { $.messager.show({ title: '提示', msg: '仓库成功导入' + data[0].Commentid + '条记录!', showType: 'fade', timeout: 1000, style: { left: 500, top: 200 } }); $('#importDiv').dialog('close'); } else if (data.length > 1) { var stringTitle = ''; for (var i = 0; i < data.length - 1; i++) { stringTitle += '第' + (i + 1) + '条——仓库名称:' + data[i].StorageName + '仓库位置:' + data[i].Place + '仓库面积(m²):' + data[i].Capacity + '备注:' + data[i].Remark + '\r\n'; } $.messager.show({ title: '提示', msg: ' ', showType: 'fade', width: 600, height: '50%' }); //关闭弹出框 $("#importDiv").dialog('close'); } else { $.messager.alert("操作提示", "仓库信息失败,请使用指定模板,不要修改模板格式!", "warning"); } }, error: function (data) { $.messager.alert("操作提示", "仓库信息失败,请使用指定模板,不要修改模板格式!", "warning"); } } $('#testform').ajaxSubmit(options); } else { $.messager.alert('提示', '请选择正确的文件类型') }}
总结
先让Me消化一下,积累助成长。转载地址:https://blog.csdn.net/j15533415886/article/details/79214923 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月07日 21时07分55秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
安卓——WIFI列表以及点击事件
2019-04-26
安卓——WIFI连接
2019-04-26
安卓——关于一些ui界面设置(直续更新ing)
2019-04-26
刷门禁——判断卡号是否一样(String==String)出现False
2019-04-26
好久没刷题了(阿里测试题)
2019-04-26
安卓界面——最开始界面的加载
2019-04-26
安卓——屏蔽陌生来电
2019-04-26
安卓——小笔记
2019-04-26
客户端面试万金油
2019-04-26
【u3d泰斗破坏神】05 --- 角色移动 velocity 的相关问题
2019-04-26
【u3d泰斗破坏神】06 --- Loading界面进度条Slider的使用
2019-04-26
【u3d泰斗破坏神】07 --- 角色攻击动画拆分、状态机设计
2019-04-26
【u3d泰斗破坏神】08 --- UGUI 制作艺术字体
2019-04-26
【u3d泰斗破坏神】09 --- 角色血条的制作、掉血特效
2019-04-26
Unity Shader 入门精要(01) -- 渲染流水线
2019-04-26
Unity Shader 入门精要(02) -- shader的编码基础
2019-04-26
Unity Shader 入门精要(03) -- Unity的基础光照
2019-04-26
Unity Shader 入门精要(04) -- 基础纹理
2019-04-26
Unity3D 移动平台的资源路径问题
2019-04-26
二分查找(折半查找)
2019-04-26