下面是C#基于COM方式读取Excel表格的方法的完整攻略。
一、前置条件准备
在使用C#基于COM方式读取Excel表格之前,需要先安装Microsoft Office软件(建议安装MS Office 2010及以上版本),并且安装后需要以管理员身份运行Excel至少一次,以防Excel第一次运行时的初始化过程出错。
二、在C#中使用Excel COM组件
- 导入命名空间
在使用COM组件前,需要导入相应的命名空间,在这里我们需要导入Microsoft.Office.Interop.Excel
命名空间。
using Microsoft.Office.Interop.Excel;
- 创建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软件。");
}
- 打开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工作簿之后,我们需要获取需要读取数据的工作表,并读取其中的单元格数据。
- 获取工作表
要获取Excel工作表,首先需要获取工作簿。获取工作簿之后,我们可以通过其Worksheets属性获取该工作簿中的工作表列表。获取工作表的方式如下:
Worksheet worksheet = workbook.Worksheets[1];
上面的代码获取的是该工作簿中的第一个工作表,如果需要获取其它工作表,只需更改Worksheets属性中的参数即可。
- 读取单元格数据
在获取工作表之后,我们可以通过获取单元格的方式来获取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技术站