C#高效实现Excel数据读取入门教程
作者:咕白m625
在 C# 开发中,Excel 数据处理是高频场景—无论是用户数据导入、业务报表生成,还是简单的数据分析,Excel 都不可或缺。但传统依赖 Microsoft.Office.Interop.Excel
的方案,总会遇到性能差、需装Office环境、部署麻烦等问题。
而免费版 Free Spire.XLS恰好能解决这些痛点:无需安装任何Office组件,完全免费且API简洁,足以满足小型项目的Excel读取需求。下面就详细介绍如何用它实现Excel数据读取。
一、环境准备:安装 Free Spire.XLS
1. NuGet安装
有两种方式任选:
- 右键点击项目 → 「管理NuGet程序包」→ 切换到「浏览」,搜索“FreeSpire.XLS”,找到后点击「安装」。
- 打开「NuGet包管理器控制台」,输入以下命令并回车:
install-package FreeSpire.XLS
2. 验证安装
安装完成后,展开项目的「引用」文件夹,若能看到 FreeSpire.XLS
程序集,说明免费版已成功集成。
注意:免费版有数据量限制,适合小型数据处理场景。
二、3分钟快速上手:基础单元格读取
1. 引入命名空间
在代码文件顶部添加 Spire.XLS 命名空间,确保能调用核心类:
using Spire.Xls;
2. 编写基础读取代码
支持读取 XLS 和 XLSX 文件,提供“列名定位”和“行号列号定位”两种方式,代码如下:
// 1. 初始化工作簿,加载Excel文件(替换为你的文件路径) Workbook workbook = new Workbook(); workbook.LoadFromFile("测试数据.xlsx"); // 2. 获取第一个工作表(索引从0开始) Worksheet targetSheet = workbook.Worksheets[0]; // 3. 读取指定单元格数据 Console.WriteLine("通过列名读取(A1单元格):" + targetSheet.Range["A1"].Value); Console.WriteLine("通过行号列号读取(第2行第1列):" + targetSheet.Range[2, 1].Value);
3.关键提醒
用「行号+列号」定位时,索引从1开始(而非 C# 常规的0索引),比如“第3行第2列”需写为Range[3, 2]
,若误写为Range[3, 1]
会定位到错误单元格。
三、批量读取:遍历整个工作表数据
若需读取Excel中所有有效数据(如批量导入到数据库),可通过“有效数据区域”遍历,避免读取空单元格。完整代码如下:
using Spire.Xls; namespace ExcelRead { class Program { static void Main(string[] args) { try { // 加载Excel文件 Workbook workbook = new Workbook(); workbook.LoadFromFile("产品数据.xlsx"); // 获取第一个工作表 Worksheet dataSheet = workbook.Worksheets[0]; // 获取“有效数据区域”(仅包含有数据的单元格,减少资源占用) CellRange validRange = dataSheet.AllocatedRange; // 外层循环遍历行 for (int rowIdx = 0; rowIdx < validRange.Rows.Length; rowIdx++) { // 内层循环遍历当前行的列 for (int colIdx = 0; colIdx < validRange.Rows[rowIdx].ColumnCount; colIdx++) { // 单元格索引从1开始,需对循环变量+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支持获取公式结果,代码如下:
// 遍历有效数据区域的所有单元格 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 数据处理是 C# 开发中的基础需求,Free Spire.XLS for .NET 不仅摆脱了对 Office 环境的依赖,还通过简洁的 API 降低了开发门槛 — 无论是基础的单元格读取、批量数据遍历,还是特殊的公式结果获取,都能高效实现。
到此这篇关于C#高效实现Excel数据读取入门教程的文章就介绍到这了,更多相关C#读取Excel数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!