NPOI下载:http://files.cnblogs.com/files/gosky/NPOI_2.2.0.0.zip

导入以下5个引用:

ICSharpCode.SharpZipLib.dll

NPOI.dll

NPOI.OOXML.dll

NPOI.OpenXml4Net.dll

NPOI.OpenXmlFormats.dll

1.将Excle数据导入到DataTable中

新建工具类: 根据上传文件后缀名判断 xls使用 ImportExcelFile2003方法 xlsx使用ImportExcelFile2007方法

using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Text;
using NPOI.SS.Formula.Eval;
/// <summary>
/// NPOIExcelHelper 的摘要说明
/// </summary>
public class NPOIExcelHelper
{ public static DataTable ImportExcelFile2007(string filePath)
{ XSSFWorkbook hssfworkbook;
#region//初始化信息
try
{
using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
hssfworkbook = new XSSFWorkbook(file);;
}
}
catch (Exception e)
{
throw e;
}
#endregion NPOI.SS.UserModel.ISheet sheet = hssfworkbook.GetSheetAt();;
System.Collections.IEnumerator rows = sheet.GetRowEnumerator();;
DataTable dt = new DataTable();;
rows.MoveNext();; XSSFRow row = (XSSFRow)rows.Current;
for (int j = ; j < (sheet.GetRow().LastCellNum); j++)
{
//dt.Columns.Add(Convert.ToChar(((int)'A') + j).ToString());;
//将第一列作为列表头
dt.Columns.Add(row.GetCell(j).ToString());;
}
while (rows.MoveNext())
{
row = (XSSFRow)rows.Current;
DataRow dr = dt.NewRow();;
for (int i = ; i < row.LastCellNum; i++)
{
NPOI.SS.UserModel.ICell cell = row.GetCell(i);;
if (cell == null)
{
dr[i] = null;
}
else
{
dr[i] = cell.ToString();;
}
}
dt.Rows.Add(dr);;
}
return dt;
} public static DataTable ImportExcelFile2003(string filePath)
{ HSSFWorkbook hssfworkbook;
#region//初始化信息
try
{
using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
hssfworkbook = new HSSFWorkbook(file);;
}
}
catch (Exception e)
{
throw e;
}
#endregion NPOI.SS.UserModel.ISheet sheet = hssfworkbook.GetSheetAt();;
System.Collections.IEnumerator rows = sheet.GetRowEnumerator();;
DataTable dt = new DataTable();;
rows.MoveNext();; HSSFRow row = (HSSFRow)rows.Current;
for (int j = ; j < (sheet.GetRow().LastCellNum); j++)
{
//dt.Columns.Add(Convert.ToChar(((int)'A') + j).ToString());;
//将第一列作为列表头
dt.Columns.Add(row.GetCell(j).ToString());;
}
while (rows.MoveNext())
{
row = (HSSFRow)rows.Current;
DataRow dr = dt.NewRow();;
for (int i = ; i < row.LastCellNum; i++)
{
NPOI.SS.UserModel.ICell cell = row.GetCell(i);;
if (cell == null)
{
dr[i] = null;
}
else
{
dr[i] = cell.ToString();;
}
}
dt.Rows.Add(dr);;
}
return dt;
} }

2.将数据导出到Excle

引用命名空间:

using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel;
using NPOI.SS.Formula.Eval;

代码实例:

//创建工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
//创建标签
ISheet sheet = workbook.CreateSheet("sheet1");
//新建表头
IRow rowHead = sheet.CreateRow();
rowHead.CreateCell(, CellType.String).SetCellValue("序号");
rowHead.CreateCell(, CellType.String).SetCellValue("学生姓名");
rowHead.CreateCell(, CellType.String).SetCellValue("性别");
rowHead.CreateCell(, CellType.String).SetCellValue("生源地");
rowHead.CreateCell(, CellType.String).SetCellValue("身份证");
rowHead.CreateCell(, CellType.String).SetCellValue("准考证");
rowHead.CreateCell(, CellType.String).SetCellValue("专业名称");
rowHead.CreateCell(, CellType.String).SetCellValue("专业方向");
rowHead.CreateCell(, CellType.String).SetCellValue("来源");
rowHead.CreateCell(, CellType.String).SetCellValue("生源学校");
rowHead.CreateCell(, CellType.String).SetCellValue("审核状态");
rowHead.CreateCell(, CellType.String).SetCellValue("录取状态");
//循环填充内容
for (int i = ; i < table.Rows.Count; i++)
{
IRow row = sheet.CreateRow(i + );
DataRow datarow = table.Rows[i];
row.CreateCell(, CellType.String).SetCellValue(Convert.ToString(datarow["rn"]));
row.CreateCell(, CellType.String).SetCellValue(Convert.ToString(datarow["StuName"]));
row.CreateCell(, CellType.String).SetCellValue(Constants.sex[datarow["StuSex"].ToString()]);
row.CreateCell(, CellType.String).SetCellValue(Constants.stuAddr[datarow["StuProvince"].ToString()] + Constants.stuAddr[datarow["StuCity"].ToString()]);
row.CreateCell(, CellType.String).SetCellValue(Convert.ToString(datarow["StuCardNo"]));
row.CreateCell(, CellType.String).SetCellValue(Convert.ToString(datarow["StuZKNo"]));
row.CreateCell(, CellType.String).SetCellValue(Convert.ToString(datarow["zyname"]));
row.CreateCell(, CellType.String).SetCellValue(Convert.ToString(datarow["zyfx"]));
row.CreateCell(, CellType.String).SetCellValue(Constants.stuFrom[datarow["StuFrom"].ToString()]);
row.CreateCell(, CellType.String).SetCellValue(Convert.ToString(datarow["StuSchool"]));
row.CreateCell(, CellType.String).SetCellValue(Constants.stuState[datarow["State"].ToString()]);
row.CreateCell(, CellType.String).SetCellValue(Constants.stuAdmit[datarow["Admit"].ToString()]);
} System.IO.MemoryStream ms = new System.IO.MemoryStream();
//写入内存
workbook.Write(ms);
Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", DateTime.Now.ToString("yyyyMMddHHmmssfff")));
//输出到客户端
Response.BinaryWrite(ms.ToArray());
workbook = null;
ms.Close();
ms.Dispose();

