技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運營

贊助商

分類目錄

贊助商

最新文章

搜索

用EPPlus在C# .NET中讀取Excel文件非常簡單【案例】

作者:admin    時間:2023-5-15 0:26:51    瀏覽:

早在 .NET Core 出現(xiàn)之前,用代碼打開 Excel 文件一直是一種痛苦的經(jīng)歷。在許多情況下,你實際上需要在目標(biāo)/用戶計算機上安裝 Excel 應(yīng)用程序才能通過代碼打開 Excel 文件。如果你以前不得不使用那些“OLE DB Jet”查詢,你就會知道這不是很好的體驗。幸運的是,現(xiàn)在有一些非常好的開源解決方案不需要目標(biāo)機器上的 Excel。這對 Windows 用戶有好處,這樣你就不必在目標(biāo)用戶機器或 Web 服務(wù)器上安裝 Excel,而且對在 Linux(甚至 Mac/ARM)上托管 .NET Core 應(yīng)用程序的人也有好處——Excel 顯然無處可去被看到!

我寫這篇文章的方法非常簡單。使用幾個工作表、幾個公式和幾個特殊格式案例創(chuàng)建一個標(biāo)準(zhǔn)化的 Excel 工作簿。在每個庫中讀取相同的數(shù)據(jù),看看哪個最適合我。

請注意如果你正在讀取一個沒有公式的單個sheet的Excel工作表,你應(yīng)該改為使用標(biāo)準(zhǔn) CSV 技術(shù)解析它。我這里有幾篇關(guān)于在 C# .NET 中解析 CSV 的精彩文章,你應(yīng)該遵循這篇文章。CSV 解析器非常適合獲取表格數(shù)據(jù)并將其反序列化為對象,應(yīng)該盡可能使用。

示例數(shù)據(jù)

我認為比較所提供的不同庫的最佳方法是創(chuàng)建一個簡單的電子表格來比較我們讀取數(shù)據(jù)的不同方式。電子表格將有兩個“工作表”,其中第二個工作表引用第一個。

工作表 1 被命名為“First Sheet”,看起來像這樣:

 

請注意,單元格 A2 只是數(shù)字“1”。然后在 B2 列中,我們引用了單元格 A2。這是因為我們要檢查庫是否允許我們不僅從單元格中獲取“公式”,而且還允許我們計算出的值應(yīng)該是什么。

我們還將單元格 A2 的字體顏色設(shè)置為紅色,并且 B2 具有完整的邊框(雖然很難看到,因為我正在嘗試顯示公式)。稍后我們將嘗試提取這些樣式元素。

Sheet 2 被命名為“Second Sheet”,看起來像這樣:

 

所以我們正在做一個簡單的“SUM”公式并引用第一張表。同樣,這樣我們就可以測試獲取公式和計算值,但這次是跨不同的工作表。對于習(xí)慣于使用 Excel 的人來說,這并不復(fù)雜,但讓我們看看一些庫是如何處理它的。

一般來說,在我的測試中,我希望我的輸出始終遵循相同的格式: 

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   :

這樣當(dāng)我展示代碼時,你可以選擇對你來說最有意義的庫。

EPPlus

當(dāng)我第一次開始在 .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 確實有效!

總結(jié)

本文介紹了用EPPlus在C# .NET中讀取Excel文件的案例,希望對你有幫助。

相關(guān)文章

標(biāo)簽: EPPlus  CSharp  asp.net  Excel  
x
  • 站長推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */