欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#中ExcelDataReader的具體使用

 更新時間:2025年04月02日 09:20:22   作者:火一線  
ExcelDataReader是一個輕量級的可快速讀取Excel文件中數(shù)據(jù)的工具,本文主要介紹了C#中ExcelDataReader的具體使用,具有一定的參考價值,感興趣的可以了解一下

今天來給大家介紹一下ExcelDataReader,ExcelDataReader是一個輕量級的可快速讀取Excel文件中數(shù)據(jù)的工具。話不多說直接開始。

ExcelDataReader簡介

ExcelDataReader支持.xlsx、.xlsb、.xls、.csv格式文件的讀取,版本基本在2007及以上版本,支持的格式和版本看下圖。

我們首先需要再VS中添加ExcelDataReader程序集,在 工具 -> NuGet包管理器 -> 管理解決方案的NuGet程序包 中搜索ExcelDataReader,并安裝到工程中。如下圖:

ExcelDataReader和ExcelDataReader.DataSet都可以調(diào)用ExcelDataReader庫,官網(wǎng)介紹由于版本升級問題,如果需要使用AsDataSet()方法則需要安裝ExcelDataReader.DataSet。

ExcelDataReader使用

我們下來介紹一下ExcelDataReader對于數(shù)據(jù)的讀取,有兩種方式可以讀取Excel,IExcelDataReader方法和DataSet方法。

我們先來展示一下Excel文件的示例,圖1是Sheet1,圖2是Sheet2

IExcelDataReader

首先我們需要通過 File.OpenRead 來獲取 Excel.xlsx 的文件流數(shù)據(jù)。通過 ExcelReaderFactory.CreateReader 接口來創(chuàng)建 IExcelDataReader reader 對象,reader采取的是逐個工作表、逐行的方式讀取數(shù)據(jù),然后通過 reader.GetString(0) 獲取數(shù)據(jù)。

reader默認為第一個工作表,第一行數(shù)據(jù)開始。調(diào)用 reader.NextResult() 接口 reader 會移入下一個工作表。調(diào)用 reader.Read() 接口 reader 會讀取一行數(shù)據(jù)。reader.GetString(0) 接口是通過索引來獲取字符串?dāng)?shù)據(jù),除此之外 reader 還有其他獲取不同類型數(shù)據(jù)的接口,小伙伴可以自行查閱文檔。

由于 IExcelDataReader 采用的是逐頁、逐行讀取數(shù)據(jù)的方式,這種方式隨便不夠靈活便捷,但由于每次讀取數(shù)據(jù)量少,所以在運行效率和性能上有比較大的優(yōu)勢。

using System.Text;
using ExcelDataReader;

public class Program
{
    static void Main(string[] args)
    {
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

        string filePath = "Excel.xlsx";
        using (FileStream stream = File.OpenRead(filePath))
        {
            using (IExcelDataReader reader = ExcelReaderFactory.CreateReader(stream))
            {
                // 1. Use the reader methods
                do
                {
                    Console.WriteLine($"Sheet name:{reader.Name}");

                    while (reader.Read())
                    {
                        Console.WriteLine($"{reader.GetString(0)} \t\t{reader.GetString(1)}");
                    }

                    Console.WriteLine();
                } while (reader.NextResult());
            }
        }
    }
}

AsDataSet

同樣我們需要通過 File.OpenRead 來獲取 Excel.xlsx 的文件流數(shù)據(jù),然后通過 ExcelReaderFactory.CreateReader 接口來創(chuàng)建 IExcelDataReader reader 對象,這與之前的操作一樣。

之后我們通過 reader.AsDataSet() 接口來獲取 DataSet dataSet 對象,dataSet 可以采用索引的方式來獲取數(shù)據(jù)。通過  dataSet.Tables[0] 可以獲取到 DataTable dataTable 對象。dataTable 就是Excel的工作頁,輸出 dataTable.TableName 可以獲取到工作頁名稱。我們再通過 dataTable.Rows[0] 來獲取 DataRow dataRow 對象,dataRow 是當(dāng)前工作頁下每一行的數(shù)據(jù),通過 dataRow[0] 可以獲取單元格中的數(shù)據(jù)。

除了索引獲取數(shù)據(jù)以外,依然可以通過遍歷的方式來獲取數(shù)據(jù),示例代碼如下。