导出结果如图:

3.将服务器上的文件输出到客户端

//读取文件
FileStream fileStream = new FileStream(Server.MapPath("~/Uploads/test.xlsx"), FileMode.Open);
long fileSize = fileStream.Length;
byte[] fileBuffer = new byte[fileSize];
fileStream.Read(fileBuffer, , (int)fileSize);
//如果不写fileStream.Close()语句,用户在下载过程中选择取消,将不能再次下载
fileStream.Close();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xlsx", DateTime.Now.ToString("yyyyMMdd")));
Response.AddHeader("Content-Length", fileSize.ToString());
Response.BinaryWrite(fileBuffer);
Response.Flush();
Response.Close();

将服务器上 /Uploads/test.xlsx 文件 输出到客户端并使用日期命名

使用NPOI操纵Excle,并输入到客户端的更多相关文章

  1. Excle快速输入√与×

    如何在EXCLE中快速输入√与×呢 很简单的一个小技巧,只需要在EXCLE单元格中输入P(O) 然后将其字体设置为Wingdings 2,接着就出现符号了 不信你可以试试的哦.

  2. NPOI导出Excle

    前端: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" con ...

  3. npoi生成excel流并在客户端下载(html+后台 )

    //前端页面 <body> <input type="button" value="导出Excel" class="button&q ...

  4. Request.ServerVariables 获取服务器或者客户端信息

    本机ip[客户端]:request.servervariables("remote_addr") 从哪个页面转到当前页面的:Request.ServerVariables(&quo ...

  5. PL/SQL连接Oracle客户端步骤

    首先,安装oracle,再安装plsql 打开plsql——>选择“首选项(preferences)”——>输入oracle客户端路径 如下图:

  6. Ubuntu12.04 下svn服务搭建及Windows客户端tortoisesvn的使用

    在Ubuntu服务端搭建apache+svn 在客户端使用Tortoisesvn工具. 第一步 安装SVN $sudo apt-get install subversion 安装成功后系统会自动建立一 ...

  7. androd输入管理系统机制解析

     android的输入管理系统主要完成按键.触摸板.鼠标等输入设备的事件输入,功能包括,输入设备的事件输入及向焦点窗口和焦点视图的事件派发,事件的插入,事件的过滤,事件的拦截等功能. 整个输入系统 ...

  8. Struts2各个功能详解(2)-输入校验和拦截器

    前面知道了struts2的架构图和struts2的自动封装表单参数和数据类型自动转换,今天来学struts2的第三第四个东西,输入校验和拦截器.  一:输入校验 客户端校验进行基本校验,如检验非空字段 ...

  9. 转----ui输入测试数据

    jin'tHackChecker黑测工作室 - 专注于软件安全测试技术研究!(www.AutomationQA.com)常用安全测试用例 建立整体的威胁模型,测试溢出漏洞.信息泄漏.错误处理.SQL ...

随机推荐

  1. html标签搜索引擎友好度总结

    H系列标签:        H标签当中数H1的权重最高,H1相当于我们一篇作文的标题,H2.H3等标签是属于页面的相关性主题标签,h标签的权重也是相对递减的,如果你没有出现h1,那么h2的权重也就相当 ...

  2. SOA 与 DDD

    SOA是技术架构方面,Evans DDD则是哲学方法论方面,所属方向不一样,或者说两者非常的无关.甚至是两个不同方向.使用DDD可以将系统从无到有到大建立起来,而大到一定程度,就需要SOA,整合异构. ...

  3. Opencv 2.4.9在Ubuntu下的配置与安装

    [原]Opencv 2.4.9在Ubuntu下的配置安装  Opencv 2.4.9在Ubuntu下的配置与安装 surgewong@gmail.com http://blog.csdn.net/su ...

  4. context.Request.Files为NULL问题

    在实现图片上传功能的时候出现在ashx等处理页面出现context.Request.Files为NULL异常,有几点需要注意: 1.在客户端可以将form用submit提交,如下: <%@ Pa ...

  5. SQL字符串分组聚合(分组后的数据查询后用逗号隔开)

    )) , 'aa') , 'bb') , 'aaa') , 'bbb') , 'ccc') go , , '') from tb group by id

  6. [C#常用代码]如何把指定文件夹中的文件移动到指定的文件夹

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  7. (easy)LeetCode 223.Rectangle Area

    Find the total area covered by two rectilinear rectangles in a 2D plane. Each rectangle is defined b ...

  8. 2015 ACM/ICPC Asia Regional Beijing Online

    时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 You must have seen the very famous movie series,"Mission ...

  9. [VB.NET]Dictionary类

    字典类是一个很重要的类,尤其是对于数据的简单存储,查询,和处理. 废话不多说,简单记录下我探索的结果. 1. Dictionary内部索引是0基的.也就是说第一个元素的序号是0. 2. Public ...

  10. UltraEdit 除去行首的行号和空格

    我们在复制代码的时候,经常会发生这种事情. 例如:如下文件(lpc17xx_libcfg.h) 00001 /********************************************* ...