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组件没有太大的区别,用起来还是很方便的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值