• C# Excel导入


    通过Excel导入,入库数据

    cshtml代码:

    <div class="modal-header">
        <h4 class="modal-title">批量入库</h4>
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
    </div>
    <div class="modal-body">
        <div class="card">
            <input type="file" id="ImportFile" name="ImportFile" class="dropify" />
        </div>
        所选文件:<p id="CunFileName">未上传</p>
    </div>
    <div class="modal-footer">
        <button type="button" class="btn btn-info waves-effect" data-dismiss="modal" onclick="ImportCardInfo()">确定</button>
        <button type="button" class="btn btn-default waves-effect" data-dismiss="modal">取消</button>
    </div>
    
    
    
    <script>
        $("#ImportFile").change(function () {
            var FileSrcs = $("#ImportFile").val();
            var FileArr = new Array();
            FileArr = FileSrcs.split('\');
            var FileSrc = FileArr[FileArr.length - 1];
            $("#CunFileName").text(FileSrc);
        });
    
        function ImportCardInfo()
        {        
            var files = $('input[name="ImportFile"]').prop('files');//获取到文件列表
            if (files.length == 0) {
                alert('请选择文件');
                return;
            } else {            
                var formFile = new FormData();            
                formFile.append("DrawingFilePath", files[0]); //加入文件对象
                $.ajax({
                    url: "/Card/ImportCardInfo",
                    data: formFile,
                    type: "Post",
                    dataType: "json",
                    cache: false,//上传文件无需缓存
                    processData: false,//用于对data参数进行序列化处理 这里必须false
                    contentType: false, //必须
                    beforeSend: function () {
                        //提示上传中…
                        alert("正在上传,请稍后…");
                    },
                    success: function (data) {
                        if (data.succ) {
                            alert(data.msg);
                            $("#ContentInfoDiv").load("/Card/CardPage");                        
                        }
                        else {
                            ErrorMsg(data.msg);
                            return false;
                        }
                    }
                });
            }
        }
    </script>
    

     

    controller:

    #region 批量入库
            
            /// <summary>
            /// 批量入库
            /// </summary>
            public JsonResult ImportCardInfo(HttpPostedFileBase[] DrawingFilePath)
            {
                string msg = null;//返回的信息
                bool succ = false;//是否成功  
    
                string UpFileSrc = "";
                try
                {
                    if (DrawingFilePath != null && DrawingFilePath.Count() > 0)
                    {
                        if (DrawingFilePath[0] != null)
                        {
                            #region excel存至本地
                            //目录
                            string directoryPathTEST = Server.MapPath("~/tempExc");
                            if (!Directory.Exists(directoryPathTEST))
                                Directory.CreateDirectory(directoryPathTEST);
                            //文件路径
                            UpFileSrc = directoryPathTEST + "/" + Guid.NewGuid() + ".xls";
                            DrawingFilePath[0].SaveAs(UpFileSrc);
                            #endregion
    
                            int rowscount = 0;
                            string returnInfo = ImportDataInfo(UpFileSrc,out rowscount);
    
                            if (returnInfo == "succ")
                            {
                                succ = true;
                                msg = "批量上传成功!";
                            }
                            else
                            {
                                succ = false;
                                if (rowscount == 0)
                                {
                                    msg = "未检测到数据源!";
                                }
                                else
                                {
                                    msg = "批量上传失败!";
                                }
                            }
                        }
                        else
                        {
                            succ = false;
                            msg = "文件不能为空!";
                        }
                    }
                    else
                    {
                        succ = false;
                        msg = "文件不能为空!";
                    }
                }
                catch (Exception ex)
                {
                    succ = false;
                    msg = ex.Message;
                }
    
                var json = new { msg = msg, succ = succ };
                return Json(json);//返回json
            }
            
            #region 批量上传设备
            public string ImportDataInfo(string FileSrc,out int rowscount)
            {
                rowscount = 0;
                try
                {
                    if (!string.IsNullOrWhiteSpace(FileSrc))
                    {
                        //以本地路径上传的excel做为数据源
                        string conStr = string.Format("Provider=Microsoft.ACE.OLEDB.12.0; Data source={0}; Extended Properties=Excel 12.0;", FileSrc);
                        using (OleDbConnection conn = new OleDbConnection(conStr))
                        {
                            conn.Open();
                            ////获取所有Sheet的相关信息
                            //DataTable dtSheet = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
                            ////获取第一个 Sheet的名称
                            //string sheetName = dtSheet.Rows[0]["Table_Name"].ToString();
                            string sheetName = "CardTemp$";
                            string sql = string.Format("select * from [{0}]", sheetName);
                            using (OleDbDataAdapter oda = new OleDbDataAdapter(sql, conn))
                            {
                                DataTable dt = new DataTable();
                                oda.Fill(dt);
                                rowscount = dt.Rows.Count;
    
                                List<CardTable> cardList = new List<CardTable>();
                                //i代表行  自动剔除标题行                          
                                for (int i = 0; i < dt.Rows.Count; i++)
                                {
                                    CardTable cardInfo = new CardTable();
                                    cardInfo.CardID = CommHelper.CreatePKID("card");
                                    cardInfo.CCID = dt.Rows[i][0].ToString();
                                    cardInfo.Operator = dt.Rows[i][1].ToString();
                                    cardInfo.CardType = dt.Rows[i][2].ToString();
                                    cardInfo.MealID = dt.Rows[i][3].ToString();
                                    cardInfo.SleepLong = Convert.ToDateTime("2000-01-01");
                                    cardInfo.IOStatus = 1;
                                    db.CardTable.Add(cardInfo);
    
                                }
                                if (db.SaveChanges() > 0)
                                {
                                    return "succ";
                                }
                                else
                                {
                                    return "失败";
                                }
                            }
                        }
                    }
                    else
                    {
                        return "未检测到数据源!";
                    }
                }
                catch (Exception ex)
                {
                    return ex.Message;
                }
            }
            #endregion
            #endregion
    

      

  • 相关阅读:
    Apache Solr 远程命令+XXE执行漏洞(CVE-2017-12629)
    Apache Shiro RememberMe 1.2.4 反序列化漏洞
    ActiveMQ任意文件写入漏洞(CVE-2016-3088)
    ssrf对redis未授权访问写webshell
    fastjson<1.2.47 RCE 漏洞复现
    Redis基于主从复制的RCE(redis4.x 5.x)复现
    本机浏览器无法访问linux的tomcat
    测试覆盖率工具EclEmma安装与使用
    eclemma怎么安装 eclemma的安装与简单使用图文教程(附下载)
    .bat脚本基本命令语法
  • 原文地址:https://www.cnblogs.com/JoeYD/p/13261992.html
Copyright © 2020-2023  润新知