博客
关于我
Net操作Excel(终极方法NPOI)
阅读量:789 次
发布时间:2023-02-15

本文共 3241 字,大约阅读时间需要 10 分钟。

NPOI操作Excel:在没有安装Office的情况下高效处理Office文档

前言

在ASP.NET/C#开发中操作Excel已经成为开发者的常见需求之一。然而,选择合适的工具对于提高开发效率至关重要。NPOI(Apache POI的开源版本)作为一个强大的工具,能够在没有安装微软Office的情况下,轻松读取并写入 Office 97-2003格式的文件,包括Excel、Word和PowerPoint文件。

NPOI构建在POI 3.x版本之上,支持从Excel、Word等文件中提取数据,且无需依赖Office环境。对于需要处理大量Excel文件的开发者来说,NPOI是一个理想的选择。

方法

1. 下载并引入NPOI

首先,访问NPOI的官方网站 http://npoi.codeplex.com/,下载适用于你项目的NPOI版本(支持.NET 2.0和.NET 4.0的DLL文件)。将下载的DLL文件添加到你的项目中,确保在代码中可以使用到。

2. ASP.NET导出Excel

如果你需要将数据以Excel格式导出到客户端,可以按照以下步骤操作:

using (MemoryStream ms = new MemoryStream())  {      HSSFWorkbook book = new HSSFWorkbook();      ISheet sheet = book.CreateSheet("test_01");      IRow row = sheet.CreateRow(0);      row.CreateCell(0).SetCellValue("第一列第一行");      // 继续添加更多行和单元格      book.Write(ms);      Response.AddHeader("Content-Disposition", $"attachment; filename={DateTime.Now:yyyyMMddHHmmssfff}.xls");      Response.BinaryWrite(ms.ToArray());      book = null;      ms.Dispose();  }

3. ASP.NET导入Excel

如果需要从Excel文件中读取数据到DataTable中,可以按照以下步骤操作:

DataTable ImportExcelFile(string filePath)  {      DataTable dt = new DataTable();      try      {          using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))          {              HSSFWorkbook hssfworkbook = new HSSFWorkbook(file);          }      }      catch (Exception e)      {          throw new Exception("导入Excel文件失败:" + e.Message);      }      ISheet sheet = hssfworkbook.GetSheetAt(0);      IEnumerator rows = sheet.GetRowEnumerator();      // 确定列数      for (int j = 0; j < sheet.GetRow(0).LastCellNum; j++)      {          dt.Columns.Add((char)('A' + j).ToString());      }      // 读取数据      while (rows.MoveNext())      {          HSSFRow row = (HSSFRow)rows.Current;          DataRow dr = dt.NewRow();          for (int i = 0; i < row.LastCellNum; i++)          {              Cell cell = row.GetCell(i);              dr[i] = cell == null ? null : cell.ToString();          }          dt.Rows.Add(dr);      }      return dt;  }

4. C#导出Excel

如果你需要将DataTable中的数据以Excel格式保存到文件中,可以按照以下步骤操作:

public static void WriteExcel(DataTable dt, string filePath)  {      if (string.IsNullOrEmpty(filePath) || dt == null || dt.Rows.Count == 0)      {          return;      }      HSSFWorkbook book = new HSSFWorkbook();      ISheet sheet = book.CreateSheet(dt.TableName);      IRow headerRow = sheet.CreateRow(0);      for (int i = 0; i < dt.Columns.Count; i++)      {          headerRow.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName);      }      for (int i = 0; i < dt.Rows.Count; i++)      {          IRow row = sheet.CreateRow(i + 1);          for (int j = 0; j < dt.Columns.Count; j++)          {              row.CreateCell(j).SetCellValue(dt.Rows[i][j] != null ? dt.Rows[i][j].ToString() : string.Empty);          }      }      // 将文件写入      using (MemoryStream ms = new MemoryStream())      {          book.Write(ms);          using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))          {              byte[] data = ms.ToArray();              fs.Write(data, 0, data.Length);              fs.Flush();          }          book = null;      }  }

结论

通过以上方法,你可以轻松地在ASP.NET/C#项目中使用NPOI来读取和写入Excel文件。NPOI的优势在于无需安装Office环境,支持多种文件格式,且操作简单易懂。如果你觉得这篇文章对你有帮助,请不要忘记分享给需要的朋友或同事。

转载地址:http://qtcfk.baihongyu.com/

你可能感兴趣的文章
MySQL函数简介
查看>>
MySQL数据库与Informix:能否创建同名表?
查看>>
mysql服务无法启动的问题
查看>>
mysql权限
查看>>
mysql条件查询
查看>>
mysql的sql语句基本练习
查看>>
MySQL的错误:No query specified
查看>>
mysql索引
查看>>
mysql索引、索引优化(这一篇包括所有)
查看>>
MySql索引为什么使用B+树
查看>>
MySQL索引原理以及查询优化
查看>>
Mysql索引底层结构的分析
查看>>
MySQL索引底层:B+树详解
查看>>
Mysql索引总结
查看>>
mysql经常使用命令
查看>>
Mysql缓存调优的基本知识(附Demo)
查看>>
mysql自动化同步校验_Shell: 分享MySQL数据同步+主从复制自动化脚本_20190313_七侠镇莫尛貝...
查看>>
mysql自增id超大问题查询
查看>>
MySQL获取分组后的TOP 1和TOP N记录
查看>>
Mysql表创建外键报错
查看>>