下载模板、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="width: 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") {
                layer.msg("文件大小不能超过10M");
            }
            else if (type == "Q_EXCEED_SIZE_LIMIT") {
                layer.msg("文件大小不能超过10M");
            } else if (type == ‘Q_EXCEED_NUM_LIMIT‘) {
                layer.msg("请先移除文件,再添加新文件");
            } else {
                layer.msg("上传出错!请检查后重新上传!错误代码" + type);
            }
        });

文件上传后台方法

 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!");
  }

原文地址:https://www.cnblogs.com/xiaonangua/p/9176965.html

时间: 2024-08-13 19:13:51

下载模板、Excel导入、导出的相关文章

excel导入导出优化

对于上一篇excel中出现的问题,在excel导入导出中都做了优化.还是eclipse+jdk1.8,但是这个项目是一个web项目,需要配合Tomcat服务器,并且使用了SSH框架, I/O操作过多 首先,对于I/O操作过多,那么就不像之前一样,一条一条的添加或者更新;而且凑齐一堆,也就是一个list集合,然后统一的批量保存. 使用SessionFactory获取当前的session,然后调用session的persist方法,保存实体.只是设置了一个批量的量值.每到30条数据,就将缓存同步到数

java poi excel 导入导出数据

背景:1.pringmvc 框架下 的excel 导入导出   2.OI 操作office. 页面代码: <div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true"> <div class=&quo

excel 导入导出测试点

目前,为方便操作,很多系统都会增加批量导入导出的功能.文件导入导出一般格式都是excel.由于用户直接在excel在填写内容,无法控制填写的格 式,加上excel解析比较困难,所以一般涉及到excel导入导出功能测试起来都较为繁杂.现将常用设计用例总结如下. 批量导入 一.模板检查测试 一般excel导入功能,都会提供模板下载功能. 1.模板只有一个文件 模板只有一个文件时,比较简单,检查一下模板和预期是否一致即可. 2.模板是一个压缩包 模板是压缩包时,需要检查一下压缩包中文件是否齐全,每一个

Excel导入导出的业务进化场景及组件化的设计方案(转)

1:前言 看过我文章的网友们都知道,通常前言都是我用来打酱油扯点闲情的. 自从写了上面一篇文章之后,领导就找我谈话了,怕我有什么想不开. 所以上一篇的(下)篇,目前先不出来了,哪天我异地二次回忆的时候,再分享分享. 话说最近外面IT行情飞涨还咋的,人都飞哪去了呢,听说各地的军情都进入紧急状态了. 回归下正题,今天就抽点时间,写写技术文,和大伙分享一下近年在框架设计上的取的一些技术成果. 2:项目背景 在针对运营商(移动.联通.电信.铁塔)的信息类的系统中,由于相关的从业人员习惯于Excel的办公

一个基于POI的通用excel导入导出工具类的简单实现及使用方法

前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴.经过思考,认为一百个客户在录入excel的时候,就会有一百个格式版本,所以在实现这个功能之前,所以要统一excel的格式.于是提供了一个通用excel模版的下载功能.当所有客户用模版录入好数据再上传到系统,后端对excel进行解析,然后再持久化到数据库. 概述: 此工具类的几大特点 1.基本导入导出

Excel导入导出帮助类

/// <summary>    /// Excel导入导出帮助类    /// 记得引入 NPOI    /// 下载地址   http://npoi.codeplex.com/releases/    /// </summary> public class ExcelHelper    {        #region 导出Excel /// <summary>        /// 导出Excel  注:model 字段必须加[DisplayName("

开发指南专题十五:JEECG微云快速开发平台EXCEL导入导出

 开发指南专题十五:JEECG微云快速开发平台EXCEL导入导出 14.EXCEL导入导出 Excel的导入导出抽取通用功能,简化大家对POI的操作,对实体对象进行简单的注解配置就可以完成导入导出,模板的使用更是可以让打造漂亮的Excle报表,从而使大家从重复的工作中解脱出来,更加关注与业务的处理. 14.1注解介绍    注解名 作用对象 描述 是否必须 Excel 字段 对Excel字段的cell属性设置 是 ExcelCollection 字段 对集合对象进行标记表示一对多导出 否 E

java jxl excel 导入导出的 总结(建立超链接,以及目录sheet的索引)

最近项目要一个批量导出功能,而且要生成一个单独的sheet页,最后后面所有sheet的索引,并且可以点击进入连接.网上搜索了一下,找到一个方法,同时把相关的excel导入导出操作记录一下!以便以后使用! 简单先写一下目录的建立的主要代码,测试用的 List ls = new ArrayList();//报表名称列表  ls.add("BB_BB03");  ls.add("BB_BB05");  ls.add("BB_BB06"); try { 

利用反射实现通用的excel导入导出

如果一个项目中存在多种信息的导入导出,为了简化代码,就需要用反射实现通用的excel导入导出 实例代码如下: 1.创建一个 Book类,并编写set和get方法 1 package com.bean; 2 3 public class Book { 4 private int id; 5 private String name; 6 private String type; 7 // public int a; 8 9 public String getType() { 10 System.ou

POI实现excel导入导出

1.分析excel import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.Ce