C#基于COM方式读取Excel表格的方法

下面是C#基于COM方式读取Excel表格的方法的完整攻略。

一、前置条件准备

在使用C#基于COM方式读取Excel表格之前,需要先安装Microsoft Office软件(建议安装MS Office 2010及以上版本),并且安装后需要以管理员身份运行Excel至少一次,以防Excel第一次运行时的初始化过程出错。

二、在C#中使用Excel COM组件

  1. 导入命名空间

在使用COM组件前,需要导入相应的命名空间,在这里我们需要导入Microsoft.Office.Interop.Excel命名空间。

using Microsoft.Office.Interop.Excel;
  1. 创建Excel应用对象

在C#中创建Excel实例的方式与其它COM组件类似,可以通过使用Type.GetTypeFromProgID方法和Activator.CreateInstance方法来创建Excel应用对象。

Application excelApplication = null;  
try  
{  
    excelApplication = (Application)Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application"));  
}  
catch  
{  
    throw new Exception("请安装Microsoft Office软件。");  
}  
  1. 打开Excel文件并获取工作簿

要读取Excel表格数据,我们还需要打开Excel文件并获取需要的工作簿。这里提供两个读取Excel表格的示例代码。

(1)打开指定Excel文件并获取工作簿

Workbook workbook = null;
try  
{  
    workbook = excelApplication.Workbooks.Open("D:\\test.xlsx");  
}  
catch  
{  
    workbook = null;  
}  

(2)获取当前正在运行的Excel工作簿

Workbook workbook = excelApplication.ActiveWorkbook;

三、读取Excel表格数据

在获取Excel工作簿之后,我们需要获取需要读取数据的工作表,并读取其中的单元格数据。

  1. 获取工作表

要获取Excel工作表,首先需要获取工作簿。获取工作簿之后,我们可以通过其Worksheets属性获取该工作簿中的工作表列表。获取工作表的方式如下:

Worksheet worksheet = workbook.Worksheets[1];

上面的代码获取的是该工作簿中的第一个工作表,如果需要获取其它工作表,只需更改Worksheets属性中的参数即可。

  1. 读取单元格数据

在获取工作表之后,我们可以通过获取单元格的方式来获取Excel表格中的数据。获取单元格数据的示例代码如下:

Range range = worksheet.UsedRange;
object[,] data = (object[,])range.Value2;
int rowCount = data.GetLength(0);
int columnCount = data.GetLength(1);
for (int i = 1; i <= rowCount; i++)  
{  
    for (int j = 1; j <= columnCount; j++)  
    {  
        Console.Write(data[i, j] + "\t");  
    }  
    Console.WriteLine();  
} 

上面的代码将Excel表格中的数据全部读取出来,打印到控制台上。

四、完整代码示例

下面是一个完整的读取Excel表格数据的示例代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using Microsoft.Office.Interop.Excel;

namespace ReadExcelByCom
{
    class Program
    {
        static void Main(string[] args)
        {
            Application excelApplication = null;
            try
            {
                excelApplication = (Application)Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application"));
            }
            catch
            {
                throw new Exception("请安装Microsoft Office软件。");
            }

            Workbook workbook = null;
            try
            {
                workbook = excelApplication.Workbooks.Open(@"D:\test.xlsx");
            }
            catch
            {
                workbook = null;
            }

            if (workbook != null)
            {
                Worksheet worksheet = workbook.Worksheets[1];
                Range range = worksheet.UsedRange;
                object[,] data = (object[,])range.Value2;
                int rowCount = data.GetLength(0);
                int columnCount = data.GetLength(1);
                for (int i = 1; i <= rowCount; i++)
                {
                    for (int j = 1; j <= columnCount; j++)
                    {
                        Console.Write(data[i, j] + "\t");
                    }
                    Console.WriteLine();
                }
            }

            if (workbook != null)
            {
                workbook.Close(false, Type.Missing, Type.Missing);
                Marshal.ReleaseComObject(workbook);
                workbook = null;
            }

            excelApplication.Quit();
            Marshal.ReleaseComObject(excelApplication);
            excelApplication = null;

            Console.ReadKey();
        }
    }
}

