最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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) 接口是通過索引來獲取字符串數(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 是當前工作頁下每一行的數(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)文章

  • C# DoubleClick與MouseDoubleClick區(qū)別,雙擊事件引發(fā)順序

    C# DoubleClick與MouseDoubleClick區(qū)別,雙擊事件引發(fā)順序

    從邏輯上來說,由于比MouseDoubleClick 描述更抽象,DoubleClick 事件是控件的更高級別的事件
    2009-09-09
  • C# 復制指定節(jié)點的所有子孫節(jié)點到新建的節(jié)點下

    C# 復制指定節(jié)點的所有子孫節(jié)點到新建的節(jié)點下

    這篇文章主要介紹了C# 復制指定節(jié)點的所有子孫節(jié)點到新建的節(jié)點下的相關(guān)資料,非常不錯具有一定的參考借鑒價值,需要的朋友可以參考下
    2016-10-10
  • C#繪制實時曲線的方法

    C#繪制實時曲線的方法

    這篇文章主要為大家詳細介紹了C#繪制實時曲線的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C#中類與結(jié)構(gòu)的區(qū)別實例分析

    C#中類與結(jié)構(gòu)的區(qū)別實例分析

    這篇文章主要介紹了C#中類與結(jié)構(gòu)的區(qū)別,類與結(jié)構(gòu)是C#初學者比較輕易混淆的概念,本文加以實例說明,需要的朋友可以參考下
    2014-08-08
  • 解析C#網(wǎng)絡(luò)編程中的Http請求

    解析C#網(wǎng)絡(luò)編程中的Http請求

    這篇文章主要介紹了C#網(wǎng)絡(luò)編程中的Http請求,不過這次也使我對C#網(wǎng)絡(luò)編程了解的更多,算是一次學習經(jīng)歷吧,文章結(jié)合示例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-03-03
  • C#使用linq對數(shù)組進行篩選排序的方法

    C#使用linq對數(shù)組進行篩選排序的方法

    這篇文章主要介紹了C#使用linq對數(shù)組進行篩選排序的方法,實例分析了C#實用linq擴展進行數(shù)組排序的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • C#中數(shù)組擴容的幾種方式介紹

    C#中數(shù)組擴容的幾種方式介紹

    這篇文章介紹了C#中數(shù)組擴容的幾種方式,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • WinForm中跨線程操作UI的解決方案匯總

    WinForm中跨線程操作UI的解決方案匯總

    在開發(fā)WinForm應用程序時,經(jīng)常會遇到需要在線程間操作UI的情況,直接從非UI線程更新UI控件會導致異常,因此我們需要采取適當?shù)姆椒▉戆踩剡M行這些操作,本文總結(jié)了幾種常見的解決方法,并對其優(yōu)缺點進行了分析,需要的朋友可以參考下
    2025-06-06
  • C#中對稱加密算法的踩坑日常記錄

    C#中對稱加密算法的踩坑日常記錄

    這篇文章主要給大家介紹了關(guān)于C#中對稱加密算法的踩坑日常記錄,文中通過示例代碼介紹的非常詳細,對大家學習或者使用C#具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06
  • C# DataGridView添加新行的2個方法

    C# DataGridView添加新行的2個方法

    DataGridView控件在實際應用中非常實用,特別需要表格顯示數(shù)據(jù)時。
    2013-03-03

最新評論

阜康市| 博客| 衡阳市| 崇阳县| 磐石市| 金平| 汽车| 郁南县| 木里| 密山市| 文成县| 远安县| 乌什县| 张家口市| 上虞市| 六盘水市| 岳阳市| 丰都县| 中方县| 斗六市| 文登市| 崇文区| 丰镇市| 封开县| 鄂托克旗| 五峰| 济阳县| 蚌埠市| 郧西县| 福清市| 张北县| 都江堰市| 合水县| 怀来县| 淄博市| 张家口市| 万载县| 郁南县| 黄陵县| 嘉鱼县| 阜阳市|