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日

相关文章

  • 向一个数组中插入一个1~100的随机数

    关于向一个数组中插入一个1~100的随机数的完整攻略,具体步骤如下: 1. 声明一个数组 首先,需要在代码中声明一个数组,以便随后向其中插入随机数。可以使用如下语句: int[] arr = new int[n]; 其中,n代表数组的长度。这里使用了Java语言,如果是其他语言,语法可能略有不同,但是思路还是一致的。 2. 生成随机数 接着,需要生成一个1~…

    C# 2023年6月8日
    00
  • 如何在C#9 中使用static匿名函数

    在C# 9中,我们可以使用静态匿名函数来编写更优雅、简介的代码。 静态匿名函数的定义 在C#9中,我们可以使用静态匿名函数定义一个函数,格式如下: delegate [return-type] identifier([parameter-list]); 其中,delegate关键字表示这是一个函数声明,return-type 表示返回值类型,identifi…

    C# 2023年6月6日
    00
  • C#中委托、事件和回调的使用及说明

    C#中委托、事件和回调的使用及说明 什么是委托? 委托(Delegate)是C#中的一个类型,它可以指向一个或多个方法,通过委托可以实现方法的回调和事件的发布/订阅,使得代码更加灵活和扩展性更强。 委托的声明和使用 delegate int MyDelegate(int x, int y); // 声明一个委托类型 public class Calculat…

    C# 2023年5月31日
    00
  • C#反射应用实例

    下面是关于“C#反射应用实例”的完整攻略。 什么是C#反射? C#反射是让程序在运行时动态获取类型信息的功能。通过C#反射,可以在不知道类型名称的情况下获取相应的类型,并对类型的成员进行操作。C#反射提供了一种动态获取类型信息的方式,使得程序具有更高的灵活性和可扩展性。 C#反射的基本用法 获取类型对象 使用反射获取类型信息的第一步是获取类型对象。可以通过T…

    C# 2023年6月7日
    00
  • ASP.NET Core 6框架揭秘实例演示之如何承载你的后台服务

    ASP.NET Core 6是一款高效、开源的Web应用程序框架,支持多平台和云端部署,且拥有可扩展的体系结构,非常适合构建现代化的Web应用程序。本文将基于该框架,详细讲解如何承载你的后台服务,针对不同的应用场景,提供多条实例演示。 一、使用ASP.NET Core 6承载后台任务 在Web应用程序中,有很多后台任务需要执行。例如,订阅事件、启用定时任务、…

    C# 2023年6月3日
    00
  • 大家应该掌握的多线程编程

    作为网站的作者,我很高兴能够为大家详细讲解一下“大家应该掌握的多线程编程”的完整攻略。 一、什么是多线程编程 多线程编程是一种并发编程方式,它允许程序同时执行多个任务,从而提高程序的性能和响应速度。在多线程编程中,同一时间可以运行多个线程,不同的线程可以使用共享内存或消息传递的方式进行通信。 二、为什么要学习多线程编程 多线程编程能够提高程序的响应速度和性能…

    C# 2023年5月15日
    00
  • C# 拷贝数组的几种方法(总结)

    当我们在使用 C# 编程语言时,时常需要对数组进行复制和拷贝。为了更好的理解 C# 拷贝数组的几种方法,本文对常用的拷贝数组方法进行了总结,并提供了示例代码以加深理解。 一、使用Array.Copy()方法拷贝数组 方法介绍 Array.Copy() 方法可以将一个数组中的元素复制到另一个数组中。该方法需要传入源数组、目标数组、以及要复制的元素数量。 pub…

    C# 2023年6月7日
    00
  • C#使用protobuf-net进行序列化的详细操作

    下面是使用protobuf-net进行C#序列化的详细攻略: 什么是protobuf-net protobuf-net是一种.NET平台下的高效且跨语言的序列化框架。与其他序列化框架(如XML序列化)相比,它具有更高的序列化和反序列化效率,能够有效地将对象序列化为二进制形式,以便它们可以被存储或传输。它是Google Protobuf的一个非官方的.NET实…

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