vue+C#后台上传excel处理数据

2023-11-20

比较简洁的excel处理方法。希望对大家有所帮助。

1、界面

          <el-upload class="upload-demo"
                       ref="upload"
                       :action="uploadUrl()"
                       :data="uploadData"
                       name="excelFile"
                       :on-preview="handlePreview"
                       :on-remove="handleRemove"
                       :file-list="fileList"
                       :on-error="uploadFalse"
                       :on-success="uploadSuccess"
                       :auto-upload="false"
                       :before-upload="beforeAvatarUpload">
                <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
                <el-button style="margin-left: 10px;" size="small" type="success" v-on:click="submitUpload">批量导入</el-button>
                <div slot="tip" class="el-upload__tip">只能上传excel文件</div>
            </el-upload>

2、js部分 其中有用的为uploadData,uploadSuccess其余方法 根据上传需要自行修改

  uploadData: function () { },
        uploadUrl: function () {
        //文件上传调用的 C#方法
            return (
                "/Manager/addMajorsByExcel/"
            );
        },
        uploadSuccess(response, file, fileList) {

            if (response.code == 0) {
                ///上传成功刷新页面用 注释即可
                this.getLists();
                this.Show = 'list';
///上传成功刷新页面用 注释即可----
                this.$message({
                    message: response.msg,
                    type: 'success'
                });
            } else {

                this.$message({
                    message: response.msg,
                    type: 'warn'
                });
            }
        },
        uploadFalse(response, file, fileList) {

            this.$message({
                message: response.msg,
                type: 'warn'
            });
        },
        // 上传前对文件的大小的判断
        beforeAvatarUpload(file) {
            const extension = file.name.split(".")[1] === "xls";
            const extension2 = file.name.split(".")[1] === "xlsx";

            const isLt2M = file.size / 1024 / 1024 < 10;
            if (!extension && !extension2) {
                alert("上传模板只能是 xls、xlsx 格式!");
            }
            if (!isLt2M) {
                console.log("上传模板大小不能超过 10MB!");
            }
            return extension || extension2;
        },
        submitUpload() {
            if (this.businessType != null) {
                //触发组件的action
                this.$refs.upload.submit();
            }
            if (this.businessType == null) {
                this.businessType = "businessType不能为空";
            }
        },
        handleRemove(file, fileList) {
            console.log(file, fileList);
        },
        handlePreview(file) {
            if (file.response.status) {
                alert("此文件导入成功");
            } else {
                alert("此文件导入失败");
            }
        }

3后端处理excel 数据部分 自行修改

 public ActionResult addMajorsByExcel()
        {
           
            HttpPostedFileBase file = Request.Files[0];
            ///保存excel
            string path=CommonMethod.saveExcel(file);
            ///打开excel
            Tuple<_Worksheet, Sheets, Workbooks, _Workbook, Application> objDim = CommonMethod.openExcel(path);
            ///处理数据  这个地方 结合自己实际表结构 修改即可 我这边表就code name date等
            _Worksheet worksheet = objDim.Item1;
            //    获取excel 有效数据行数 
            int rowNum = worksheet.UsedRange.Rows.Count;
            FMSEntities fms = new FMSEntities();
            for (int i = 2; i < rowNum + 1; i++)
            {
                string code = worksheet.Cells[i, 1].Text.ToString();
                CT_Major g = new CT_Major();
                if (code == null)
                {
                    continue;
                }
                code = code.Trim();
                CT_Major p = fms.CT_Major.Where(s => s.code == code).FirstOrDefault();
                if (p != null)
                {
                    continue;
                }
                g.code = code;
                if (worksheet.Cells[i, 2].Text == null)
                {
                    continue;
                }
                else
                {
                    g.name = worksheet.Cells[i, 2].Text.ToString().Trim();
                }
                g.addDate = DateTime.Now;
                g.updateDate = DateTime.Now;
                g.status = true;
                fms.CT_Major.Add(g);
                fms.SaveChanges();

            }
            ///释放资源
            CommonMethod.NARExcel(objDim);
            ///删除excel
            CommonMethod.deleteFlie(path);
            return Json(new { code = 0, msg = "成功" }, JsonRequestBehavior.AllowGet);
        }

