【.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日
    浏览(91)
  • ASP.NET MVC - 安全

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

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

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

    2024年02月05日
    浏览(47)
  • 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日
    浏览(45)
  • .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日
    浏览(43)
  • .Net Core Mvc Razor 组件

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

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

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

    2024年02月14日
    浏览(37)
  • 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日
    浏览(42)
  • asp.net MVC markdown编辑器

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

    2024年02月15日
    浏览(45)
  • ASP.NET Core MVC -- 控制器

    默认控制器访问index 特定访问路径   特定路径访问,带参数

    2024年02月12日
    浏览(54)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包