using System.Data;
using System.Text;
using ExcelDataReader;

public class Program
{
    static void Main(string[] args)
    {
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

        string filePath = "Excel.xlsx";
        using (FileStream stream = File.OpenRead(filePath))
        {
            using (IExcelDataReader reader = ExcelReaderFactory.CreateReader(stream))
            {
                // 2. Use the AsDataSet extension method
                DataSet dataSet = reader.AsDataSet();

                DataTable dataTable = dataSet.Tables[0];
                Console.WriteLine(dataTable.TableName);

                DataRow dataRow = dataTable.Rows[0];
                Console.WriteLine($"{dataRow[0]} {dataRow[1]}\n");

                foreach (DataTable table in dataSet.Tables)
                {
                    Console.WriteLine(table.TableName);
                    foreach (DataRow row in table.Rows)
                    {
                        Console.WriteLine($"{row[0]} \t{row[1]}");
                    }
                    Console.WriteLine();
                }
            }
        }
    }
}

補充說明

需要補充說明一下的是 ExcelDataReader 在.NET Core 和 .NET 5.0 或更高版本中會拋出encoding 1252的錯誤編碼。解決辦法就是需要為System.Text.Encoding.CodePages添加一個依賴項,在代碼中添加 Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); 這段代碼

官方文檔鏈接

ExcelDataReader鏈接:https://github.com/ExcelDataReader/ExcelDataReader

到此這篇關(guān)于C#中ExcelDataReader的具體使用的文章就介紹到這了,更多相關(guān)C# ExcelDataReader內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Unity實現(xiàn)蘋果手機Taptic震動

    Unity實現(xiàn)蘋果手機Taptic震動

    這篇文章主要介紹了Unity實現(xiàn)蘋果手機Taptic震動,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C#實現(xiàn)IDisposable接口釋放非托管資源

    C#實現(xiàn)IDisposable接口釋放非托管資源

    這篇文章主要為大家介紹了C#實現(xiàn)IDisposable接口釋放非托管資源,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • 簡單了解C#設(shè)計模式編程中的橋接模式

    簡單了解C#設(shè)計模式編程中的橋接模式

    這篇文章主要介紹了C#設(shè)計模式編程中的橋接模式,橋接模式經(jīng)常應(yīng)用于解耦邏輯層與數(shù)據(jù)操作層,需要的朋友可以參考下
    2016-02-02
  • c# 設(shè)置TeeChart控件的提示文本

    c# 設(shè)置TeeChart控件的提示文本

    這篇文章主要介紹了c# 如何設(shè)置TeeChart控件的提示文本,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-11-11
  • 基于C#編寫一個遠程桌面應(yīng)用

    基于C#編寫一個遠程桌面應(yīng)用

    封閉環(huán)境無法拷貝外來的遠程桌面軟件,所以這篇文章小編就來帶大家用C#編寫一個簡單的遠程桌面應(yīng)用,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • C#實現(xiàn)判斷文件夾存在與否并創(chuàng)建文件夾的方法

    C#實現(xiàn)判斷文件夾存在與否并創(chuàng)建文件夾的方法

    這篇文章主要介紹了C#實現(xiàn)判斷文件夾存在與否并創(chuàng)建文件夾的方法,涉及C#針對文件及目錄的判斷與創(chuàng)建操作相關(guān)技巧,需要的朋友可以參考下
    2017-02-02
  • WinForm中的幾個實用技巧匯總

    WinForm中的幾個實用技巧匯總

    這篇文章主要介紹了WinForm中的幾個實用技巧,是進行C#程序設(shè)計中經(jīng)常用到的技巧,需要的朋友可以參考下
    2014-08-08
  • c#中DataTable轉(zhuǎn)List的2種方法示例

    c#中DataTable轉(zhuǎn)List的2種方法示例

    這篇文章主要給大家介紹了關(guān)于c#中DataTable轉(zhuǎn)List的2種方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Unity實現(xiàn)滑動更換界面效果

    Unity實現(xiàn)滑動更換界面效果

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)滑動更換界面效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C#實現(xiàn)快速排序算法

    C#實現(xiàn)快速排序算法

    本文詳細講解了C#實現(xiàn)快速排序算法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04

最新評論