<1>这是一个一般应用程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using System.IO;namespace Excel导出及读取
{/// <summary>/// Excel写入及读取 的摘要说明/// </summary>public class Excel写入及读取 : IHttpHandler{public void ProcessRequest(HttpContext context){//FileMode.Open是指:打开Dexcel.xls盘下的excel.xls文件,FileAccess.ReadWrite表示:可以对excel.xls文件可读可写    using (FileStream fileStream = new FileStream("d:/excel.xls", FileMode.Open, FileAccess.ReadWrite)){//根据路径通过已存在的excel来创建HSSFWorkbook,即整个excel文档      HSSFWorkbook workbook = new HSSFWorkbook(fileStream);//------------------------------------------------------------------------------------------------      //string getsheetName = workbook.GetSheetName(0);//获取第一个页的名字      //获取workbook工作薄的第一个页      //ISheet firstSheet = workbook.GetSheetAt(0);      //获取firstSheet页的第一行      //IRow firstRow = firstSheet.GetRow(0);      //获取一行最后一个方格的编号 即总的列数      //int colsCount = firstRow.LastCellNum;      //返回物理定义的行数(不是表中的行数)注:假如Excel里,只有标识为10的行有数据,那么rowCount=1;而不是10      //int rowCount = firstSheet.PhysicalNumberOfRows;      //------------------------------------------------------------------------------------------------      //获取名字为“Sheet1”的页      ISheet getSheet = workbook.GetSheet("Sheet1");int ii = getSheet.FirstRowNum; //获取页的第一行 注:这个第一行是指:第一个有值的行的行号[索引值],假如第一第二行没有值,第三行才有值,因为第三行的行号[索引值]就是2,所以ii就为2      //----------------------------------------------------LastRowNum-------------------------    //获取getSheet页的最后一行的行号[行号从0开始,即索引值],加上1即为最后一行的[行标识]。Excel的行标识从1开始。第0行【即行号为0】,的标识是1  int rowCount = getSheet.LastRowNum;//---------------------------------------------------LastCellNum-----------------------------    //因为ii是实际有值的第一行,所以它必定是经过初始化了的,那么那就获取最后一个方格的编号 即总的列数【这个没有下面那个循环获取到的总列数靠谱,所以还是用下面的循环】      //int colsCount = getSheet.GetRow(ii).LastCellNum;int maxCount = 0;for (int i = 0; i <= rowCount; i++)  //这个循环就是获取shee1页中,最后有数据的那一列(其目的就是获取总列数){IRow row = getSheet.GetRow(i);if (row == null) //这一句很关键,因为没有数据的行默认是null ,如果数据源的行为null,就跳出本次循环{continue;}else {int cellCount = row.LastCellNum;if (cellCount > maxCount){maxCount = cellCount; //当这个语句循环完毕maxCount就会得到最大列数}}}//在workbook工作薄中创建"俺的第一页"页      ISheet workbookSheet = workbook.CreateSheet("俺的第2页");//因为ii是真正在有值的第一行的行号,所以从这里开始遍历更加节约时间,当然你从0开始也没关系,只是浪费电脑做无用功     for (int i = ii; i <= rowCount; i++){IRow createRows = workbookSheet.CreateRow(i);for (int j = 0; j < maxCount; j++){IRow row = getSheet.GetRow(i);if (row == null) //这一句很关键,因为没有数据的行默认是null ,如果数据源的行为null,就跳出本次循环     {continue;}ICell cell = row.GetCell(j);if (cell != null) //这一句很关键,因为没有数据的格默认是null ,如果数据源的格不为null,就赋值  {if (cell.CellType == CellType.String)  //如果格的类型是String类型...  {string s = workbook[0].GetRow(i).GetCell(j).StringCellValue;createRows.CreateCell(j, CellType.String).SetCellValue(s);}if (cell.CellType == CellType.Numeric) //如果格的类型为Numeric类型..  {double s = workbook[0].GetRow(i).GetCell(j).NumericCellValue;createRows.CreateCell(j, CellType.String).SetCellValue(s);}}}}//不知为什么using没结束,连接已经关闭了。所以这里再次打开D盘下的excel.xls文件,进行读写。得到一个excel.xls文件的文件流     using (FileStream fileStream1 = new FileStream("d:/excel.xls", FileMode.OpenOrCreate, FileAccess.ReadWrite)){workbook.Write(fileStream1);//将workbook这个文件写入到fileStream1流中    }context.Response.Write("OK");//提示成功    }  }public bool IsReusable{get{return false;}}}
}

Excel里对日期的处理:   在Excel里日期的保存类型为Numeric,这里要给他的格式设置样式格式。

//当Excel的某一列的格要接"收从一个类里传过来,类型为DateTime类型的字段值"的时候的处理方式//在workbook工作薄中创建一个cell的StyleICellStyle cellStyle = workbook.CreateCellStyle();//在workbook工作薄中创建一个格式。IDataFormat styleFormat = workbook.CreateDataFormat();//指明这个格式的为“2014年8月15日”的样式,并给他赋给刚刚创建的cellStylecellStyle.DataFormat = styleFormat.GetFormat("yyyy\"年\"m\"月\"d\"日\"");//斜杠是转义符,为后面的"服务的,指明不要把后面的那个"作为一个字符串的结尾//创建第row行第4列Numeric类型的格ICell cell = row.CreateCell(3, CellType.Numeric);//指明这个格的样式为CellStylecell.CellStyle = cellStyle;//给这个格赋值cell.SetCellValue(Class.riqiTime); //Class.riqiTime实际是指数据源传过来的类的某个字段,这个字段的类型为DateTime类型

