上一节是在wpf中实现对excel的操作方法,这一节看看网页中如何封装实现对excel的上传导入和下载保存的。

看看效果图:

aaarticlea/png;base64,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" alt="" />

--------------------------

1、同样封装工具类Tools:

   public class Tools
{ #region 读excel
public static DataTable ImportExcelFile(string filepath)
{
DataTable dt = new DataTable(); //打开excel对话框 if (filepath != null)
{ HSSFWorkbook hssfworkbook = null;
#region//初始化信息
try
{
using (FileStream file = new FileStream(filepath, FileMode.Open, FileAccess.Read))
{
hssfworkbook = new HSSFWorkbook(file);
}
}
catch (Exception e)
{
throw e;
}
#endregion var sheet = hssfworkbook.GetSheetAt();
System.Collections.IEnumerator rows = sheet.GetRowEnumerator(); for (int j = ; j < (sheet.GetRow().LastCellNum); j++)
{
dt.Columns.Add(Convert.ToChar(((int)'A') + j).ToString());
}
while (rows.MoveNext())
{
HSSFRow row = (HSSFRow)rows.Current;
DataRow dr = dt.NewRow();
for (int i = ; i < row.LastCellNum; i++)
{
var cell = row.GetCell(i);
if (cell == null)
{
dr[i] = "";
}
else
{
dr[i] = cell.ToString();
}
}
dt.Rows.Add(dr);
}
}
return dt;
}
#endregion #region list转datatable
public static DataTable ListToDataTable<T>(IEnumerable<T> c)
{
var props = typeof(T).GetProperties();
var dt = new DataTable();
dt.Columns.AddRange(props.Select(p => new DataColumn(p.Name, p.PropertyType)).ToArray());
if (c.Count() > )
{
for (int i = ; i < c.Count(); i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo item in props)
{
object obj = item.GetValue(c.ElementAt(i), null);
tempList.Add(obj);
}
dt.LoadDataRow(tempList.ToArray(), true);
}
}
return dt;
}
#endregion
#region 写入excel
public static MemoryStream WriteExcel<T>(IList<T> list)
{ //list转datatable
var dt = ListToDataTable<T>(list); if (null != dt && dt.Rows.Count > )
{
NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
NPOI.SS.UserModel.ISheet sheet = book.CreateSheet("Sheet1"); NPOI.SS.UserModel.IRow row = sheet.CreateRow();
for (int i = ; i < dt.Columns.Count; i++)
{
row.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName);
}
for (int i = ; i < dt.Rows.Count; i++)
{
NPOI.SS.UserModel.IRow row2 = sheet.CreateRow(i + );
for (int j = ; j < dt.Columns.Count; j++)
{
row2.CreateCell(j).SetCellValue(Convert.ToString(dt.Rows[i][j]));
}
}
// 写入到客户端
System.IO.MemoryStream ms = new System.IO.MemoryStream(); ; book.Write(ms);
ms.Seek(, SeekOrigin.Begin);
book = null;
return ms; }
return null;
}
#endregion
}

2、网页界面设计:

@model IEnumerable<网页中NPIO对Excel的操作.Models.User>

@{
ViewBag.Title = "Index";
} <h2>Index</h2>
、导入数据:
@*enctype= "multipart/form-data"是必需有的,否则action接收不到相应的file*@
@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<br />
<span>上传文件</span>
<br />
<input type="file" name="file" id="file1" />
<br />
<br />
<input id="ButtonUpload" type="submit" value="提交" class="btn btn-primary" />
}<br />
<hr />
、导出数据:
<a href="/Home/Save">保存成excel</a> <p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.name)
</th>
<th>
@Html.DisplayNameFor(model => model.pwd)
</th>
<th></th>
</tr>
@if (Model != null) {
foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.name)
</td>
<td>
@Html.DisplayFor(modelItem => item.pwd)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
</td>
</tr>
}
} </table>

3、上传导入

  public ActionResult Index()
{ return View(this.TempData["users"]);
}
[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
if (file == null)
{
return Content("没有文件!", "text/plain");
} var tempname = DateTime.Now.ToLocalTime() + Path.GetExtension(file.FileName);
var filename = tempname.Replace("/", "").Replace(" ", "").Replace(":", "");
var fileName = Path.Combine(Request.MapPath("~/Upload"), Path.GetFileName(filename));
try
{
file.SaveAs(fileName);
}
catch
{
return Content("上传异常 !", "text/plain");
}
var dt = Tools.ImportExcelFile(fileName);
if (dt == null)
return Content("取消");
List<User> list = new List<User>();
for (int i = ; i < dt.Rows.Count; i++)
{
var row = dt.Rows[i];
list.Add(new User() {
name = row[].ToString(),
pwd = row[].ToString()
}); }
TempData["users"] = list;
Session["users"] = list;
return RedirectToAction("index");
}

