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日

相关文章

  • asp.net源程序编译为dll文件并调用的实现过程

    ASP.NET是微软公司推出的Web应用程序开发框架,ASP.NET程序是使用C#或VB.NET等语言编写的源代码,最终编译成.dll文件,并运行在IIS服务器上。下面介绍ASP.NET源程序编译为.dll文件并调用的实现过程的攻略: 步骤一:创建ASP.NET项目 ASP.NET项目可以在Visual Studio中创建,选择Web应用程序模板,选择ASP…

    C# 2023年5月31日
    00
  • ASP.NET JSON字符串与实体类的互转换示例代码

    我根据这个主题给出一份攻略。 引言 ASP.NET 是一种用于构建 Web 应用程序的框架,而 JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,常用于前后端之间的数据传递。在 ASP.NET 中,我们有时候需要将 JSON 字符串转换为实体类,或者将实体类转换为 JSON 字符串。在这里,我们将会通过两个示例来…

    C# 2023年5月31日
    00
  • websocket与C# socket相互通信

    web端代码就是js代码,C#有两种方式:使用第三方库,如Fleck,使用C#原生socket编程实现   web端: <!doctype html> <html lang=”zh-CN”> <head> <meta charset=”UTF-8″> <title>下发网站上文件到学生机</t…

    C# 2023年4月27日
    00
  • c# 基于Titanium爬取微信公众号历史文章列表

    C# 基于Titanium爬取微信公众号历史文章列表攻略 1. 准备工作 1.1 安装Titanium Titanium是一款爬虫框架,需要使用C#编写,因此在开始之前需要确保您已经安装了Titanium。您可以在Titanium官网下载最新版的Titanium,并根据其安装说明进行安装。 1.2 获取微信公众号的cookie 我们需要使用微信公众号的coo…

    C# 2023年5月31日
    00
  • Unity3d怎么从物体向前方发射一条射线?

    Unity3D是一个游戏引擎,支持开发2D和3D游戏。在游戏开发中,常常需要使用射线来进行碰撞检测、瞄准、摄像机跟随等操作。本文将详细讲解在Unity3D中如何从物体向前方发射一条射线。 1. 获取射线起点和方向 使用射线需要明确射线的起点和方向,Unity3D提供了Transform组件的position属性来获取起点,可以使用Transform组件的fo…

    C# 2023年6月3日
    00
  • C#实现从位图到布隆过滤器的方法

    C#实现从位图到布隆过滤器的方法可以分为以下几个步骤: 1. 实现位图 位图可以用一个二进制数组来表示,数组中的每个元素表示一些特定数据是否存在。在C#中可以使用BitArray类来实现位图。下面是一个实现位图的示例: using System.Collections; public class Bitmap { private BitArray _bitA…

    C# 2023年6月7日
    00
  • C#调用C++DLL传递结构体数组的终极解决方案

    下面是详细讲解“C#调用C++DLL传递结构体数组的终极解决方案”。 背景 在C#中调用C++的DLL过程中,经常会遇到需要传递结构体数组的情况。但是在传递结构体数组时,不同的编译器和不同的语言之间存在着一些细节上的差异,导致在传递结构体数组时会出现一些问题。本文将详细介绍如何解决这些问题,实现C#调用C++DLL传递结构体数组。 准备工作 在开始之前,我们…

    C# 2023年5月15日
    00
  • .NET2.0版本中基于事件的异步编程模式(EAP)

    . 简介: 基于事件的异步编程模式(EAP)是.NET Framework 2.0 中引入的一种编程模式,是一种异步编程的方式,与.NET中的APM(异步编程模型)和TPL(任务并行库)不同,入口点不是Beginxxx和Endxxx方法或Task的异步方法,而是定义了异步方法并触发事件来通知异步操作完成。异步执行单元采用回调函数注册的方式,通过在异步操作完成…

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