NPOI 创建Excel,数据读取与写入
<1>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.SS.Formula.Functions;
using System.IO;
using System.Text; namespace 导入导出Excel
{
/// <summary>
/// Excel导入导出 的摘要说明
/// </summary>
public class Excel导入导出 : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/x-excel"; //------------------------------------------创建Excel,并将数据写入-------- HSSFWorkbook workbook = new HSSFWorkbook();//创建一个Excel文件 ISheet sheet = workbook.CreateSheet("Sheet1");//创建一个页 IRow row = sheet.CreateRow(0); //创建sheet页的第0行(索引从0開始) row.CreateCell(0, CellType.String).SetCellValue("C罩杯");//创建第0行第0列string类型表格,并赋值"A罩杯"
row.CreateCell(1, CellType.String).SetCellValue("D罩杯");//创建第0行第1列string类型表格,并赋值"B罩杯"
row.CreateCell(2, CellType.String).SetCellValue("A罩杯");//创建第0行第2列string类型表格,并赋值"C罩杯"
row.CreateCell(3, CellType.String).SetCellValue("F罩杯");//创建第0行第3列string类型表格,并赋值"D罩杯"
row.CreateCell(18, CellType.Numeric).SetCellValue(5); //创建第0行第17列Numeric类型表格,并赋值5 //得到一个excel.xls文件的文件流 【开打指定路径下的文件,假设文件不存在则创建文件,并打开,以进行写入】
using (Stream stream = File.OpenWrite("d:/excel.xls"))
{ workbook.Write(stream); //将这个workbook文件写入到stream流中
} //------------------------------------------读取Excel的数据------------- using (Stream stream1 = File.OpenRead("d:/excel.xls"))
{ //读取workbook这个工作薄的第0个Sheet(GetSheetAt(0)),第0行(GetRow(0)),第0格(GetCell(0))的值
//string s = workbook.GetSheetAt(0).GetRow(0).GetCell(0).StringCellValue; int cellRows = sheet.LastRowNum; //获取workbook中sheet页的最后一行的行号【行号从0開始】
int sheetRowCount = sheet.LastRowNum; //这个循环是获取shee1页中"全部的行中"具有"最多列"的"列数"
int maxCellCount = 0;
for (int i = sheet.FirstRowNum; i <= cellRows; i++) //遍历sheet页的全部的行
{
row = sheet.GetRow(i); //获取当前行
if (row == null) ////这一句非常关键,由于没有数据的行默认是null
{
continue; //既然当前行无数据那就结束本次循环,进行下次循环
}
else
{
int cellCount = row.LastCellNum; //获取当前行的列数
if (cellCount > maxCellCount) //假设当前行的列数大于"最大列数maxCellCount",那么我就将当前行的列数设置为最大的列数
{
maxCellCount = cellCount; //for循环结束后,maxCellCount就得到了"全部的行中"具有"最多列"的"列数"
}
}
} //-----------------创建一个新的Excel文件 workbook2工作薄,并将workbook的内容拷贝到workbook2中--------------------- HSSFWorkbook workbook2 = new HSSFWorkbook();//创建一个workbook2工作薄,事实上就是我们常说的Excel文件 ISheet sheet2 = workbook2.CreateSheet("Sheet1");//为workbook2工作创建一个Sheet1页 //依据sheet页的总行数,来创建sheet2页的总行数
for (int i = 0; i <= cellRows; i++)
{
row = sheet.GetRow(i);
if (row == null) //假设数据源的当前行为null ,就结束本次循环,開始下次循环
{
continue;
}
else
{
sheet2.CreateRow(i); //否则就 创建workbook2中sheet2页的第i行
} //依据shee1页的总列数,创建shee2页的总列数
for (int j = 0; j < maxCellCount; j++)
{
ICell cell = row.GetCell(j);
if (cell != null) //假设数据源的当前格不为null
{
if (cell.CellType == CellType.String) //cell.CellType是获取数据源当前格的数据类型,假设它的数据类型为String类型
{
string sourceCellValue = sheet.GetRow(i).GetCell(j).StringCellValue; //获取数据源当前格的值 //将这个值赋给workbook2中sheet2页的第i行,第j列
sheet2.GetRow(i).CreateCell(j, CellType.String).SetCellValue(sourceCellValue);
} if (cell.CellType == CellType.Numeric) //假设数据源的当前格的类型为Numeric类型
{
double sourceCellValue = sheet.GetRow(i).GetCell(j).NumericCellValue;
sheet2.GetRow(i).CreateCell(j, CellType.Numeric).SetCellValue(sourceCellValue);
} } } } //开打指定路径下的文件,假设文件不存在则创建文件,并打开,以进行写入
using (Stream stream = File.OpenWrite("d:/excel2.xls"))
{
workbook2.Write(stream); //将这个workbook2文件写入到stream流中
} context.Response.Write("OK"); //提示OK
} } public bool IsReusable
{
get
{
return false;
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.SS.Formula.Functions;
using System.IO;
using System.Text; namespace 导入导出Excel
{
/// <summary>
/// Excel导入导出 的摘要说明
/// </summary>
public class Excel导入导出 : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
//context.Response.ContentType = "application/x-excel";
string name = HttpUtility.UrlEncode("Excel文件.xls"); //给要下载的文件命名为Excel文件.xls context.Response.AddHeader("Content-disposition", "attachment; filename="+name);//加入�下面载文件的形式打开文件的报文头 //------------------------------------------创建Excel,并将数据写入-------- HSSFWorkbook workbook = new HSSFWorkbook();//创建一个Excel文件 ISheet sheet = workbook.CreateSheet("Sheet1");//创建一个页 IRow row = sheet.CreateRow(0); //创建sheet页的第0行(索引从0開始) row.CreateCell(0, CellType.String).SetCellValue("C罩杯");//创建第0格
row.CreateCell(1, CellType.String).SetCellValue("D罩杯");//创建第二格并为赋值
row.CreateCell(2, CellType.String).SetCellValue("A罩杯");//创建第三格并为赋值
row.CreateCell(3, CellType.String).SetCellValue("F罩杯");//创建第四格并为赋值
row.CreateCell(18, CellType.Numeric).SetCellValue(5);//创建第17格并为赋值 //得到一个excel.xls文件的文件流 【开打指定路径下的文件,假设文件不存在则创建文件,并打开,以进行写入】
using (Stream stream = File.OpenWrite("d:/excel.xls"))
{ workbook.Write(stream); //将这个workbook文件写入到stream流中
} //------------------------------------------读取Excel的数据------------- using (Stream stream1 = File.OpenRead("d:/excel.xls"))
{ //读取workbook这个工作薄的第0个Sheet(GetSheetAt(0)),第0行(GetRow(0)),第0格(GetCell(0))的值
//string s = workbook.GetSheetAt(0).GetRow(0).GetCell(0).StringCellValue; int cellRows = sheet.LastRowNum; //获取workbook中sheet页的最后一行的行号【行号从0開始】
int sheetRowCount = sheet.LastRowNum; //这个循环是获取shee1页中"全部的行中"具有"最多列"的"列数"
int maxCellCount = 0;
for (int i = sheet.FirstRowNum; i <= cellRows; i++) //遍历sheet页的全部的行
{
row = sheet.GetRow(i); //获取当前行
if (row == null) ////这一句非常关键,由于没有数据的行默认是null
{
continue; //既然当前行无数据那就结束本次循环,进行下次循环
}
else
{
int cellCount = row.LastCellNum; //获取当前行的列数
if (cellCount > maxCellCount) //假设当前行的列数大于"最大列数maxCellCount",那么我就将当前行的列数设置为最大的列数
{
maxCellCount = cellCount; //for循环结束后,maxCellCount就得到了"全部的行中"具有"最多列"的"列数"
}
}
} //-----------------创建一个新的Excel文件 workbook2工作薄,并将workbook的内容拷贝到workbook2中--------------------- HSSFWorkbook workbook2 = new HSSFWorkbook();//创建一个workbook2工作薄,事实上就是我们常说的Excel文件 ISheet sheet2 = workbook2.CreateSheet("Sheet1");//为workbook2工作创建一个Sheet1页 //依据sheet页的总行数,来创建sheet2页的总行数
for (int i = 0; i <= cellRows; i++)
{
row = sheet.GetRow(i);
if (row == null) //假设数据源的当前行为null ,就结束本次循环,開始下次循环
{
continue;
}
else
{
sheet2.CreateRow(i); //否则就 创建workbook2中sheet2页的第i行
} //依据shee1页的总列数,创建shee2页的总列数
for (int j = 0; j < maxCellCount; j++)
{
ICell cell = row.GetCell(j);
if (cell != null) //假设数据源的当前格不为null
{
if (cell.CellType == CellType.String) //cell.CellType是获取数据源当前格的数据类型,假设它的数据类型为String类型
{
string sourceCellValue = sheet.GetRow(i).GetCell(j).StringCellValue; //获取数据源当前格的值 //将这个值赋给workbook2中sheet2页的第i行,第j列
sheet2.GetRow(i).CreateCell(j, CellType.String).SetCellValue(sourceCellValue);
} if (cell.CellType == CellType.Numeric) //假设数据源的当前格的类型为Numeric类型
{
double sourceCellValue = sheet.GetRow(i).GetCell(j).NumericCellValue;
sheet2.GetRow(i).CreateCell(j, CellType.Numeric).SetCellValue(sourceCellValue);
} } } } workbook2.Write(context.Response.OutputStream); //将文件写入到一个context的输出流中,在用户的浏览器中显示出来,注意,我在开头加入�了一个context.Response.AddHeader("Content-disposition", "attachment; filename="+name);报文头。意思是让它下面载文件的形式打开 //开打指定路径下的文件,假设文件不存在则创建文件,并打开,以进行写入
//using (Stream stream = File.OpenWrite("d:/excel2.xls"))
//{
// workbook2.Write(stream); //将这个workbook2文件写入到stream流中
//} context.Response.Write("OK"); //提示OK
} } public bool IsReusable
{
get
{
return false;
}
}
}
}
NPOI 创建Excel,数据读取与写入的更多相关文章
- C#中NPOI操作excel之读取和写入excel数据
一.下载引用 下载需要引用的dll,即:NPOI.dll,NPOI.OOXML.dll,NPOI.OpenXml4Net.dll,ICSharpCode.SharpZipLib.dll(office2 ...
- 用NPOI创建Excel、合并单元格、设置单元格样式、边框的方法
本篇文章小编为大家介绍,用NPOI创建Excel.合并单元格.设置单元格样式.边框的方法.需要的朋友参考下 今天在做项目中,遇到使用代码生成具有一定样式的Excel,找了很多资料,最后终于解决了,Ex ...
- 使用NPOI创建Excel
一.NPOI 函式庫: NPOI 函式庫檔案有七個,NPOI 函式庫可以在 http://npoi.codeplex.com 中下載,分別是: NPOI.DLL:NPOI 核心函式庫. NPOI.DD ...
- Java 创建 Excel 数据透视表
Excel 数据透视表具有强大的数据处理功能,能够使表格中的数据更加直观化.使用Excel 数据透视表,能方便用户快速的排序. 筛选各种数据,同时也能满足用户对不同数据汇总的需求.本文将介绍如何在Ja ...
- java 对excel操作 读取、写入、修改数据;导出数据库数据到excel
============前提加入jar包jxl.jar========================= // 从数据库导出数据到excel public List<Xskh> outPu ...
- C#_Excel数据读取与写入_自定义解析封装类_支持设置标题行位置&使用excel表达式收集数据&单元格映射&标题映射&模板文件的参数数据替换
本篇博客园是被任务所逼,而已有的使用nopi技术的文档技术经验又不支持我需要的应对各种复杂需求的苛刻要求,只能自己造轮子封装了,由于需要应对很多总类型的数据采集需求,因此有了本篇博客的代码封装,下面一 ...
- NPOI操作excel之读取excel数据
NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 一.下载引用 去NPOI官网http://npoi.codeplex. ...
- NPOI 导入Excel和读取Excel
1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.NPOI是POI的C#版本,NPOI的行和列的index都是从0开始 ...
- C# 如何使用NPOI操作Excel以及读取合并单元格等
C#操作Excel方法有很多,以前用的需要电脑安装office才能用,但因为版权问题公司不允许安装office.所以改用NPOI进行Excel操作,基本上一些简单的Excel操作都没有问题,读写合并单 ...
随机推荐
- 内省(二)之BeanUtils工具类
上一篇内省(Introspector)讲到的是采用JavaAPI中的类来操作bean及其属性,而Apache也开源了第三方框架来简化和丰富了对bean属性的操作,这个框架就是BeanUtils. 使用 ...
- C++运算符重载的方法
运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算.也就是说,运算符重载是通过定义函数实现的. 运算符重载实质上是函数的重载 重载运算符的函 ...
- 【安卓】eclipse中不可错过的几个秘密、!
1.PackageExplorer显示文件层次的默认方式是平行列出全部包,事实上也可显示成多级,并且效果比navigator好多了. PackageExplorer视图中,"右上角箭头→pa ...
- 12306 Android客户端的libcheckcode.so解密及修复
源:http://blog.csdn.net/justfwd/article/details/45219895 这篇文章纯粹属于安全分析研究,请勿用于非法用途.如有侵犯到厂家,请告知作者删除 123 ...
- Floodlight 处理交换机增加/移除过程
Floodlight 使用的是Netty架构,在Controller.java 入口函数中显示创建ServerBootstrap,设置套接字选项,ChannelPipeline,此时监听套接 ...
- Redis Destop Manager不能访问虚拟机
虚拟机centOS中安装Redis,主机Redis Destop Manager不能访问虚拟机Redis server的解决方案 今天在学些redis的时候碰到个问题,发现主机Redis Destop ...
- android studio下的NDK开发详解(一)
源地址:http://www.voidcn.com/blog/chengkaizone/article/p-5761016.html 好记性不如烂笔头,开始坚持写博客,学一点记一点,只为了生活更好. ...
- 14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚
14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚 如果自动提交模式被启用,在InnoDB里, 所有的用户活动发生在一个事务里, 每个SQL语句 ...
- linux内核编译环境配置
linux内核编译环境配置 如果不是编译内核,只需要安装与内核相匹配的kernel-devel开发包即可.即是/lib/modules/`uname -r`/build -> /usr/src/ ...
- VC调试技巧
Visual C++ 的 C 运行时刻函数库标识模板0xCD 已经分配的数据(alloCated Data)0xDD 已经释放的数据(Deleted Data)0xFD 被保护的数据 ...