zoukankan      html  css  js  c++  java
  • 下载模板、Excel导入、导出

    下载模板

     /// <summary>
        /// 下载模板
        /// </summary>
        /// <returns></returns>
        public ActionResult DownTemplate()
        {
            string path = Server.MapPath("/Template/TeacherTpl.xlsx");
            return File(new FileStream(path, FileMode.Open), "application/octet-stream", "教师模板.xlsx");
        }

    使用时直接请求方法就行

    window.location.href = '/Student/DownTemplate';

    导入

    引文件

    <link href="~/Scripts/webuploader-0.1.5/webuploader.css" rel="stylesheet" />
    <script src="~/Scripts/jquery-1.10.2.js"></script>
    <script src="~/Scripts/webuploader-0.1.5/webuploader.js"></script>

    html

    <div id="import">
        <input type="hidden" id="filePath" />
        <div id="uploader" class="wu-example">
            <!--用来存放文件信息-->
            <div id="thelist" class="uploader-list"></div>
            <div class="btns">
                <div id="picker">选择文件</div>
                <button type="button" id="ctlBtn" class="btn btn-default">开始上传</button>
            </div>
        </div>
    </div>

    初始化webuploader

    function initUpload() {
            var $list = $("#thelist");
            var uploader = WebUploader.create({
    
                // swf文件路径
                swf: '~/Scripts/webuploader-0.1.5/Uploader.swf',
                // 文件接收服务端。
                server: '/Files/UploadFile?address=TemplateData',
                // 选择文件的按钮。可选。
                // 内部根据当前运行是创建,可能是input元素,也可能是flash.
                pick: {
                    id: '#picker',
                    multiple: false
                },
                // 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!
                resize: false,
                fileNumLimit: 1,
                fileSingleSizeLimit: 1024 * 1024 * 10,
                accept: {
                    extensions: 'xlsx,xls'
                }
            });
            // 当有文件被添加进队列的时候
            uploader.on('fileQueued', function (file) {
                $('#uploader .item').remove();
                $list.append('<div id="' + file.id + '" class="item">' +
                    '<h4 class="info">' + file.name + '</h4><a class="upload-del" my-data-fid=' + file.id + '>x<a/><p class="state">等待上传...</p></div>');
            });
            // 文件上传过程中创建进度条实时显示。
            uploader.on('uploadProgress', function (file, percentage) {
                var $li = $('#' + file.id);
                //    $percent = $li.find('.progress .progress-bar');
    
                //// 避免重复创建
                //if (!$percent.length) {
                //    $percent = $('<div class="progress progress-striped active">' +
                //        '<div class="progress-bar" role="progressbar" style=" 0%">' +
                //        '</div>' +
                //        '</div>').appendTo($li).find('.progress-bar');
                //}
    
                $li.find('p.state').text('上传中');
    
                // $percent.css('width', percentage * 100 + '%');
            });
    
            uploader.on('uploadSuccess', function (file, data) {
                if (data.error == 1) {
                    $('#filePath').val(data.filePath);
                    $('#' + file.id).find('p.state').text('已上传');
                    uploader.removeFile(file.id);
                } else {
                    $('#' + file.id).find('p.state').text(res.msg);
                }
            });
    
            uploader.on('uploadError', function (file) {
                $('#' + file.id).find('p.state').text('上传出错');
            });
    
            uploader.on('uploadComplete', function (file) {
                $('#' + file.id).find('.progress').fadeOut();
            });
            $('#thelist').on('click', '.upload-del', function () {
                var fid = $(this).attr('my-data-fid');
                uploader.removeFile(fid);
                $(this).parent('.item').remove();
            });
            uploader.on("error", function (type) {
                if (type == "F_EXCEED_SIZE") {
                    alert("文件大小不能超过10M");
                }
                else if (type == "Q_EXCEED_SIZE_LIMIT") {
                    alert("文件大小不能超过10M");
                } else if (type == 'Q_EXCEED_NUM_LIMIT') {
                    alert("请先移除文件,再添加新文件");
                } else {
                    alert("上传出错!请检查后重新上传!错误代码" + type);
                }

            // 点击上传
            $('#ctlBtn').on('click', function () {
                uploader.upload();
              });

           });

    文件上传后台方法

     public ActionResult UploadFile()
            {
                if (Request.Files.Count <= 0)
                {
                    return Content(JsonConvert.SerializeObject(new {error = "0", msg = "文件为空。"}));
                }
                string addr = Request["Address"];
                if (string.IsNullOrEmpty(addr))
                {
                    return Content(JsonConvert.SerializeObject(new { error = "0", msg = "地址为空。" }));
                }
                string dirPath = Server.MapPath("/UploadFiles/" + addr);
                if (!Directory.Exists(dirPath))
                {
                    Directory.CreateDirectory(dirPath);
                }
                var file = Request.Files[0];
                string ext = Path.GetExtension(file.FileName);
                string fileName = Guid.NewGuid().ToString() + ext;
                string filePath = Path.Combine(dirPath, fileName); // 绝对路径
                string returnPath = Path.Combine("/UploadFiles/" + addr, fileName); // 返回的路径
                try
                {
                    file.SaveAs(filePath);
                    return Content(JsonConvert.SerializeObject(new { error = "1", msg = "上传成功", filePath = returnPath }));
                }
                catch (Exception e)
                {
                    return Content(JsonConvert.SerializeObject(new { error = "0", msg = "上传失败" }));
                }
            }

    请求后台方法

    var url = $('#filePath').val();
                        $.post('/Student/AddImportData', { path: url }, function (msg) {
                            if (msg=="success") {
                                $('#filePath').val('');
                                $("#thelist").remove();
                                $.messager.alert("提示", "导入成功",'info');
                                ReloadClearData();
                                $("#import").dialog('close');
                                return;
                            }
                            $.messager.alert("提示", msg, 'error');
                        })

    后台方法

     /// <summary>
            /// 插入导入数据
            /// </summary>
            /// <returns></returns>
            public ActionResult AddImportData()
            {
                bool flag;
                string path;
                if (string.IsNullOrEmpty(Request["path"]))
                {
                    return Content("参数错误");
                }
    
                path = Server.MapPath(Request["path"]);
                if (!System.IO.File.Exists(path))
                {
                    return Content("路径不存在");
                }
                var list = Import(path, out flag);
                if (!flag)
                {
                    return Content("导入失败");
                }return bo.AddBulk(list) ? Content("ok") : Content("导入失败");
            }
    /// <summary>
        /// 导入
        /// </summary>
        /// <returns></returns>
        public List<Model.Teacher> Import(string path, out bool flag)
        {
            flag = true;
            List<Teacher> list = new List<Teacher>();
            //TODO 更改文件路径
            using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
            {
                IWorkbook wb = new XSSFWorkbook(fs); ;
                var extension = Path.GetExtension(path);
                ISheet sheet = wb.GetSheetAt(0);
                int index = 1;
                IRow row = sheet.GetRow(1);
                try
                {
                    while (row != null)
                    {
                        list.Add(new Teacher()
                        {
                            TeacherName = row.GetCell(0).ToString(),
                            Password = WebHelper.ToMD5("123456"),
                            Birthday = WebHelper.StrToDate(row.GetCell(1).ToString()),
                            IDCard = row.GetCell(2).ToString(),
                            Gender = row.GetCell(3).ToString() == "" ? 1 : 0,
                            MobilePhone = row.GetCell(4).ToString(),
                            QQNum = row.GetCell(5).ToString(),
                            WechatNum = row.GetCell(6).ToString(),
                            EmailNum = row.GetCell(7).ToString()
                        });
                        row = sheet.GetRow(++index);
                    }
                    return list;
                }
                catch (Exception)
                {
                    flag = false;
                    return null;
                }
            }
        }

     导出(待测)

      var workBook = new HSSFWorkbook();
      var table = workBook.CreateSheet("writeExcel");
      for (int i = 0; i < 20; i++)
      {
          var row = table.CreateRow(i);
          for (int j = 0; j < 20; j++)
          {
              var cell = row.CreateCell(j);
              cell.SetCellValue(j);
          }
      }
      using (var fs = File.OpenWrite(@"D:/writeExcels.xls"))
      {
          workBook.Write(fs);
          MessageBox.Show("Create succeed!");
      }
  • 相关阅读:
    《Machine Learning in Action》—— 白话贝叶斯,“恰瓜群众”应该恰好瓜还是恰坏瓜
    《Machine Learning in Action》—— 女同学问Taoye,KNN应该怎么玩才能通关
    《Machine Learning in Action》—— Taoye给你讲讲决策树到底是支什么“鬼”
    深度学习炼丹术 —— Taoye不讲码德,又水文了,居然写感知器这么简单的内容
    《Machine Learning in Action》—— 浅谈线性回归的那些事
    《Machine Learning in Action》—— 懂的都懂,不懂的也能懂。非线性支持向量机
    《Machine Learning in Action》—— hao朋友,快来玩啊,决策树呦
    《Machine Learning in Action》—— 剖析支持向量机,优化SMO
    《Machine Learning in Action》—— 剖析支持向量机,单手狂撕线性SVM
    JVM 字节码指令
  • 原文地址:https://www.cnblogs.com/xiaonangua/p/9176965.html
Copyright © 2011-2022 走看看