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日

相关文章

  • 在C#和MySQL中存取中文字符时避免乱码的方法

    对于在C#和MySQL中存取中文字符避免乱码的方法,我可以提供以下完整攻略: 1. 设置MySQL字符集 MySQL默认使用的字符集是latin1,这种字符集不支持中文,所以需要设置MySQL字符集为支持中文的utf8字符集。在连接MySQL数据库之前,需要执行以下语句设置字符集: SET NAMES ‘utf8’; // 设置字符集为utf8 这条语句可以…

    C# 2023年5月15日
    00
  • 写给想学习Javascript的朋友一点学习经验小结

    针对这个问题,我会分为以下四个部分进行回答: 网站中提供的资源和工具 如何学习Javascript 学习Javascript的思路和技巧 示例说明 网站中提供的资源和工具 首先,我自己的网站中提供了一些有关学习Javascript的资源和工具,这些资源和工具可以帮助你加深对Javascript的理解。其中包括: 文章和教程:网站中有一些文章和教程,可以帮助你…

    C# 2023年6月6日
    00
  • Bin 和 App_Code 文件夹介绍

    首先,在ASP.NET的网站解决方案中,Bin和App_Code文件夹都是非常重要的文件夹,它们在网站的应用程序编译和代码管理中起到了非常重要的作用。下面我们来看一下这两个文件夹的介绍及其用途。 Bin文件夹介绍: Bin文件夹是ASP.NET网站应用程序中的一个特殊目录,其中存放了所有编译后的程序集,这些程序集会被加载到ASP.NET应用程序的AppDom…

    C# 2023年6月7日
    00
  • C#判断一个字符串是否包含另一个字符串的方法

    本文将为大家介绍C#中判断一个字符串是否包含另一个字符串的方法。 方法一:使用Contains()方法 使用C#的字符串类型中的Contains()方法,可以判断一个字符串是否包含其他某个字符串。该方法返回一个布尔值,如果被查询字符串包含在主字符串中,返回true;否则返回false。 string str1 = "hello world&quot…

    C# 2023年5月15日
    00
  • C#泛型集合类型实现添加和遍历

    下面是一份详细的攻略,分别讲解了C#泛型集合类型的添加和遍历。 添加元素到集合 List泛型列表 List 是 C# 中常见的泛型类型之一,其中的元素是可以重复的,可以方便的进行元素添加和删除操作。 //创建一个string类型的List泛型列表 List<string> list = new List<string>(); //使用…

    C# 2023年6月6日
    00
  • C# DataTable分页处理实例代码

    下面是“C# DataTable分页处理实例代码”的完整攻略: 什么是DataTable分页处理? DataTable是.NET Framework中的一个非常重要的数据对象,它可以用来存储和操作数据。很多时候,我们需要在规模较大的数据集中只提取部分数据进行显示,这时就需要进行分页处理。 如何进行DataTable分页处理? 在C#中,可以通过以下步骤来进行…

    C# 2023年5月31日
    00
  • C# File.AppendText(string path):在指定文件末尾添加文本内容,并返回StreamWriter对象

    File.AppendText(string path) 是C#中的一个方法,用于向指定文件的末尾追加文本内容,如果文件不存在则会创建。下面是该方法的完整攻略: 方法定义: public static StreamWriter AppendText(string path) 方法参数: path:字符串,表示要追加文本的文件名和路径。 方法返回值: Stre…

    C# 2023年4月19日
    00
  • ASP.NET Core 6最小API中使用日志和DI示例详解

    ASP.NET Core 6最小API中使用日志和DI示例详解 在ASP.NET Core 6中,最小API是一种轻量级的方式来构建Web API。在本攻略中,我们将介绍如何在ASP.NET Core 6最小API中使用日志和DI。以下是ASP.NET Core 6最小API中使用日志和DI示例详解的完整攻略: 步骤一:创建最小API 首先,需要创建一个最小…

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