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. MyBatis返回主键

    网上给的例子都很简单 , 只要用useGeneratedKey就行了. @Insert({ "INSERT INTO money_record_increasement (id, creat ...

  2. JAVA 数组实例-求学生平均成绩,与计算数组的长度

    实例: 知识点:数组名.length是计算数组的长度 import java.util.*; //求学生平均分成绩 public class Test{ public static void main ...

  3. Mysql命令大全&&指定端口登录

    1.连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码 -P端口   若出现access denied for user 'sy-fjj-web'@'localhost' (u ...

  4. Liferay中SQL打印参数

      XX\tomcat-7.0.42\webapps\ROOT\WEB-INF\classes\log4j.properties log4j.rootLogger=INFO, CONSOLE log4 ...

  5. NodeJS常用工具

    一.NodeJS版本管理器n或者nvm npm install -g n npm install n -g --registry=https://registry.npm.taobao.org --v ...

  6. ramBufferSizeMB

    索引算法确定 的情况下,影响Lucene索引速度的因素 MaxBufferedDocs这个参数默认是disabled的,因为Lucene中还用另外一个参数(RAMBufferSizeMB)控制这个bu ...

  7. spring-aop示例

    具体案例放在github上,主要是jar包在上面 https://github.com/guoyansi/spring-aop-example knights.xml <?xml version ...

  8. nyoj 93 汉诺塔(三)

    点击打开链接 汉诺塔(三) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝 ...

  9. So Hard (水题)

    题目网址:http://acm.fzu.edu.cn/problem.php?pid=2193 Problem Description 请将有限小数化为最简分数. Input 一个整数n 表示需要转化 ...

  10. dhtmlxGrid分页查询,条件查询实例

    使用jquery的ajax get将页面条件请求到后台,取得数据库数据,分页查询,返回前台grid中. 引入所需文件: <script>window.dhx_globalImgPath = ...