<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,数据读取与写入的更多相关文章

  1. C#中NPOI操作excel之读取和写入excel数据

    一.下载引用 下载需要引用的dll,即:NPOI.dll,NPOI.OOXML.dll,NPOI.OpenXml4Net.dll,ICSharpCode.SharpZipLib.dll(office2 ...

  2. 用NPOI创建Excel、合并单元格、设置单元格样式、边框的方法

    本篇文章小编为大家介绍,用NPOI创建Excel.合并单元格.设置单元格样式.边框的方法.需要的朋友参考下 今天在做项目中,遇到使用代码生成具有一定样式的Excel,找了很多资料,最后终于解决了,Ex ...

  3. 使用NPOI创建Excel

    一.NPOI 函式庫: NPOI 函式庫檔案有七個,NPOI 函式庫可以在 http://npoi.codeplex.com 中下載,分別是: NPOI.DLL:NPOI 核心函式庫. NPOI.DD ...

  4. Java 创建 Excel 数据透视表

    Excel 数据透视表具有强大的数据处理功能,能够使表格中的数据更加直观化.使用Excel 数据透视表,能方便用户快速的排序. 筛选各种数据,同时也能满足用户对不同数据汇总的需求.本文将介绍如何在Ja ...

  5. java 对excel操作 读取、写入、修改数据;导出数据库数据到excel

    ============前提加入jar包jxl.jar========================= // 从数据库导出数据到excel public List<Xskh> outPu ...

  6. C#_Excel数据读取与写入_自定义解析封装类_支持设置标题行位置&使用excel表达式收集数据&单元格映射&标题映射&模板文件的参数数据替换

    本篇博客园是被任务所逼,而已有的使用nopi技术的文档技术经验又不支持我需要的应对各种复杂需求的苛刻要求,只能自己造轮子封装了,由于需要应对很多总类型的数据采集需求,因此有了本篇博客的代码封装,下面一 ...

  7. NPOI操作excel之读取excel数据

    NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.  一.下载引用 去NPOI官网http://npoi.codeplex. ...

  8. NPOI 导入Excel和读取Excel

    1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.NPOI是POI的C#版本,NPOI的行和列的index都是从0开始 ...

  9. C# 如何使用NPOI操作Excel以及读取合并单元格等

    C#操作Excel方法有很多,以前用的需要电脑安装office才能用,但因为版权问题公司不允许安装office.所以改用NPOI进行Excel操作,基本上一些简单的Excel操作都没有问题,读写合并单 ...

随机推荐

  1. eclipse发布项目报错:Multiple Contexts hava a path of “/xxx“

    你的位置:首页 > Java编程 > eclipse发布项目报错:Multiple Contexts hava a path of “/xxx“ eclipse发布项目报错:Multipl ...

  2. iot表输出按主键列排序,heap表不是

    <pre name="code" class="html"> create table t1 (id char(10) primary key,a1 ...

  3. 使用commons-daemon启动、关闭java程序

    系统环境: CentOS 7 X64 JDK1.8 一: 安装jsvc 下载 commons-daemon的源代码包 http://apache.fayea.com//commons/daemon/s ...

  4. Qt+gsoap调用WebService

    1.       前言 Qt本身给我们提供了调用WebService的解决方案qsoap,看了一下他的介绍,感觉实在是太弱了,而且又是个新出的东西,所以还是决定不用他.既然使用Qt,那当然是跨平台的解 ...

  5. 使用Elasticsearch、Logstash、Kibana与Redis(作为缓冲区)对Nginx日志进行收集(转)

    摘要 使用Elasticsearch.Logstash.Kibana与Redis(作为缓冲区)对Nginx日志进行收集 版本 elasticsearch版本: elasticsearch-2.2.0 ...

  6. 开源免费跨平台opengl opencv webgl gtk blender, opengl贴图程序

    三维图形的这是opengl的强项,大型3D游戏都会把它作为首选.图像处理,是opencv的锁定的目标,大多都是C的api,也有少部分是C++的,工业图像表现,图像识别,都会考虑opencv的.webg ...

  7. 提升Delphi编程效率必须使用的快捷键(Delphi2007版本)

    1. [CTRL+空格] [CTRL+SHIFT+空格] 这两个快捷键都是在代码编写过程中用到的,起提示作用,使用频率最高. CTRL+空格: 在当前光标处提示有哪些变量.函数可以使用.这个功能对于无 ...

  8. Open Source RTOS

    http://www.osrtos.com/     Name License Platforms Description Last updated FreeRTOS Modified GPL MSP ...

  9. POJ 1562 Oil Deposits

    转载请注明出处:http://blog.csdn.net/a1dark 大规模的图论切题之旅正式开始了.由于今天停了一天的电.所以晚上才开始切题.直到昨晚才把图论大概看了一遍.虽然网络流部分还是不怎么 ...

  10. ANTS Performance Profiler 破解使用

    http://blog.csdn.net/wangjia184/article/details/7746089