以上代码需要引入NPOI类库,NPOI类库下载点:http://npoi.codeplex.com/releases

选择NPOI 2.1.1 binary文件

NPOI Excel数据写入及读取相关推荐

  1. python读取excel送到网页_python怎么读取excel!怎么用python将excel数据写入网页中

    怎么用python将excel数据写入网页中 # 装 xlrd-0.9.2 xlutils-1.7.1 这两个模 from xlwt import Workbook, Formula import x ...

  2. python 网页上显示数据_怎么用python将excel数据写入网页中,python 网页上excel表格数据分析...

    用python读取excel,怎样显示要查找的数据? 感觉还是CSV格式的好一些,EXCEL的要装插件,以CSV为例,段代码 sqlserver char 对应c# import linecache ...

  3. C#实战028:OleDb操作-Excel数据写入

    前面写了C#实战021:OleDb操作-新增Excel中的sheet工作表,接下来我们就要在新增的表中添加数据了,在网上找了很多方法,都没有OleDb对excel表操作批量操作,后来通过对mysql的 ...

  4. excel文件写入、读取:node-xlsx模块

    excel文件写入.读取 node代码 示例截图 需要使用fs模块.node-xlsx模块: 下载依赖包node-xlsx: npm install node-xlsx --save node代码 / ...

  5. 蜗牛爱课- iOS中plist的创建,数据写入与读取

    iOS中plist的创建,数据写入与读取功能创建一个test.plist文件 -(void)triggerStorage {     NSArray *paths=NSSearchPathForDir ...

  6. E005 如何把Excel数据写入Word生成工资字条

    Hi,How are you doing? 我是职场编码(CodeVoc). 在E000中,我们介绍了Node.js.Ruby.Electron等工具下载安装. 这期,给你演示一下由Electron联 ...

  7. python把数据写入excel_Python读取和写入Excel文件(转)

    学习用Python处理Excel文件,这里主要用xlrd和xlwt模块,用前需要安装!本文是来自几篇博客和官网tutorial的整理,主要是一个入门.更多的处理Excel的方法请到官网学习,链接为:h ...

  8. python 读取多个excel数据写入同一个excel中

    一.将excel数据源存储到同一个excel的不同sheet 中 例如A.xlsx 中有test1,test2 两张sheet.B.xlsx中有test3 一张sheet,存储到C.xlsx中后,C有 ...

  9. python处理多个excel数据_python 读取多个excel数据写入同一个excel中

    一.将excel数据源存储到同一个excel的不同sheet 中 例如A.xlsx 中有test1,test2 两张sheet.B.xlsx中有test3 一张sheet,存储到C.xlsx中后,C有 ...

最新文章

  1. Tesla超越谷歌无人驾驶汽车雄心的背后,是以色列公司Mobileye
  2. 如何挖掘消费者的隐性需求?
  3. C语言在建筑专业的应用,新工科背景下基于OBE的《C语言程序设计》课程建设
  4. 3步理清Python数据分析关键点,新手必看
  5. python3 重新学习
  6. centos 5.8 升级php5.1至5.3
  7. javascript 函数初探 (六)--- 闭包初探#4
  8. 酷似美军作战模式的中台战略,究竟是怎么回事? | 大咖说中台
  9. 3-3 银行业务队列简单模拟 (25 分)
  10. win10解压文件时,出错:不能创建符号链接 你可能需要以管理员权限运行Winrar 客户端没有所需的特权
  11. PHP navicat数据搭建,navicat怎么建表
  12. Redis应用场景-排行榜
  13. 2018西安工业大学第二届萌新线上赛MISC WP
  14. 三进网吧后,我“被跳槽”了!
  15. arcgis直方图工具在哪_这些分析工具都分不清?别说你懂数据分析!
  16. 2016全球大数据战略版图剖析(6):应用篇下
  17. JEPF项目初上手,一把辛酸泪
  18. linux如何查看python的版本_linux怎么改python默认版本
  19. 【软考软件评测师】第二十九章 可靠性可用性测试
  20. 解决openEuler网络配置ens33网卡问题

热门文章

  1. 黑马程序员2018软件测试培训班完整视频
  2. I2C电路:一种超级实用的3.3V/5V双向电平转换电路
  3. APP测试内容 -- 流量测试常见测试方法
  4. 贪吃的大嘴(多重背包问题)
  5. AppCube视角浅析: 艾瑞咨询《2022年中国低代码行业研究报告》
  6. 转:皮克斯创始人:聪明人为什么会做愚蠢的决定
  7. 苹果公司开发者账号申请流程
  8. ORA 00257 归档程序错误 导致无法连接
  9. python-turtle函数
  10. poj 1426 栈 广搜