当前位置: 首页 > news >正文

EPPlus 读取和生成Excel

在项目中添加了EPPlus库的引用,你可以通过NuGet包管理器或手动将EPPlus库添加到项目中。同时,需要注意的是EPPlus库支持的是xlsx格式的Excel文件。

读取

使用EPPlus读取本地Excel文件的示例代码如下:

using OfficeOpenXml;public void ReadExcel()
{// 读取文件路径string filePath = "path_to_your_excel_file.xlsx";// 创建一个新的ExcelPackage对象using (ExcelPackage package = new ExcelPackage(new FileInfo(filePath))){// 获取第一个工作表ExcelWorksheet worksheet = package.Workbook.Worksheets[0];// 获取Excel中的行数和列数int rowCount = worksheet.Dimension.Rows;int columnCount = worksheet.Dimension.Columns;// 遍历每一行for (int row = 1; row <= rowCount; row++){// 遍历每一列for (int col = 1; col <= columnCount; col++){// 通过索引获取单元格值var cellValue = worksheet.Cells[row, col].Value;// 在这里进行进一步的处理,比如将数据存储到集合中// ...}}}
}

请注意替换代码中的"path_to_your_excel_file.xlsx"为你的本地Excel文件的路径。这个示例代码打开一个Excel文件,读取第一个工作表的所有单元格,并对每个单元格的值进行处理。你可以根据自己的需求在遍历过程中进行相应的操作,比如将数据存储到集合中。

生成

下面是一个示例代码,演示如何在.NET Core中使用EPPlus生成Excel并通过接口返回给前端:

using OfficeOpenXml;
using System.IO;
using Microsoft.AspNetCore.Mvc;[ApiController]
[Route("api/[controller]")]
public class ExcelController : ControllerBase
{[HttpGet]public IActionResult GenerateExcel(){// 创建一个新的ExcelPackage对象using (ExcelPackage package = new ExcelPackage()){// 添加工作表ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sheet1");// 设置数据到工作表中worksheet.Cells["A1"].Value = "Name";worksheet.Cells["B1"].Value = "Age";worksheet.Cells["A2"].Value = "John";worksheet.Cells["B2"].Value = 25;worksheet.Cells["A3"].Value = "Jane";worksheet.Cells["B3"].Value = 30;// 保存Excel文件流MemoryStream memoryStream = new MemoryStream();package.SaveAs(memoryStream);// 设置文件名string fileName = "sample.xlsx";// 返回Excel文件return File(memoryStream.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", fileName);}}
}

在这个示例中,我们创建了一个ExcelController控制器,并在其中定义了一个GenerateExcel动作。这个动作使用EPPlus生成Excel文件,将文件保存到MemoryStream中,并使用File方法将MemoryStream作为响应返回给前端。

需要注意的是,你需要确保在控制器中引入了Microsoft.AspNetCore.Mvc命名空间。

通过调用api/Excel接口,你可以获取到生成的Excel文件,并在前端进行下载。

合并单元格

生成Excel文件之前执行了单元格合并操作:

using OfficeOpenXml;
using System.IO;
using Microsoft.AspNetCore.Mvc;[ApiController]
[Route("api/[controller]")]
public class ExcelController : ControllerBase
{[HttpGet]public IActionResult GenerateExcel(){// 创建一个新的ExcelPackage对象using (ExcelPackage package = new ExcelPackage()){// 添加工作表ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sheet1");// 设置数据到工作表中worksheet.Cells["A1"].Value = "Name";worksheet.Cells["B1"].Value = "Age";worksheet.Cells["A2"].Value = "John";worksheet.Cells["B2"].Value = 25;worksheet.Cells["A3"].Value = "Jane";worksheet.Cells["B3"].Value = 30;// 合并单元格worksheet.Cells["A1:B1"].Merge = true;// 保存Excel文件流MemoryStream memoryStream = new MemoryStream();package.SaveAs(memoryStream);// 设置文件名string fileName = "sample.xlsx";// 返回Excel文件return File(memoryStream.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", fileName);}}
}

在上述示例中,我们在设置数据之后,通过将Merge属性设置为true,以实现单元格"A1"和"B1"的合并。这将把"A1"和"B1"单元格合并为一个单元格。

http://www.lryc.cn/news/113793.html

相关文章:

  • Java wait() notify() join()用法讲解
  • 新手注意事项-visual studio 来实现别踩白块儿
  • 【力扣】2810. 故障键盘 <模拟>
  • Docker desktop使用配置
  • 第一百二十一天学习记录:线性代数:矩阵乘法运算(宋浩板书)
  • 模拟实现消息队列项目(系列3) -- 服务器模块(硬盘管理)
  • 【iOS】锁
  • 杰发科技(合肥)2021笔试题
  • Java堆排序
  • GitHub的基本使用教程
  • objectMapper.configure 方法的作用和使用
  • 面试热题(x的平方根)
  • 食品溯源合约 -- 智能合约实例
  • SAP系统中二代增强提供了4中增强函数的查找方法
  • RabbitMQ-SpringBoot2
  • MyBatis核心 - SqlSession如何通过Mapper接口生成Mapper对象
  • 【Git】标签管理与Git Flow模型
  • 日志分析和流量分析
  • typescript基础之关键字type
  • 无人机航测技术有何特点?主要应用在哪些方面?
  • 24届近5年杭州电子科技大学自动化考研院校分析
  • 调整vscode
  • Spring xml 方式整合mybatis 第三方框架
  • RabbitMQ(二) - RabbitMQ与消息发布确认与返回、消费确认
  • 操作指南 | 如何使用Chainlink喂价功能获取价格数据
  • Pandaer的iPhone手机壳
  • 将自己的网站免费发布到互联网上【无需公网IP】
  • 浅谈 Python中if __name__ == ‘__main__‘:的工作原理
  • 【力扣】344. 反转字符串 <首尾指针>
  • Kubectl 详解