4后端公共方法CommonMethod处理excel


        /// <summary>
        /// 1保存excel
        /// </summary>
        /// <param name="file"></param>
        /// <returns></returns>
        public static string saveExcel(HttpPostedFileBase file)
        {
            string fileName = Path.GetFileName(file.FileName);
            ///服务器保存文件路径 自行定义
            string directory = "C:\\FMSPIC\\xls";
            if (!Directory.Exists(directory))
            {
                Directory.CreateDirectory(directory);
            }
            string guid = Guid.NewGuid().ToString();
            string filePath = directory + "\\" + guid + fileName;
            file.SaveAs(filePath);
            return filePath;

        }
        public static Tuple<_Worksheet , Sheets , Workbooks , _Workbook , Application>  openExcel(String filePath)
        {
            Application app = new Application();
            if (app == null)//服务器上缺少Excel组件,需要安装Office软件
            {
                return null;
            }
            app.Visible = false;
            app.UserControl = true;
            Workbooks workbooks = app.Workbooks;
            _Workbook workbook = workbooks.Add(filePath); //加载模板
            Sheets sheets = workbook.Sheets;
            _Worksheet worksheet = (_Worksheet)sheets.get_Item(1); //第一个工作薄。
            if (worksheet == null)//工作薄中没有工作表
            {
                return null;
            }
            var objDim = Tuple.Create<_Worksheet, Sheets, Workbooks, _Workbook, Application>(worksheet, sheets, workbooks, workbook, app);

            
            return objDim;
        }
       ///public static void NARExcel(_Worksheet worksheet, Sheets sheets, Workbooks workbooks, _Workbook workbook, Application app)
       public static void NARExcel(Tuple<_Worksheet, Sheets, Workbooks, _Workbook, Application> objDim)
        {
            NAR(objDim.Item1);
            NAR(objDim.Item2);
            NAR(objDim.Item4);
            NAR(objDim.Item3);
            objDim.Item5.Quit();
            NAR(objDim.Item5);
        }
        public static void deleteFlie(String filePath)
        {
            if (System.IO.File.Exists(filePath))
            {

                System.IO.File.Delete(filePath);//执行IO文件删除,需引入命名空间System.IO;        
            }
        }
/// <summary>
        /// 释放资源
        /// </summary>
        /// <param name="o"></param>
        public static void NAR(object o)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
            }
            catch (Exception ex)
            {
                throw ex;
                //WriteLog(ex.ToString());
            }
            finally
            {
                o = null;
            }
        }

5效果截图

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue+C#后台上传excel处理数据 的相关文章