运行上面的代码,即可将Excel表格中的数据读取出来并打印到控制台上。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#基于COM方式读取Excel表格的方法 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • .NET 扩展实现代码

    .NET 扩展实现代码攻略 .NET 扩展是指通过编写.NET 扩展库的方式,为.NET 平台添加新的功能或增强现有的功能。在本攻略中,将详细讲解如何编写.NET 扩展实现代码。 步骤1:创建.NET 扩展项目 首先,需要创建一个.NET 扩展项目。可以使用Visual Studio 创建,也可以使用 .NET Core CLI 在命令行中创建。以下是在命令…

    C# 2023年5月31日
    00
  • C#数组反转与排序实例分析

    关于“C#数组反转与排序实例分析”,我们可以按照以下步骤进行分析。 1. 数组反转 数组反转是指将数组元素按相反的顺序重新排列。在 C# 中,对于数组一维对象而言,可以使用 Array 类的 Reverse() 方法实现数组元素的反转操作。下面是反转数组元素的示例代码: int[] array = {1, 2, 3, 4, 5}; // 定义一个整型数组 A…

    C# 2023年6月1日
    00
  • unity实现鼠标经过时ui及物体的变色操作

    实现鼠标经过时UI及物体的变色操作是Unity游戏开发中常见的操作之一,在以下内容中,我将详细讲解如何实现这个功能。 步骤一:添加事件触发器组件 首先,在需要变色的UI或物体上添加Event Trigger组件。在该组件下选择PointerEnter和PointerExit事件,并在事件右侧选择Add New。这样就可以添加新的触发事件。 在PointerE…

    C# 2023年6月3日
    00
  • asp.net Split分割字符串的方法

    当使用ASP.NET进行开发时,分割字符串是一项非常常见的任务。ASP.NET中的Split()方法是一种简单有效的将字符串分成单独纯文本段的方法。 Split()方法的基本用法 Split()方法可以用于按照指定的分隔符将一个字符串分割成多个子串。其基本用法如下所示: string str = "apple, banana, cherry, da…

    C# 2023年6月3日
    00
  • 详解c# 接口IDisposable的用法

    详解C# 接口IDisposable的用法 什么是IDisposable接口 IDisposable接口是C#语言中的一种接口,其作用是允许程序员手动释放资源,例如文件句柄、数据库连接、网络连接等非托管资源。在.NET Framework的类库中,许多对象都实现了IDisposable接口,例如FileStream、SqlConnection等。程序员可以通…

    C# 2023年5月31日
    00
  • Winform窗体如何改变语言类型

    Winform 窗体的语言设置主要涉及以下两方面: 改变窗体语言的方式 处理措施 下面我们将会讲解如何进行以上两个方面设置。 改变窗体语言的方式 Winforms 默认依赖系统语言,在资源文件中保存语言翻译。有三种常见方式实现表单翻译: 静态文本资源文件 动态文本资源文件 使用第三方库 静态文本资源文件 使用静态文本资源文件时,我们在应用程序中会有一个包含预…

    C# 2023年6月6日
    00
  • 在.NET中使用Newtonsoft.Json转换,读取,写入的方法介绍

    为了让大家更好地了解在.NET中如何使用Newtonsoft.Json转换、读取和写入JSON数据,下面为大家详细介绍这方面的攻略: 简介 Newtonsoft.Json是.NET框架下一个非常流行的用于JSON序列化和反序列化的库。它可以让我们方便地将.NET对象序列化成JSON格式的字符串,以及将JSON格式的字符串反序列化成.NET对象。在.NET开发…

    C# 2023年5月31日
    00
  • C#实现redis读写的方法

    下面是详细讲解 “C#实现redis读写的方法” 的完整攻略。 1. 确认redis环境 在进行redis读写之前,需要先确认redis环境已经搭建好,可以通过redis-cli工具进行连接并验证,确保redis的启动地址、端口号、用户名和密码等信息都正确无误。 2. 安装StackExchange.Redis包 C#中实现redis读写可以使用StackE…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部