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!");
      }
  • 相关阅读:
    顺序栈--Java实现
    优先队列(存储结构数组)--Java实现
    队列(存储结构数组)--Java实现
    有序链表--Java实现
    双向链表--Java实现
    表达式求值--Java实现
    【Mac + Appium】之运行报错:[UiAutomator] UiAutomator exited unexpectedly with code 0, signal null
    【Mac + ATX基于uiautomator2】使用weditor时,报错:requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer'))
    【Mac系统 + Python + Django】之开发一个发布会系统【Django模型(三)】
    【转】【Mac系统】之ADB命令总结
  • 原文地址:https://www.cnblogs.com/xiaonangua/p/9176965.html
Copyright © 2011-2022 走看看