C#讀取Excel的幾種方法詳解

Excel是一個非常常見的工作軟件,我們在日常生活中難免要接觸到它。而C#作為一種常用的編程語言,也經常需要與Excel進行交互。在本篇文章中,我們將從多個方面結合代碼來詳細介紹C#讀取Excel的幾種方法,便於大家在實際工作中使用。

一、使用Microsoft.Office.Interop.Excel

使用Microsoft.Office.Interop.Excel是最常見的方法之一,它可以幫助我們直接讀取和操作Excel文件。我們需要引用Microsoft.Office.Interop.Excel的COM組件,並添加一些命名空間後,便可以使用相關的類和方法。下面是一個示例代碼:

using Excel = Microsoft.Office.Interop.Excel;

public void ReadExcel(string filePath)
{
    Excel.Application excelApp = new Excel.Application();
    Excel.Workbook workbook = excelApp.Workbooks.Open(filePath);
    Excel.Worksheet worksheet = workbook.Sheets[1];
    Excel.Range range = worksheet.UsedRange;

    // 讀取每一行每一列的數據
    for (int row = 1; row <= range.Rows.Count; row++)
    {
        for (int col = 1; col <= range.Columns.Count; col++)
        {
            string cellValue = range.Cells[row, col].Value.ToString();
            Console.WriteLine("第{0}行第{1}列的值:{2}", row, col, cellValue);
        }
    }

    workbook.Close();
    excelApp.Quit();
}

在這個示例中,我們通過Excel.Application對象創建了一個Excel應用程序實例,並使用它打開了一個指定路徑下的Excel文件。然後,我們選擇了Excel文件中的第一個工作表,並使用UsedRange屬性獲取了它的數據區域。最後,我們通過兩個for循環依次遍歷每一行每一列,讀取相應的單元格的值,並輸出到控制台。

二、使用OleDbConnection

OleDbConnection也是常用的一種讀取Excel文件的方法。這個方法使用了OLE DB技術,可以通過一些簡單的代碼就可以實現數據的讀取。下面是示例代碼:

using System.Data.OleDb;

public void ReadExcel(string filePath)
{
    string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1;'";
    using (OleDbConnection conn = new OleDbConnection(connString))
    {
        conn.Open();
        OleDbCommand command = new OleDbCommand("SELECT * FROM [Sheet1$]", conn);
        OleDbDataReader reader = command.ExecuteReader();

        // 讀取每一行每一列的數據
        while (reader.Read())
        {
            for (int i = 0; i < reader.FieldCount; i++)
            {
                Console.WriteLine(reader[i]);
            }
        }
    }
}

在這個示例中,我們首先創建了一個連接到Excel文件的連接字符串,然後使用OleDbConnection對象連接到該文件。接着,我們使用SQL語句「SELECT * FROM [Sheet1$]」讀取第一個工作表中的全部數據,得到一個OleDbDataReader對象。最後,我們通過一個while循環遍歷每一行,並通過for循環遍歷每一列,分別輸出到控制台。

三、使用EPPlus

EPPlus是一個第三方的開源庫,專門用於讀寫Excel文件,比較適合用於大數據量Excel文件的讀寫操作。下面是一個使用EPPlus讀取Excel文件並輸出其內容的示例代碼:

using OfficeOpenXml;

public void ReadExcel(string filePath)
{
    using (ExcelPackage package = new ExcelPackage(new FileInfo(filePath)))
    {
        ExcelWorksheet worksheet = package.Workbook.Worksheets[1];

        // 讀取每一行每一列的數據
        for (int row = worksheet.Dimension.Start.Row; row <= worksheet.Dimension.End.Row; row++)
        {
            for (int col = worksheet.Dimension.Start.Column; col <= worksheet.Dimension.End.Column; col++)
            {
                object cellValue = worksheet.Cells[row, col].Value;
                if (cellValue != null)
                {
                    Console.WriteLine("第{0}行第{1}列的值:{2}", row, col, cellValue.ToString());
                }
            }
        }
    }
}

在這個示例中,我們首先使用ExcelPackage打開指定路徑下的Excel文件。然後,我們選擇了Excel文件中的第一個工作表,並使用Dimension屬性獲取了它的真實數據區域。最後,我們通過兩個for循環依次遍歷每一行每一列,讀取相應的單元格的值,並輸出到控制台。

