博客
关于我
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/

你可能感兴趣的文章
nacos运行报错问题之一
查看>>
Nacos部署中的一些常见问题汇总
查看>>
NACOS部署,微服务框架之NACOS-单机、集群方式部署
查看>>
Nacos配置Mysql数据库
查看>>
Nacos配置中心中配置文件的创建、微服务读取nacos配置中心
查看>>
Nacos配置中心集群原理及源码分析
查看>>
nacos配置在代码中如何引用
查看>>
nacos配置新增不成功
查看>>
nacos配置自动刷新源码解析
查看>>
Nacos集群搭建
查看>>
nacos集群搭建
查看>>
nacos集群节点故障对应用的影响以及应急方法
查看>>
nagios安装文档
查看>>
nagios服务端安装
查看>>
name_save matlab
查看>>
Nami 项目使用教程
查看>>
NAND NOR FLASH闪存产品概述
查看>>
nano 编辑
查看>>
NASA网站曝严重漏洞,或将沦为黑客钓鱼网站?
查看>>
Nash:轻量级、安全且可靠的脚本语言
查看>>