下载模板

 /// <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") {
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 <= )
{
return Content(JsonConvert.SerializeObject(new {error = "", msg = "文件为空。"}));
}
string addr = Request["Address"];
if (string.IsNullOrEmpty(addr))
{
return Content(JsonConvert.SerializeObject(new { error = "", msg = "地址为空。" }));
}
string dirPath = Server.MapPath("/UploadFiles/" + addr);
if (!Directory.Exists(dirPath))
{
Directory.CreateDirectory(dirPath);
}
var file = Request.Files[];
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 = "", msg = "上传成功", filePath = returnPath }));
}
catch (Exception e)
{
return Content(JsonConvert.SerializeObject(new { error = "", 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();
int index = ;
IRow row = sheet.GetRow();
try
{
while (row != null)
{
list.Add(new Teacher()
{
TeacherName = row.GetCell().ToString(),
Password = WebHelper.ToMD5(""),
Birthday = WebHelper.StrToDate(row.GetCell().ToString()),
IDCard = row.GetCell().ToString(),
Gender = row.GetCell().ToString() == "男" ? : ,
MobilePhone = row.GetCell().ToString(),
QQNum = row.GetCell().ToString(),
WechatNum = row.GetCell().ToString(),
EmailNum = row.GetCell().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 = ; i < ; i++)
{
var row = table.CreateRow(i);
for (int j = ; j < ; j++)
{
var cell = row.CreateCell(j);
cell.SetCellValue(j);
}
}
using (var fs = File.OpenWrite(@"D:/writeExcels.xls"))
{
workBook.Write(fs);
MessageBox.Show("Create succeed!");
}

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

  1. 关于Excel导入导出的用例设计

    目前,为方便操作,很多系统都会增加批量导入导出的功能.文件导入导出一般格式都是excel.由于用户直接在excel在填写内容,无法控制填写的格 式,加上excel解析比较困难,所以一般涉及到excel ...

  2. JeeSite中Excel导入导出

    在各种管理系统中,数据的导入导出是经常用到的功能,通常导入导出以Excel.CSV格式居多.如果是学习的过程中,最好是自己实现数据导入与导出的功能,然而在项目中,还是调用现成的功能比较好.近期一直使用 ...

  3. Java之POI的excel导入导出

    一.Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件.这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Offic ...

  4. excel 导入导出测试点

    目前,为方便操作,很多系统都会增加批量导入导出的功能.文件导入导出一般格式都是excel.由于用户直接在excel在填写内容,无法控制填写的格 式,加上excel解析比较困难,所以一般涉及到excel ...

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

    1:前言 看过我文章的网友们都知道,通常前言都是我用来打酱油扯点闲情的. 自从写了上面一篇文章之后,领导就找我谈话了,怕我有什么想不开. 所以上一篇的(下)篇,目前先不出来了,哪天我异地二次回忆的时候 ...

  6. ASP.NET 之 常用类、方法的超级总结,并包含动态的EXCEL导入导出功能,奉上类库源码

    实用类:UtilityClass 包含如下方法 判断对象是否为空或NULL,如果是空或NULL返回true,否则返回false 验证手机号是否正确 13,15,18 验证邮箱 验证网址 MD5加密,返 ...

  7. Excel导入导出帮助类

    /// <summary>    /// Excel导入导出帮助类    /// 记得引入 NPOI    /// 下载地址   http://npoi.codeplex.com/rele ...

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

    前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...

  9. poi excel导入导出

    pom <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artif ...

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

    最近项目要一个批量导出功能,而且要生成一个单独的sheet页,最后后面所有sheet的索引,并且可以点击进入连接.网上搜索了一下,找到一个方法,同时把相关的excel导入导出操作记录一下!以便以后使用 ...

随机推荐

  1. 记录一次.Net框架Bug发现和提交过程:.Net Framework和.Net Core均受影响

    SmtpClient一处代码编写错误导致异步发送邮件时DeliveryFormat配置项无法正确工作,异步操作已经完全不受我们设置属性控制了,UTF-8内容(如中文)转不转码完全看对方邮件服务器心情! ...

  2. .NET开源项目 QuarkDoc 一款自带极简主义属性的文档管理系统

    有些话说在前头 因为公司产品业务重构且功能拆分组件化,往后会有很多的接口文档需要留存,所以急需一款文档管理系统.当时选型要求3点: 1.不能是云平台上的Saas服务,整个系统都要在自己公司部署维护(数 ...

  3. C# 实现实时网速

    前言 最近参加了一个项目,所以写博客的时间就少了,项目中有一个功能就是在窗体上显示实时网速,用了半天的时间写了出来,想想今天时间蛮充足,就把它分享到博客上吧. 项目展示 项目核心代码: private ...

  4. C#.NET 大型通用信息化系统集成快速开发平台 4.6 版本 - SSO单点登录接口

    当开发的系统多了.用户多了.合作伙伴多了.对接厂商多了.开发人员多了.部署的服务器也多了,各种安全问题就暴露出来了. 如何安全的把这些系统集成在一起?实现集群的单点登录.严格统一的用户安全体系管理? ...

  5. Go源码编译安装

    参考文档1:https://www.cnblogs.com/majianguo/p/7258975.html 参考文档2:http://www.loongson.cn/news/company/456 ...

  6. nginx Location 语法基础知识

    URL地址匹配是Nginx配置中最灵活的部分 Location 支持正则表达式匹配,也支持条件匹配,用户可以通过location指令实现Nginx对动丶静态网页的过滤处理. Nginx locatio ...

  7. 一些leetcode算法题

    DFS算法 思想:一直往深处走,直到找到解或者走不下去为止 DFS(dep,...) // dep代表目前DFS的深度 { if (找到解或者走不下去了){ return; } 枚举下种情况,DFS( ...

  8. Problem 2285 迷宫寻宝

    http://acm.fzu.edu.cn/problem.php?pid=2285 Problem Description 洪尼玛今天准备去寻宝,在一个n*n (n行, n列)的迷宫中,存在着一个入 ...

  9. Apache Tomcat® - Which Version Do I Want?

    Apache Tomcat® - Which Version Do I Want?http://tomcat.apache.org/whichversion.html

  10. 配置nginx反向代理服务器,解决浏览器跨域调用接口的限制问题

    配置nginx反向代理服务器,解决浏览器跨域调用接口的限制问题 - 大venn的博客 - CSDN博客https://blog.csdn.net/u011135260/article/details/ ...