【.net MVC】 EXCEL 导入

这篇具有很好参考价值的文章主要介绍了【.net MVC】 EXCEL 导入。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Excel导入

首先是前端页面

导入首先需要选择文件,这时会出现第一个易错问题:不同的浏览器保护机制,会将选择文件的路径进行保护,类似”C:\\fakepath\\文件名“,这样的文件路径肯定是不能获取正确的文件进行操作。

当然也有一些骚操作进行规避,比如:

1.调整浏览器的浏览器安全设置(亲测费神费力不见得好用,不同电脑使用你得疯)。

2.修改文件夹路径(这个咋说呢,真是个小机灵鬼--直接将保护路径设置成要导入的文件路径)

3.上代码(好用、通用)

HTML

<a  class="easyui-linkbutton" onclick="select_file()" iconCls="icon-excel">导入</a>  
<input type="file" name="file" id="file" onchange="fileUpload();return false;" style="display:none"/>

一个按钮和一个文件输入框。

JS

    function select_file() {
      $("#file").trigger("click");
    }
    function fileUpload() {
        if (IsNullOrEmpty($('#file')[0].files[0]))//IsNullOrEmpty 这个方法自己写的  具体的自己判断下
            return false;
        // 创建formdata对象
        var formData = new FormData();
        // 给formData对象添加<input>标签,注意与input标签的ID一致
        formData.append('file', $('#file')[0].files[0]);
        $.ajax({
            url: "/**/***", //这里写你的url
            type: 'POST',
            data: formData,
            contentType: false, // 当有文件要上传时,此项是必须的,否则后台无法识别文件流的起始位置
            processData: false, // 是否序列化data属性,默认true(注意:false时type必须是post)
            dataType: 'json', //这里是返回类型,一般是json,text等
            clearForm: true, //提交后是否清空表单数据
            success: function (data) {   //提交成功后自动执行的处理函数,参数data就是服务器返回的数据。              
                //成功后自己业务操作 比如加载什么的
            },
            error: function (data, status, e) {  //提交失败自动执行的处理函数。
                console.error(e);
            }
        });
        $('#file').val(null);
    }

获取文件路径搞定了,接下来将获取到的文件保存到服务器上,再然后将服务器上文件导入系统进行业务上的需求操作。

public ActionResult onloadFile() //导入文件
        {
            string retStr = "上传成功";
            int retCode = 1;
            HttpRequest request = System.Web.HttpContext.Current.Request;
            HttpFileCollection FileCollect = request.Files;
          
            string path = "";//文件的完整路径
            //文件保存目录路径
            string imgPathName = DateTime.Now.ToString("yyyyMMdd");//以日期为文件存放的上层文件夹名
            string savePath = "upload\\file\\" + imgPathName + "\\";//文件存放的完整路径
            savePath = Server.MapPath("~\\") + savePath;
            if (!Directory.Exists(savePath))                                                      //定义允许上传的文件扩展名
            {
                Directory.CreateDirectory(savePath);
            }
            Hashtable extTable = new Hashtable();
            extTable.Add("file", "xls,xlsx");
            if (FileCollect.Count > 0)//如果集合的数量大于0,多文件上传情况 
            {
                HttpPostedFile imgFile = FileCollect[0];//用key获取单个文件对HttpPostedFile 
                string fileName = imgFile.FileName;//获取文件名
                string fileExt = Path.GetExtension(fileName).ToLower();//获取文件后缀名
                //判断文件类型是否正确
                //判断是否为IE浏览器的文件名
                int unixSep = fileName.LastIndexOf('/');
                int winSep = fileName.LastIndexOf('\\');
                int pos = (winSep > unixSep ? winSep : unixSep);
                if (pos != -1) 
                    fileName = fileName.Substring(pos + 1);
                if (Array.IndexOf(((string)extTable["file"]).Split(','), fileExt.Substring(1).ToLower()) == -1)
                {
                    retStr = "文件类型不正确";
                    retCode = 2;
                }
                else
                {
                    string imgPath = savePath + fileName;//构造文件保存路径 
                    imgFile.SaveAs(imgPath);//将上传的东西保存 
                    path = imgPath;
                    //调用NPOI 方法对Excel进行处理
                    DataTable dt = new DataTable();
                    if(fileName.EndsWith("xls"))
                        dt = NPOIExcelHelper.Import(path);
                    else if (fileName.EndsWith("xlsx"))
                        dt = NPOIExcelHelper.ImportFxlsx(path);
                    
                   //将获取到的数据dt进行操作
                   //。。。。。。
                }
            }
            var ret = new { code = retCode, message = retStr };
            string jsonStr = JsonConvert.SerializeObject(ret);
            return Content(jsonStr);
        }

后台这边使用了NPOI 对EXCEL文件进行读写操作,详情就懒得写了,后台这边处理的根据自己需求来,主要是个思路。

