下载模板、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") {
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导入、导出的更多相关文章
- 关于Excel导入导出的用例设计
目前,为方便操作,很多系统都会增加批量导入导出的功能.文件导入导出一般格式都是excel.由于用户直接在excel在填写内容,无法控制填写的格 式,加上excel解析比较困难,所以一般涉及到excel ...
- JeeSite中Excel导入导出
在各种管理系统中,数据的导入导出是经常用到的功能,通常导入导出以Excel.CSV格式居多.如果是学习的过程中,最好是自己实现数据导入与导出的功能,然而在项目中,还是调用现成的功能比较好.近期一直使用 ...
- Java之POI的excel导入导出
一.Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件.这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Offic ...
- excel 导入导出测试点
目前,为方便操作,很多系统都会增加批量导入导出的功能.文件导入导出一般格式都是excel.由于用户直接在excel在填写内容,无法控制填写的格 式,加上excel解析比较困难,所以一般涉及到excel ...
- Excel导入导出的业务进化场景及组件化的设计方案(上)
1:前言 看过我文章的网友们都知道,通常前言都是我用来打酱油扯点闲情的. 自从写了上面一篇文章之后,领导就找我谈话了,怕我有什么想不开. 所以上一篇的(下)篇,目前先不出来了,哪天我异地二次回忆的时候 ...
- ASP.NET 之 常用类、方法的超级总结,并包含动态的EXCEL导入导出功能,奉上类库源码
实用类:UtilityClass 包含如下方法 判断对象是否为空或NULL,如果是空或NULL返回true,否则返回false 验证手机号是否正确 13,15,18 验证邮箱 验证网址 MD5加密,返 ...
- Excel导入导出帮助类
/// <summary> /// Excel导入导出帮助类 /// 记得引入 NPOI /// 下载地址 http://npoi.codeplex.com/rele ...
- 一个基于POI的通用excel导入导出工具类的简单实现及使用方法
前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...
- poi excel导入导出
pom <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artif ...
- java jxl excel 导入导出的 总结(建立超链接,以及目录sheet的索引)
最近项目要一个批量导出功能,而且要生成一个单独的sheet页,最后后面所有sheet的索引,并且可以点击进入连接.网上搜索了一下,找到一个方法,同时把相关的excel导入导出操作记录一下!以便以后使用 ...
随机推荐
- Git&Github基本操作与分支管理
Git的原理涉及快照流.链表.指针等,这里不作过多叙述. 1.基本操作 git init 创建一个 Git 仓库 git clone [url] 拷贝一个 Git 仓库到本地 git add [fil ...
- TCP/IP 协议 OSI七层协议
------------------你来自何处并不重要,重要的是你要去往何方,人生最重要的不是所站的位置,而是所去的方向.人只要不失去方向,就永远不会失去自己! day 27 # # -------- ...
- getQueryStringByName url参数/
MasterId: (masterIdUrl != null && masterIdUrl != "") ? masterIdUrl : null ClassId: ...
- ReentrantLock源码分析
参考: 五月的仓颉 ReentrantLock实现原理 活在梦里 AQS源码解读 重入锁是基于AQS实现的,它提供了公平锁和非公平锁两个版本的实现. public class ReentrantLoc ...
- semantic-ui 按钮
1.基础按钮: 使用button.div.span.i等标签,将其class设置为"ui button",显示的就是最基础的按钮样式. <i class="ui b ...
- HDU 2003 求绝对值
http://acm.hdu.edu.cn/showproblem.php?pid=2003 Problem Description 求实数的绝对值. Input 输入数据有多组,每组占一行,每行 ...
- this is incompatible with sql_mode=only_full_group_by
mysql命令gruop by报错this is incompatible with sql_mode=only_full_group_by - Jim_.NET - 博客园 http://www.c ...
- tomcat redis 集群 session共享
jcoleman/tomcat-redis-session-manager: Redis-backed non-sticky session store for Apache Tomcathttps: ...
- 理解ORM的前提:数据库中的范式和约束
理解ORM的前提:数据库中的范式和约束 一.数据库中的范式: 范式, 英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出 ...
- hive自定义函数