首页 > 后端开发 > C++ > 如何使用C#高效读取和操作Excel数据?

如何使用C#高效读取和操作Excel数据?

Mary-Kate Olsen
发布: 2025-01-11 16:42:44
原创
344 人浏览过

How to Efficiently Read and Manipulate Excel Data Using C#?

C# 和 Excel 数据:实用指南

本文详细介绍了使用 C# 读取和操作 Excel 数据的有效方法。 提供的示例说明了打开 Excel 文件、复制其内容以及搜索电子邮件地址。 然而,直接访问和处理单元格值需要了解 Excel 独特的数据结构。

Excel 的数据结构:命名范围

与典型数组不同,Excel 使用命名范围来存储数据。 访问特定单元格需要引用其范围名称(例如,左上角单元格为“A1”)。

利用Range对象

C# Excel.Range 对象表示 Excel 工作表中的一个单元格或一组单元格。 get_Range 对象的 Excel.Worksheet 方法检索特定的 Range 对象。例如:

<code class="language-csharp">Excel.Range range = worksheet.get_Range("A1", Missing.Value);</code>
登录后复制

访问单元格值:TextValue2

Text 属性返回用户可见的文本,而 Value2 提供基础值(不带格式或舍入):

<code class="language-csharp">string userVisibleText = range.Text;
string rawValue = range.Value2;</code>
登录后复制

迭代单元格范围

foreach 循环有效地迭代一系列单元格:

<code class="language-csharp">foreach (Excel.Range cell in range1)
{
    string text = cell.Text;
    string value = cell.Value2;
}</code>
登录后复制

资源管理:适当的清理

为了高效的资源管理,请按照与创建相反的顺序释放 Excel 对象。 由于 Excel.ApplicationExcel.Workbook 没有实现 IDisposable,因此使用自定义发布函数(如示例中的 ReleaseRCM):

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

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

完整代码示例

此 C# 代码演示了访问和显示单元格 A1 的值:

<code class="language-csharp">using System;
using ExcelTools = Ms.Office;
using Excel = Microsoft.Office.Interop.Excel;

namespace ExcelDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            string filePath = @"C:\Users\Chris\Desktop\TestSheet.xls";
            Console.WriteLine(filePath);

            Excel.Application excelApp = null;
            Excel.Workbook workbook = null;

            try
            {
                excelApp = new Excel.Application();
                workbook = ExcelTools.OfficeUtil.OpenBook(excelApp, filePath, false, false, true);

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

                if (sheet != null)
                {
                    Excel.Range cell = sheet.get_Range("A1", Missing.Value);
                    string a1Value = cell != null ? cell.Text.ToString() : "";
                    Console.WriteLine("A1 value: {0}", a1Value);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (workbook != null)
                    ExcelTools.OfficeUtil.ReleaseRCM(workbook);

                if (excelApp != null)
                    ExcelTools.OfficeUtil.ReleaseRCM(excelApp);
            }
        }
    }
}</code>
登录后复制

结论

在 C# 中成功处理 Excel 数据取决于理解 Excel 基于范围的结构。使用 Excel.Range 对象及其属性,以及仔细的资源管理,可以实现高效、可靠的数据访问和操作。

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

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