zoukankan      html  css  js  c++  java
  • NPOI 读写excel

    现在的项目需要导出和导入excel,为了简单的导入导出去用一套收费的office组件对于项目不能接受,幸好找到了NPOI这个简单开源的excel读写组件。

    NPOI官网:http://npoi.codeplex.com/

    1.简单读取excel数据到datatable

    复制代码
     FileStream file = new FileStream(Server.MapPath(@"TemFiles\tem.xls"), FileMode.Open, FileAccess.Read); 

    //根据路径通过已存在的excel来创建HSSFWorkbook,即整个excel文档 HSSFWorkbook workbook = new HSSFWorkbook(file); //获取excel的第一个sheet HSSFSheet sheet = workbook.GetSheetAt(0); DataTable table = new DataTable(); //获取sheet的首行 HSSFRow headerRow = sheet.GetRow(0); //一行最后一个方格的编号 即总的列数 int cellCount = headerRow.LastCellNum; for (int i = headerRow.FirstCellNum; i < cellCount; i++) { DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue); table.Columns.Add(column); } //最后一列的标号 即总的行数 int rowCount = sheet.LastRowNum; for (int i = (sheet.FirstRowNum + 1); i < sheet.LastRowNum; i++) { HSSFRow row = sheet.GetRow(i);
           if (row== null)//这一句很关键,因为没有数据的行默认是null
           {
            continue;
            }
    DataRow dataRow
    = table.NewRow(); for (int j = row.FirstCellNum; j < cellCount; j++) { if (row.GetCell(j) != null)//同理,没有数据的单元格都默认是null dataRow[j] = row.GetCell(j).ToString(); } table.Rows.Add(dataRow); } workbook = null; sheet = null;
    复制代码

    2.写入数据到excel

    复制代码
     FileStream file = new FileStream(Server.MapPath(@"TemFiles\tem.xls"), FileMode.Open, FileAccess.Read); 

    //根据路径通过已存在的excel来创建HSSFWorkbook,即整个excel文档 HSSFWorkbook workbook = new HSSFWorkbook(file);

    HSSFSheet sheet1 
    =workbook .CreateSheet("Sheet1"); HSSFRow row1=sheet1.CreateRow(0);    //行建好了,就可以建单元格了,比如创建A1位置的单元格: row1.CreateCell(0).SetCellValue(1);    //SetCellValue有好几种重载 //你可以设置单元格为bool、double、DateTime、string和HSSFRichTextString类型。 //其中对于string类型的重载调用的就是HSSFRichTextString类型的重载,所以是一样的, //HSSFRichTextString可用于有字体或者Unicode的文本。 sheet1.CreateRow(0).CreateCell(0).SetCellValue("This is a Sample"); sheet1.GetRow(0).CreateCell(0).SetCellValue("This is a Sample");
    复制代码

    npoi在下载时会附带很多的sample,习惯上也和office组件没有太大的区别,用起来还是很方便的

     
     
     
    标签: EXCEL操作
  • 相关阅读:
    oracle 动态SQL
    Oracle 学习PL/SQL
    SQL优化原理
    JAVA环境配置
    Java接口
    Java数据类型、操作符、表达式
    C#-VS配置开发环境-摘
    Java版本
    网站构建
    Java 时间、字符串
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2923472.html
Copyright © 2011-2022 走看看