4、保存下载

       public ActionResult Save()
{
var list = Session["users"] as List<User>;
var ms = Tools.WriteExcel(list);
if (ms == null)
return Content("保存失败,数据无效"); return File(ms, "application/vnd.ms-excel", "用户名单.xls");
}
//以下这个方法只作参考,实现保存下载就用上面方法
public ActionResult otherSave()
{
var list=Session["users"] as List<User>;
if (list != null)
{
NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
NPOI.SS.UserModel.ISheet sheet = book.CreateSheet("Sheet1"); // 第一列
NPOI.SS.UserModel.IRow row = sheet.CreateRow();
row.CreateCell().SetCellValue("姓名");
row.CreateCell().SetCellValue("密码"); // 第二列后
for (int i = ; i < list.Count; i++)
{
User user = list[i] as User;
IRow row2 = sheet.CreateRow(i+);
row2.CreateCell().SetCellValue(user.name);
row2.CreateCell().SetCellValue(user.pwd);
} // 写入到客户端
System.IO.MemoryStream ms = new System.IO.MemoryStream();
book.Write(ms);
//下面两句也可以实现导出文件功能
//Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", DateTime.Now.ToString("yyyyMMddHHmmssfff")));
//Response.BinaryWrite(ms.ToArray());
book = null; ms.Seek(, SeekOrigin.Begin);
return File(ms, "application/vnd.ms-excel", "用户名单.xls");
//ms.Close();
//ms.Dispose();
}
else
{
return Content("无数据");
}
//return Content("OK");//使用response时打开此备注
}

网页中NPIO对Excel的操作实例的更多相关文章

  1. 在网页中预览excel表格文件

    项目需求在前端页面中实现预览excel表格的功能,上网了解之后大致总结为一下几种方法. 1.office文档转换为pdf,再转swf,然后通过网页加载flash进行预览 2.通过 xlsx.js,js ...

  2. java导入导出excel常用操作小结及简单示例

    POI中常用设置EXCEL的操作小结: 操作excel如下 HSSFWorkbook wb = new HSSFWorkbook();  //创建一个webbook,对应一个Excel文件 HSSFS ...

  3. 使用 pdf.js 在网页中加载 pdf 文件

    在网页中加载并显示PDF文件是最常见的业务需求.例如以下应用场景:(1)在电商网站上购物之后,下载电子发票之前先预览发票.(2)电子商务管理系统中查看发布的公文,公文文件一般是PDF格式的文件. 目前 ...

  4. imacros实现Excel数据自动录入到网页中

    一.工具选择 最近接到一个项目,需要将excel数据逐条录入.保存到网页中.经过搜集资料,能实现功能的大概有以下几种方式,按键精灵.autoit.imacros.python+selenium. 按键 ...

  5. 原生PHP网页导出和导入excel文件实例

    原生PHP实现的网页导出和导入excel文件实例,包括上传也是用的原生.还可在exportExcel方法里设置字体等表格样式. 导出和导入表单代码: <p style="margin: ...

  6. 在安卓开发中使用SQLite数据库操作实例

    前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...

  7. C#中对Excel进行操作

    工作中要处理一批数据,主要是处理从别处导出来的Excel表格(大概有一千多行,三十多列),拿到表格对Excel表格进行分析,按照一定的规则进行拆分成为一万多行的数据:首先这个需求要用程序进行处理的背景 ...

  8. 【转】经典!python中使用xlrd、xlwt操作excel表格详解

    最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究&q ...

  9. 关于python 自带csv库的使用心得 附带操作实例以及excel下乱码的解决

    因为上次帮我们产品处理过一个文件,他想生成能excel处理操作的.但是上次由于时间非常紧张,所以并没有处理好. 正好无聊就来好好研究一下 ,找算法要了几个 csv文件.来好好玩一玩. 全篇使用了pyt ...

随机推荐

  1. go学习笔记-反射(Reflection)

    反射(Reflection) 反射是利用reflect包实现的 反射可大大提高程序的灵活性,使得interface{}有更大的发挥余地 反射使用TypeOf和ValueOf函数从接口中获取目标对象信息 ...

  2. c++中string (MFC)

    题目:UVALive - 6439    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid= ...

  3. 上海Uber优步司机奖励政策(1月11日~1月17日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  4. P1094 纪念品分组

    P1094 纪念品分组 题目描述 元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作.为使得参加晚会的同学所获得 的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪 ...

  5. ASP.NET MVC 微信JS-SDK认证

    layout: post title: ASP.NET MVC 微信JS-SDK认证 category: .net date: 2016-11-01 00:00:00 tags: .net javas ...

  6. 「日常训练」School Marks(Codeforces Round 301 Div.2 B)

    题意与分析(CodeForces 540B) 题意大概是这样的,有一个考试鬼才能够随心所欲的控制自己的考试分数,但是有两个限制,第一总分不能超过一个数,不然就会被班里学生群嘲:第二分数的中位数(科目数 ...

  7. CentOS 7.2使用tomcat部署jenkins2.130

    一.jenkins介绍 Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台.这是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Jenkins可以用于一些测 ...

  8. Python内嵌函数与Lambda表达式

    //2018.10.29 内嵌函数与lambda 表达式 1.如果在内嵌函数中需要改变全局变量的时候需要用到global语句对于变 量进行一定的说明与定义 2.内部的嵌套函数不可以直接在外部进行访问 ...

  9. Siki_Unity_3-13_编程内功修炼-算法

    Unity 3-13 编程内功修炼 -- 算法 任务1&2:课程介绍 主要算法: 分治法 堆排序 二叉树 动态规划 贪心算法 图 任务3:分治算法 -- Divide and Conquer ...

  10. unable to access android sdk add-on list and SDK 更新镜像设置

    前记 国内的网络呀,真是操蛋!!!!!! unable to access android sdk add-on list 在 Android Studio 安装目录 bin/idea.propert ...