随机推荐

  • 零基础玩转树莓派(三)—通过SSH远程连接树莓派

    在树莓派使用过程中 我们会经常进行一些调试工作 不方便一直将树莓派与显示屏等相连 需要通过SSH来远程连接访问控制树莓派 一 Windows电脑客户端 使用SSH远程服务 需要先在控制电脑上安装一个客户端PUTTY 1 客户端下载 网页搜索
  • Ubuntu 20.04 如何设置永不息屏

    右键进入settings 找到power 将Blank Screen 设置为Never
  • js时间戳转日期

    方式一 方式一 var date new Date parseInt timeStart 1000 toLocaleString replace d 1 2 最后得到的是2019 8 4 上午9 29 格式的数据 方式二 function
  • Windows10 关于系统中断CPU占用过高导致电脑变卡的解决办法

    Windows10 关于系统中断CPU占用过高导致电脑变卡的解决办法 最近一段时间笔记本一直很卡 不管打开几个程序 任务管理器中总会有CPU占用80 以上 这一度让我抓狂 开始网上搜教程 然后开始了我的各种硬件禁用的道路 这个试了好久 为了
  • 洛谷P1010 [NOIP1998 普及组] 幂次方

    文章目录 前言 题目描述 输入格式 输出格式 样例 1 样例输入 1 样例输出 1 数据范围 代码 解析 结尾 前言 在做完洛谷P1010 NOIP1998 普及组 幂次方这道题之后 我对于现在的学习有了些许认识 题目描述 任何一个正整数都
  • 如何处理低概率出现的bug???

    原文链接 一般的低概率bug 不足以导致系统崩溃的bug 方案1 仔细检查是否是自己的执行步骤 或者误操作导致的bug 提交给相关人员 方案2 通过日志相关信息处理 提交相关开发人员 方案3 通过截图方式尽量复现当时的情景 方案4 和相关测
  • Java 中使用 protobuf

    主要参考 Java 中使用 protobuf 入门基础篇 看这篇就够了 https blog csdn net wxw1997a article details 116755542 Java 中使用 protobuf 复杂深入篇 看这篇就够
  • 成都瀚网科技有限公司:抖音怎么绑定抖音小店才好?

    抖音是一款非常流行的短视频应用 为用户提供了一个展示才华 分享生活的平台 在抖音上 用户可以通过绑定抖音商店来销售自己的产品或服务 从而实现商业变现 那么 抖音如何绑定抖音商店呢 1 抖音如何绑定抖音商店 用户绑定抖音商店需要按照以下步骤操
  • PCIe专题学习——3.2(数据链路层Ack/Nak机制解析)

    之前我们讲了对PCIe的一些基础概念作了一个宏观的介绍 了解了PCIe是一种封装分层协议 packet based layered protocol 主要包括事务层 Transaction layer 数据链路层 Data link lay
  • 数据挖掘计算题-1

    一 设某事务项集构成如下表 填空完成表1中支持度和置信度的计算 1 12 15分 表1 支持度与置信度 事务ID 项集 L2 支持度 规则 置信度 T1 A D A B 1 A B 7 T2 D E A C 2 C A 8 T3 A C E
  • JavaScript 中的 `this` 指向问题与其在加密中的应用

    JS中的 this 关键字是一个非常重要的概念 它在不同情况下会指向不同的对象或值 在本文中 我们将深入探讨 JavaScript 中 this 的各种情况 并思考如何将其应用于 JS加密中的一些有趣用途 1 全局上下文中的 this 在全
  • 安卓逆向之去除app游戏入口广告

    安卓逆向学习群692903341 首先来看一下app游戏入口界面广告 lt
  • Python轻量级Web框架Flask(1)——简介/虚拟环境介绍/安装

    1 Redis简介 1 数据库分类 关系型数据库 MySQL Oracle 非关系型数据库 Redis MongoDB 2 介绍 Redis是一个开源 高级的键值存储和一个适用的解决方案 用于构建高性能 可扩展的Web应用程序 3 特点 R
  • BUUCTF [极客大挑战 2019] Http

    BUUCTF 极客大挑战 2019 Http 启动环境 主页为三叶草技术小组纳新 查看网页源码 发现隐藏的页面 div class image img src images pic01 jpg alt div div class conte
  • HTML--后台管理系统

    后台管理系统
  • [网络安全自学篇] 八十七.恶意代码检测技术详解及总结

    这是作者网络安全自学教程系列 主要是关于安全工具和实践操作的在线笔记 特分享出来与博友们学习 希望您喜欢 一起进步 前文分享了威胁情报分析 通过Python抓取FreeBuf网站 APT 主题的相关文章 这篇文章将详细总结恶意代码检测技术
  • 【SpringMVC】参数传递与用户请求和响应

    目录 一 Postman 工具使用 1 1 Postman安装 1 2 Postman的使用 1 2 1 创建WorkSpace工作空间 1 2 2 创建请求 二 参数传递 2 1 添加 Slf4j 依赖 2 2 普通传参 知识点1 Req
  • js formatDate 时间转换

    formatDate function time fmt type type 类型 0 时间为秒 1 时间为毫秒 var date new Date type 0 time 1000 time var o M date getMonth 1
  • ltconfig: you must&nbs…

    在64位机器下编译libghttp碰到的问题 libghttp是gnome下的HTTP客户端库 实现http功能 可以替换curl 的http功能 在32位的机器上编译没问题 在64位的机器上 configure 不过去 错误信息是 ltc
  • vue+C#后台上传excel处理数据

    比较简洁的excel处理方法 希望对大家有所帮助 1 界面