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

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

Susan Sarandon
Susan Sarandon原创
2025-01-11 16:37:41903浏览

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

使用 C# 掌握 Excel 数据提取

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

例如,要访问单元格 A1:

<code class="language-csharp">Excel.Worksheet sheet = workbook.Sheets["Sheet1"] as Excel.Worksheet;
Excel.Range range = sheet.get_Range("A1", Missing.Value);</code>

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

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

迭代单元格范围:

<code class="language-csharp">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
    }
}</code>

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

基本清理

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

<code class="language-csharp">if (wkb != null)
    ExcelTools.OfficeUtil.ReleaseRCM(wkb);

if (excel != null)
    ExcelTools.OfficeUtil.ReleaseRCM(excel);</code>

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

示例性代码片段

<code class="language-csharp">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();

...</code>

主要考虑因素

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

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

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn