技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

用EPPlus在C# .NET中读取Excel文件非常简单【案例】

作者:admin    时间:2023-5-15 0:26:51    浏览:

早在 .NET Core 出现之前,用代码打开 Excel 文件一直是一种痛苦的经历。在许多情况下,你实际上需要在目标/用户计算机上安装 Excel 应用程序才能通过代码打开 Excel 文件。如果你以前不得不使用那些“OLE DB Jet”查询,你就会知道这不是很好的体验。幸运的是,现在有一些非常好的开源解决方案不需要目标机器上的 Excel。这对 Windows 用户有好处,这样你就不必在目标用户机器或 Web 服务器上安装 Excel,而且对在 Linux(甚至 Mac/ARM)上托管 .NET Core 应用程序的人也有好处——Excel 显然无处可去被看到!

我写这篇文章的方法非常简单。使用几个工作表、几个公式和几个特殊格式案例创建一个标准化的 Excel 工作簿。在每个库中读取相同的数据,看看哪个最适合我。

请注意如果你正在读取一个没有公式的单个sheet的Excel工作表,你应该改为使用标准 CSV 技术解析它。我这里有几篇关于在 C# .NET 中解析 CSV 的精彩文章,你应该遵循这篇文章。CSV 解析器非常适合获取表格数据并将其反序列化为对象,应该尽可能使用。

示例数据

我认为比较所提供的不同库的最佳方法是创建一个简单的电子表格来比较我们读取数据的不同方式。电子表格将有两个“工作表”,其中第二个工作表引用第一个。

工作表 1 被命名为“First Sheet”,看起来像这样:

 

请注意,单元格 A2 只是数字“1”。然后在 B2 列中,我们引用了单元格 A2。这是因为我们要检查库是否允许我们不仅从单元格中获取“公式”,而且还允许我们计算出的值应该是什么。

我们还将单元格 A2 的字体颜色设置为红色,并且 B2 具有完整的边框(虽然很难看到,因为我正在尝试显示公式)。稍后我们将尝试提取这些样式元素。

Sheet 2 被命名为“Second Sheet”,看起来像这样:

 

所以我们正在做一个简单的“SUM”公式并引用第一张表。同样,这样我们就可以测试获取公式和计算值,但这次是跨不同的工作表。对于习惯于使用 Excel 的人来说,这并不复杂,但让我们看看一些库是如何处理它的。

一般来说,在我的测试中,我希望我的输出始终遵循相同的格式: 

Sheet 1 Data
Cell A2 Value   : 
Cell A2 Color   :
Cell B2 Formula :
Cell B2 Value   :
Cell B2 Border  :

Sheet 2 Data
Cell A2 Formula :
Cell A2 Value   :

这样当我展示代码时,你可以选择对你来说最有意义的库。

EPPlus

当我第一次开始在 .NET Core 中寻找解析 Excel 时,我记得很多个月前使用 EPPlus 进行一些非常轻量级的 Excel 解析。可以在此处找到 nuget 包:

https://www.nuget.org/packages/EPPlus/

它也是开源的,所以如果你喜欢的话,你可以通读源代码:

https://github.com/JanKallman/EPPlus

读取我们的 Excel 电子表格的代码如下所示:

static void Main(string[] args)
{
    using(var package = new ExcelPackage(new FileInfo("Book.xlsx")))
    {
        var firstSheet = package.Workbook.Worksheets["First Sheet"];
        Console.WriteLine("Sheet 1 Data");
        Console.WriteLine($"Cell A2 Value   : {firstSheet.Cells["A2"].Text}");
        Console.WriteLine($"Cell A2 Color   : {firstSheet.Cells["A2"].Style.Font.Color.LookupColor()}");
        Console.WriteLine($"Cell B2 Formula : {firstSheet.Cells["B2"].Formula}");
        Console.WriteLine($"Cell B2 Value   : {firstSheet.Cells["B2"].Text}");
        Console.WriteLine($"Cell B2 Border  : {firstSheet.Cells["B2"].Style.Border.Top.Style}");
        Console.WriteLine("");

        var secondSheet = package.Workbook.Worksheets["Second Sheet"];
        Console.WriteLine($"Sheet 2 Data");
        Console.WriteLine($"Cell A2 Formula : {secondSheet.Cells["A2"].Formula}");
        Console.WriteLine($"Cell A2 Value   : {secondSheet.Cells["A2"].Text}");
    }
}

这是*超级*简单,开箱即用。它完美地选择了公式与文本!我们第一张纸上的样式也很容易上手。边框有点烦人,因为你必须检查边框的“样式”,如果样式为“无”,则表示没有边框(与“HasBorder”或类似的布尔值相反)。但我认为我只是吹毛求疵,EPPlus 确实有效!

总结

本文介绍了用EPPlus在C# .NET中读取Excel文件的案例,希望对你有帮助。

相关文章

标签: EPPlus  CSharp  asp.net  Excel  
x
  • 站长推荐
/* 左侧显示文章内容目录 */