留下个痕迹方便以后走弯路的时候回头看看。文章来源地址https://www.toymoban.com/news/detail-656190.html

到了这里,关于【.net MVC】 EXCEL 导入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ASP.NET Core MVC -- 将视图添加到 ASP.NET Core MVC 应用

    右键单击“视图”文件夹,然后单击“添加”“新文件夹”,并将文件夹命名为“HelloWorld”。 右键单击“Views/HelloWorld”文件夹,然后单击“添加”“新项”。 在“添加新项 - MvcMovie”对话框中: 在右上角的搜索框中,输入“视图” 选择“Razor 视图 - 空” 保持“名称”框的

    2024年02月13日
    浏览(63)
  • ASP.NET MVC - 安全

    为了学习 ASP.NET MVC,我们将构建一个 Internet 应用程序。 第 8 部分:添加安全。 Models 文件夹 包含表示应用程序模型的类。 Visual Web Developer 自动创建  AccountModels.cs  文件,该文件包含用于应用程序认证的模型。 AccountModels  包含  LogOnModel 、 ChangePasswordModel  和  RegisterModel :

    2024年02月21日
    浏览(26)
  • .Net6 MVC文件介绍

    .Net6 MVC文件介绍 .csproj 文件 在解决方案资源管理器中双击项目名称以在编辑器中打开 .csproj 文件。右键单击项目,然后单击编辑项目文件以编辑 .csproj 文件。如下图所示。 Project Sdk = \\\"Microsoft.NET.Sdk.Web\\\"     PropertyGroup     TargetFramework net6 . 0 /TargetFramework     Nullable enable / N

    2024年02月05日
    浏览(39)
  • 【ASP.NET MVC】生成页面(6)

    本应该继续数据库访问的问题进行探讨,前文确实比较LOW。但本人认为:初学者需要解决的是快速了解知识路线的问题,所谓“生存问题”,所以,干脆把流程先走完。 下面这张图在前面已经介绍过:  前文其实已经 “初步” 解决了数据库读写操作了(可理解为 C 到 M 的双

    2024年02月14日
    浏览(29)
  • .Net Core Mvc Razor 组件

    目录 前言 调用页面 index.cshtml PartialUserViewComponent.cs IUserServices.cs PartialUserView.cshtml 注意 视图组件与分部视图类似,但它们的功能更加强大。 视图组件不使用模型绑定,它们依赖于调用视图组件时传递的数据。 本文是使用控制器和视图编写的,但视图组件适用于 Razor Pages。

    2024年02月15日
    浏览(26)
  • ASP.NET Core MVC -- 入门

     带有 ASP.NET 和 Web 开发工作负载的Visual Studio Visual Studio Code Visual Studio Code 用于 Visual Studio Code 的 C#(最新版本) .NET 7.0 SDK  ctrl + F5 (开始执行,不调试) 在代码工作区间文件夹路径下打开终端运行下面的命令  通过运行以下命令来信任 HTTPS 开发证书: 编译运行

    2024年02月11日
    浏览(32)
  • .Net MVC中 视图如何使用路由!!!

    app.UseEndpoints( endpoints = {     endpoints .MapControllerRoute (         name : \\\"default\\\" ,         pattern: \\\" {controller=Home} / {action=Index} / {id?} \\\"); }) ;   页面跳转常用的路由设置 标签属性 描述 asp-action 指定控制器的action方法 asp-controller 指定控制器 asp-route-xxx 指定xxx片段值 asp-protocol 指

    2023年04月18日
    浏览(36)
  • ASP.NET Core 中的 MVC架构

    MVC架构把 App 按照逻辑分成三层: Controllers,接收 http request,配合 model,通过http response 返回 view,尽量不做别的事 Models, 负责业务逻辑,App 的状态,以及数据处理 Views,呈现 UI,如果UI 较复杂,应该使用View 组件, ViewModel, 或者 view 模板 Controller ASP.NET Core MVC 中的所有 Control

    2024年02月09日
    浏览(31)
  • 【ASP.NET MVC】数据库访问(5)

    对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术 。  以上是官话,个人理解: 1、解决问题:数据库的访问 2、如何解决:数据库由表、记录 组成      -》    把表映射成面向对象的类   ,记录则是对

    2024年02月14日
    浏览(27)
  • asp.net MVC markdown编辑器

    在 ASP.NET MVC 中,你可以使用一些第三方 Markdown 编辑器来让用户在网页上方便地编辑和预览 Markdown 内容。这些编辑器通常提供实时预览功能,将 Markdown 文本转换为实时渲染的 HTML,并支持编辑器工具栏来辅助用户编辑。 以下是一些流行的 ASP.NET MVC Markdown 编辑器: Editor.md :

    2024年02月15日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包