当前位置:   article > 正文

EPPlus 读取和生成Excel

epplus

在项目中添加了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;
                
                // 在这里进行进一步的处理,比如将数据存储到集合中
                // ...
            }
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

请注意替换代码中的"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);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

在这个示例中,我们创建了一个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);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/118543
推荐阅读
相关标签
  

闽ICP备14008679号