C#高效實現(xiàn)Excel數(shù)據(jù)讀取入門教程
在 C# 開發(fā)中,Excel 數(shù)據(jù)處理是高頻場景—無論是用戶數(shù)據(jù)導入、業(yè)務報表生成,還是簡單的數(shù)據(jù)分析,Excel 都不可或缺。但傳統(tǒng)依賴 Microsoft.Office.Interop.Excel 的方案,總會遇到性能差、需裝Office環(huán)境、部署麻煩等問題。
而免費版 Free Spire.XLS恰好能解決這些痛點:無需安裝任何Office組件,完全免費且API簡潔,足以滿足小型項目的Excel讀取需求。下面就詳細介紹如何用它實現(xiàn)Excel數(shù)據(jù)讀取。
一、環(huán)境準備:安裝 Free Spire.XLS
1. NuGet安裝
有兩種方式任選:
- 右鍵點擊項目 → 「管理NuGet程序包」→ 切換到「瀏覽」,搜索“FreeSpire.XLS”,找到后點擊「安裝」。
- 打開「NuGet包管理器控制臺」,輸入以下命令并回車:
install-package FreeSpire.XLS
2. 驗證安裝
安裝完成后,展開項目的「引用」文件夾,若能看到 FreeSpire.XLS 程序集,說明免費版已成功集成。
注意:免費版有數(shù)據(jù)量限制,適合小型數(shù)據(jù)處理場景。
二、3分鐘快速上手:基礎單元格讀取
1. 引入命名空間
在代碼文件頂部添加 Spire.XLS 命名空間,確保能調(diào)用核心類:
using Spire.Xls;
2. 編寫基礎讀取代碼
支持讀取 XLS 和 XLSX 文件,提供“列名定位”和“行號列號定位”兩種方式,代碼如下:
// 1. 初始化工作簿,加載Excel文件(替換為你的文件路徑)
Workbook workbook = new Workbook();
workbook.LoadFromFile("測試數(shù)據(jù).xlsx");
// 2. 獲取第一個工作表(索引從0開始)
Worksheet targetSheet = workbook.Worksheets[0];
// 3. 讀取指定單元格數(shù)據(jù)
Console.WriteLine("通過列名讀?。ˋ1單元格):" + targetSheet.Range["A1"].Value);
Console.WriteLine("通過行號列號讀取(第2行第1列):" + targetSheet.Range[2, 1].Value);
3.關鍵提醒
用「行號+列號」定位時,索引從1開始(而非 C# 常規(guī)的0索引),比如“第3行第2列”需寫為Range[3, 2],若誤寫為Range[3, 1]會定位到錯誤單元格。
三、批量讀取:遍歷整個工作表數(shù)據(jù)
若需讀取Excel中所有有效數(shù)據(jù)(如批量導入到數(shù)據(jù)庫),可通過“有效數(shù)據(jù)區(qū)域”遍歷,避免讀取空單元格。完整代碼如下:
using Spire.Xls;
namespace ExcelRead
{
class Program
{
static void Main(string[] args)
{
try
{
// 加載Excel文件
Workbook workbook = new Workbook();
workbook.LoadFromFile("產(chǎn)品數(shù)據(jù).xlsx");
// 獲取第一個工作表
Worksheet dataSheet = workbook.Worksheets[0];
// 獲取“有效數(shù)據(jù)區(qū)域”(僅包含有數(shù)據(jù)的單元格,減少資源占用)
CellRange validRange = dataSheet.AllocatedRange;
// 外層循環(huán)遍歷行
for (int rowIdx = 0; rowIdx < validRange.Rows.Length; rowIdx++)
{
// 內(nèi)層循環(huán)遍歷當前行的列
for (int colIdx = 0; colIdx < validRange.Rows[rowIdx].ColumnCount; colIdx++)
{
// 單元格索引從1開始,需對循環(huán)變量+1
string cellData = validRange[rowIdx + 1, colIdx + 1].Value;
Console.Write(cellData + " ");
}
Console.WriteLine(); // 一行結束后換行
}
Console.WriteLine("讀取完成!");
}
catch (Exception ex)
{
Console.WriteLine("讀取失?。? + ex.Message);
}
}
}
}
四、特殊場景:讀取公式與計算結果
若 Excel 單元格包含公式(如=A2+B2),直接用 Value 屬性會返回公式文本,而非計算結果。Free Spire.XLS支持獲取公式結果,代碼如下:
// 遍歷有效數(shù)據(jù)區(qū)域的所有單元格
foreach (CellRange cell in dataSheet.AllocatedRange)
{
// 判斷單元格是否包含公式
if (cell.HasFormula)
{
// 1. 讀取原始公式(如“=A2+B2”)
string formulaText = cell.Formula;
// 2. 讀取公式計算后的結果
string formulaResult = cell.FormulaValue.ToString();
// 輸出結果
Console.WriteLine($"單元格{cell.RangeAddress}:");
Console.WriteLine($" 公式:{formulaText}");
Console.WriteLine($" 結果:{formulaResult}\n");
}
}
Excel 數(shù)據(jù)處理是 C# 開發(fā)中的基礎需求,F(xiàn)ree Spire.XLS for .NET 不僅擺脫了對 Office 環(huán)境的依賴,還通過簡潔的 API 降低了開發(fā)門檻 — 無論是基礎的單元格讀取、批量數(shù)據(jù)遍歷,還是特殊的公式結果獲取,都能高效實現(xiàn)。
到此這篇關于C#高效實現(xiàn)Excel數(shù)據(jù)讀取入門教程的文章就介紹到這了,更多相關C#讀取Excel數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C#使用ODBC與OLEDB連接數(shù)據(jù)庫的方法示例
這篇文章主要介紹了C#使用ODBC與OLEDB連接數(shù)據(jù)庫的方法,結合實例形式分析了C#基于ODBC與OLEDB實現(xiàn)數(shù)據(jù)庫連接操作簡單操作技巧,需要的朋友可以參考下2017-05-05
C#數(shù)組中List, Dictionary的相互轉換問題
這篇文章主要介紹了C#數(shù)組中List, Dictionary的相互轉換問題,本文給大家介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下2016-12-12
詳解C#中的System.Timers.Timer定時器的使用和定時自動清理內(nèi)存應用
這篇文章主要介紹了詳解C#中的System.Timers.Timer定時器的使用和定時自動清理內(nèi)存應用,需要的朋友可以參考下2017-06-06

