C# COM组件操作Excel

原创 2015年07月08日 22:49:13

一、使用微软COM组件读Excle

将Excle中的变量信息读入varInfoDic, 其定义如下:

Dictionary<int, List<VarInfo>> varInfoDic = new Dictionary<int, List<VarInfo>>();

VarInfo的定义如下:

    public class VarInfo

    {

        public string varType;

        public string varName;

        public int varByteOffset;

    }

这个读Excle的函数,实现如下:

private void readVarInfoXLSX()
{
	int canId = 0;
	string strCanId;
	string strVarByteOffset;
	Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
	Workbook tempWorkbook = null;
	Worksheet tempSheet = null;
	Range tempRange = null;

	try
	{
		if (varInfoDic.Count != 0)
		{
			varInfoDic.Clear();
		}

		if (canIdValidList.Count != 0)
		{
			canIdValidList.Clear();
		}

		// 打开Excel文件
		tempWorkbook = excelApp.Workbooks.Open(varInfoFile, Missing.Value, Missing.Value, Missing.Value,
			Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
			Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

		excelApp.Visible = false;  //false
		// 获取第一个sheet
		tempSheet = (Worksheet)tempWorkbook.Sheets[1];
		tempSheet.Activate();

		for (int row = varInfoValidStartRow; row <= tempSheet.UsedRange.Rows.Count; row++)
		{
			VarInfo tempVarInfo = new VarInfo();
			tempRange = (Range)tempSheet.Cells[row, 1];
			strCanId = tempRange.Text.ToString().Trim();

			if (!string.IsNullOrWhiteSpace(strCanId))
			{
				canId = Convert.ToInt32(strCanId, 16);
				tempRange = (Range)tempSheet.Cells[row, 2];
				tempVarInfo.varType = tempRange.Text.ToString().Trim();
				if (!canIdValidList.Contains(canId))
				{
					canIdValidList.Add(canId);
				}
				
				tempRange = (Range)tempSheet.Cells[row, 3];
				tempVarInfo.varName = tempRange.Text.ToString().Trim();

				tempRange = (Range)tempSheet.Cells[row, 4];
				strVarByteOffset = tempRange.Text.ToString().Trim();
				tempVarInfo.varByteOffset = Convert.ToInt32(strVarByteOffset);

				if (varInfoDic.ContainsKey(canId))
				{
					List<VarInfo> tempList;
					varInfoDic.TryGetValue(canId, out tempList);
					tempList.Add(tempVarInfo);
				}
				else
				{
					List<VarInfo> tempVarInfoList = new List<VarInfo>();
					tempVarInfoList.Add(tempVarInfo);
					varInfoDic.Add(canId, tempVarInfoList);
				}
			}
			else
			{
				//待加入容错处理
				continue;
			}
		}
	}
	catch (Exception ex)
	{
		MessageBox.Show("Read variable information error! Please do it again!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
		Console.WriteLine("[readVarInfoXLSX] Function Error!");
	}
	finally
	{
		// 释放资源
		tempSheet = null;
		tempWorkbook.Close();
		tempWorkbook = null;
		excelApp.Workbooks.Close();
		excelApp.Quit();
		excelApp = null;
	}
}

二、使用微软COM组件写Excle

C#中通过com组件操作excel不能关闭的问题

问题: object missing = System.Reflection.Missing .Value; Application app = new...

C#使用Excel的COM组件操作Excel

1.使用方法 Visual Studio 2005中默认提供了封装好的Microsoft Office 2003的.Net Excel编程模型。 大家可以看到名为“Microsoft Ex...
  • lomeo23
  • lomeo23
  • 2012年12月18日 21:01
  • 6558

COM组件读取、保存等Excel操作

  • 2017年02月24日 19:37
  • 7KB
  • 下载

C#调用COM组件后退出Excel进程

我在使用WinForm程序调用Excel的COM组件的时候,也遇到了Excel进程退出的问题。这个问题很多人已经遇到,而且解决办法也吵得很热。 现在总结一下: 第一种方法是调用相关的组件释放方法,...

C#导出数据到Excel的两种方式:基于COM组件和NPIO

基于项目需求,需要将程序中的数据导出到Excel表格中,我在网上发现有很多这方面的资料,比较常见的是基于COM组件的,即使用之后 Microsoft.Office.Interop.Excel.Appl...

C#导出数据到Excel的两种方式:基于COM组件和NPIO

基于项目需求,需要将程序中的数据导出到Excel表格中,我在网上发现有很多这方面的资料,比较常见的是基于COM组件的,即使用之后 Microsoft.Office.Interop.Excel.Appl...

C#操作Word导致 “Microsoft.Office.Interop.Word.ApplicationClass”的 COM 组件错误的解决方法

C#操作Word导致“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 组件错误的解决方法 首先,要知道在C#中我们是通过调用COM组件来操作W...
  • zrf2112
  • zrf2112
  • 2016年06月03日 21:20
  • 1926

C# 操作PDFCreator 引发 检索COM类工厂中CLSID为{}的组件时失败...

自己一个小型的Winform项目中有使用到PDFCreator虚拟打印,在初始化PDFCreator虚拟打印机模块代码中, private void initPdfPrinter() ...

.net C# COM组件,实现EXCEL自动转换格式与如何退出EXCEL Process

using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst...
  • kywds
  • kywds
  • 2012年04月30日 10:20
  • 353

MyXLS(C#操作Excel)组件

  • 2009年07月07日 15:01
  • 5.97MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C# COM组件操作Excel
举报原因:
原因补充:

(最多只允许输入30个字)