四、使用NPOI

NPOI是一個開源的.NET類庫,可以用於讀寫Microsoft Office系列的文件,包括Excel。NPOI相對於Microsoft.Office.Interop.Excel和OleDbConnection的優勢在於,它可以在未安裝Excel的系統中使用,並且文件大小的限制較小。下面是一個使用NPOI讀取Excel文件的示例代碼:

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;

public void ReadExcel(string filePath)
{
    using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
    {
        IWorkbook workbook = new XSSFWorkbook(fs);
        ISheet worksheet = workbook.GetSheetAt(0);

        // 讀取每一行每一列的數據
        for (int row = 0; row <= worksheet.LastRowNum; row++)
        {
            IRow currentRow = worksheet.GetRow(row);
            for (int col = 0; col < currentRow.LastCellNum; col++)
            {
                ICell currentCell = currentRow.GetCell(col);
                if (currentCell != null)
                {
                    string cellValue = currentCell.ToString();
                    Console.WriteLine("第{0}行第{1}列的值:{2}", row + 1, col + 1, cellValue);
                }
            }
        }
    }
}

在這個示例中,我們首先使用FileStream打開指定路徑下的Excel文件。然後,我們使用XSSFWorkbook和ISheet對象分別表示整個Excel文件和它的第一個工作表。接着,我們通過兩個for循環依次遍歷每一行每一列,讀取相應的單元格的值,並輸出到控制台。

五、使用Spire.XLS

Spire.XLS是另一個免費的.NET類庫,用於讀寫Excel文件。使用它可以快速讀取和操作Excel文件,並支持大多數Excel功能。下面是一個使用Spire.XLS讀取Excel文件的示例代碼:

using Spire.Xls;

public void ReadExcel(string filePath)
{
    Workbook workbook = new Workbook();
    workbook.LoadFromFile(filePath);
    Worksheet worksheet = workbook.Worksheets[0];

    // 讀取每一行每一列的數據
    for (int row = 1; row <= worksheet.LastRow; row++)
    {
        for (int col = 1; col <= worksheet.LastColumn; col++)
        {
            CellRange range = worksheet[row, col];
            if (range.Value != null)
            {
                Console.WriteLine("第{0}行第{1}列的值:{2}", row, col, range.Value);
            }
        }
    }
}

在這個示例中,我們首先使用WorkBook打開指定路徑下的Excel文件。然後,我們選擇了Excel文件中的第一個工作表,並使用LastRow和LastColumn屬性獲取它的真實數據區域。最後,我們通過兩個for循環依次遍歷每一行每一列,讀取相應的單元格的值,並輸出到控制台。

總結

通過上述的幾個示例代碼,我們可以看到使用C#讀取Excel文件有多種方法,其中Microsoft.Office.Interop.Excel和OleDbConnection比較常見但需要安裝Excel,EPPlus適用於大數據量Excel文件的讀寫操作,NPOI可以在未安裝Excel的系統中使用,Spire.XLS支持大多數Excel功能。讀者可以根據自己的實際需求選擇最合適的方法。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/303347.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-31 11:49
下一篇 2024-12-31 11:49

相關推薦

  • 為什麼不能用Microsoft Excel進行Python編程?

    Microsoft Excel是一個廣泛使用的數據分析工具,但是它不能直接用於Python編程。這是因為Microsoft Excel並不是一個編程工具,它的主要功能是進行數據處理…

    編程 2025-04-29
  • 基尼係數Excel計算模板

    這篇文章將介紹基尼係數Excel計算模板,為大家詳細闡述如何使用Excel進行基尼係數的計算。 一、模板下載及導入 首先需要下載基尼係數的Excel計算模板,可以在Excel中通過…

    編程 2025-04-28
  • 使用ReoGrid操作Excel的WPf應用

    本文將詳細闡述如何使用ReoGrid來操作Excel,重點介紹在WPF應用程序中使用ReoGrid的方法及注意點。 一、ReoGrid簡介 ReoGrid是一個基於.NET的開源組…

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web服務器。nginx是一個高性能的反向代理web服務器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分佈式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25

發表回復

登錄後才能評論