首页 > 后端开发 > C++ > 如何使用C#高效读取Excel文件中的数据?

如何使用C#高效读取Excel文件中的数据?

Susan Sarandon
发布: 2025-01-11 16:37:41
原创
928 人浏览过

How to Efficiently Read Data from Excel Files Using C#?

使用 C# 掌握 Excel 数据提取

在 C# 中有效处理 Excel 文件需要清楚地了解命名范围。 不依赖数组索引,而是利用 get_Range() 方法进行精确的单元格选择。

例如,要访问单元格 A1:

Excel.Worksheet sheet = workbook.Sheets["Sheet1"] as Excel.Worksheet;
Excel.Range range = sheet.get_Range("A1", Missing.Value);
登录后复制

range 现在代表单元格 A1。 使用以下方式访问其内容:

  • range.Text:显示单元格的格式化文本。
  • range.Value2:检索基础单元格值(未格式化)。

迭代单元格范围:

Excel.Range range = sheet.get_Range("A1:A5", Missing.Value);

if (range != null)
{
    foreach (Excel.Range r in range)
    {
        string userText = r.Text;
        object cellValue = r.Value2; //Note: object type for flexibility
    }
}
登录后复制

至关重要的是,使用 Value2 而不是 Value 以避免潜在的 C# 限制。

基本清理

通过在使用后释放 COM 对象来防止内存泄漏:

if (wkb != null)
    ExcelTools.OfficeUtil.ReleaseRCM(wkb);

if (excel != null)
    ExcelTools.OfficeUtil.ReleaseRCM(excel);
登录后复制

ReleaseRCM 是用于释放 COM 资源的自定义函数。

示例性代码片段

using ExcelTools = Ms.Office; // Assuming a custom namespace
using Excel = Microsoft.Office.Interop.Excel;

...

Excel.Workbook wkb = ExcelTools.OfficeUtil.OpenBook(excel, file);

...

Excel.Worksheet sheet = wkb.Sheets["Data"] as Excel.Worksheet;

Excel.Range range = sheet.get_Range("A1", Missing.Value);

string cellA1Text = range.Text.ToString();

...
登录后复制

主要考虑因素

  • 通过将对象可见性设置为 false.
  • 在处理过程中隐藏 Excel 应用程序
  • 探索 OleDb 作为 Excel 数据访问的可行替代方案。
  • 此示例使用 C# 的 Type.Missing 作为可选参数。

这种增强的方法可确保您的 C# 应用程序中高效可靠的 Excel 数据处理。

以上是如何使用C#高效读取Excel文件中的数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板