控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

如何用C#制作Excel AddIn的方法介绍(2)

作者:佚名 出处:CTOCIO 2010年03月25日 阅读:

这里有一个技巧。如果menuTop或menuCreateMail 在AddMenu方法中定义,会导致Excel打开后,多次点击按钮事件,它只执行一次。除非你重新启动EXCEL。

  点击菜单“Import Data”的事件代码如下


 void buttonMenu_Click(Microsoft.Office.Core.CommandBarButton Ctrl, ref bool CancelDefault)
  {
  //分析CSV文件,设置指定报表列的值
  }

  代码比较长。首先是弹出对话框,选择要导入的包含测量数据的文件,分析并导入值。

  导入值的代码涉及到操作EXCEL,代码如下


 Excel.Worksheet sheet = (Excel.Worksheet)Application.ActiveWorkbook.ActiveSheet;
  int rowIndex = 10; int maxIndex = 300;
  for (rowIndex = 10; rowIndex < maxIndex;rowIndex++ )
  {
  Excel.Range source = sheet.get_Range("A" + rowIndex, "A" + rowIndex);
  Excel.Range target = sheet.get_Range("F" + rowIndex, "F" + rowIndex);
  if (String.IsNullOrEmpty(source.Value2.ToString()))
  continue;
  else
  {
  string hashkey = source.Value2.ToString();
  if (table.Contains(hashkey))
  target.Value2 = table[hashkey].ToString();
  }
  }

  table的类型是Hashtable,它以零件名作键名,零件的测量数据为值。

  读取文件的代码也有点技巧。我的机器是XP SP2英文版,Excel是2003的英文标准版。如果以COM Interop API读取数据文件,把数据文件当作EXCEL文件来读取,会经常出现乱码,如果是以文本文件的方式读取数据文件,则没有任何问题。这个问题我一直找不到原因。

  下面说一下怎样部署这个插件 以下几个步骤是必须的,而且要以管理员身份才能执行以下步骤

  1 在目标机器上,安装 .net Framework 2.0 http://www.microsoft.com/downloads/details.ASPx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=en

  2 安装Office 2007 PIAs

  http://www.microsoft.com/downloads/details.aspx?familyid=59DAEBAA-BED4-4282-A28C-B864D8BFA513&displaylang=en

  3 安装 VSTO Runtime 2.0:

  http://www.microsoft.com/downloads/details.aspx?FamilyId=4468D8CB-B43E-4B09-82F6-8BA3F7B5E935&displaylang=en#filelist

  4 确保EXCEL 2003已经打上了SP2补丁,否则请安装SP2补丁

  

  5  编译安装项目,并执行,完成插件的安装。

  6  到安装插件的目录,执行命令行工具,设置程序集的权限(程序集名字为QCExcelAddIn)


  cASPol -machine –addfulltrust  QCExcelAddIn.dll

  经过这几步,打开EXCEL,应该可以看到插件的菜单。如果仍然看不到菜单,看是不是插件被EXCEL禁用. 在DisalbeItems中把插件激活。

  

  至此,这个问题圆满解决。经过一段时间的使用,测量员要求修改一下测量数据的文件格式,如下图

  

  解析这种格式的代码比较简单,直接用正则式分解字符串即可,而上面的那个版本的格式还需要判断是奇数行还是偶数行,奇数行取零件名称,偶数行读取测量数据。

  关于这个插件的注册信息,在注册表中有相应的键值对说明

  插件所在的注册表键的路径是

  

  值如下图所示

  

  也许这个办法也不是最优化的办法,欢迎提供您的思路供大家参考学习。

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统