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操作都没有问题,读写合并单 ...
随机推荐
- 通过无线连接的方式来做 Appium 自动化
感谢TesterHome里各种大牛,提出的宝贵思路,我这里只是将他们的想法综合了一下,试出来的成果,谢谢大家分享你们的智慧. 简单说下背景: 由于公司要测试APP 产品的耗电问题,我们采取的办法很lo ...
- 在cocos2d-x jsb/html5中设置触摸代理的方法
和官方的说明不同,js binding的很多api和ch5版是不一样的.遇到不一样的就需要我们努力去看源码寻找了. 主要是以下几个文件 cocos2d_specifics.cpp cocos2d_sp ...
- CF 17B Hierarchy
Nick's company employed n people. Now Nick needs to build a tree hierarchy of «supervisor-surbodinat ...
- Swift - 选择框(UIPickerView)的用法
1,选择框可以让用户以滑动的方式选择值.示例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...
- 解决sdk manager无法更新的问题
我是在mac下安装了android studio,没有sdk manager,于是下了单独的sdk manager,勾选了想要下载的内容,但总是出现"nothing installed&qu ...
- jQuery遍历函数
jQuery遍历函数包含了用于筛选.查找和串联元素的方法. .add():将元素加入到匹配元素的集合中. .andSelf():把堆栈中之前的元素集加入到当前集合中. .children():获得匹配 ...
- 使用Android简单实现有道电子词典
前言: 毕业设计的内容,仅仅有Java基础.没学过Android. 本着用到什么学什么.花费了10多个晚上完毕毕业设计. 当然,仅仅是简单的实线了电子词典功能,自始至终没有考虑过性能等问题. 本电子词 ...
- DataReader和DataSet的区别以及使用
DataReader和DataSet这两个对象都可以将检索的关系数据存储在内存中.它们在功能使用方面非常相似,但是它们不可以相互替换. 主要区别如表所示: DataReader DataSet 数 ...
- Delphi “Invalid floating point operation.”错误的解决方法(使用System单元提供的Set8087CW函数禁用浮点异常)
这两天用webbrower写东西,有时候打开SSL加密网站时会出现”Invalid floating point operation.”的错误,上网搜了下,把解决方法贴上. 导致原因 在Delphi2 ...
- [Windows Phone学习笔记]UserControl的使用
UserControl的使用 开发过程中,多个UI控件需要协同工作,相互交互之后,才可完成一个完整的业务需求,此时可把这些控件封装成为一个整体,相互之间的交互逻辑封装其中,外部调用可无需关心内部逻辑, ...