Excel插件外部程序控制

对Excel插件的开发,目的是在工具栏中添加一个外部程序,点击这个外部程序,可以将当前的Sheet数据获取到并保存到另外一个sheet里面;主要注意两方面:

一、Excel插件外部程序建立向导,具体步骤是:

1.在 Microsoft Visual Studio .NET 的文件菜单上,单击新建,然后单击项目。
2.在新建项目对话框中,展开项目类型下的其他项目,选择扩展性项目,然后选择共享的外接程序模板。
3.键入 MyCOMAddin 作为该外接程序的名称,然后单击确定。
4.“扩展性向导”出现后,请按照下列步骤操作:
a. 在第 1 页,选择使用 Visual C# 创建外接程序,然后单击下一步。
b. 在第 2 页,选择下面的宿主应用程序,然后单击下一步:
Microsoft Word
Microsoft PowerPoint
Microsoft Outlook
Microsoft Excel
Microsoft Access
c. 在第 3 页上,输入该外接程序的名称和描述,然后单击下一步。

 

注意:该外接程序的名称和描述出现在 Office 应用程序的 COM 加载项对话框中。

 

d. 在第 4 页,选择所有可用的选项,然后单击下一步。
e. 单击完成。
5.

 

在项目菜单上,单击添加引用。单击组件列表中的 System.Windows.Forms.DLL,单击选择,然后单击确定。

引用要操作office对象,比如要操作excel,引用了Microsoft.Office.Interop.Excel,可以在微软的站点查找oxppia.exe文件下载,具体地址:http://download.microsoft.com/download/c/4/8/c4813cc0-a4d4-4bb4-b486-9cbd56f38235/oxppia.exe

Excel插件开发指导说明可以参考微软的网址:

http://support.microsoft.com/?kbid=302901

二、具体C#对Excel的操作:

1、如何获取到当前Excel、workbook、worksheet等:

                object o = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");

                Excel._Application app = o as Excel._Application;                Excel.Workbook workBook = app.ActiveWorkbook;//得到当前活动的excel文档

                Excel._Workbook wr = app.ActiveWorkbook;

               

                if (workBook == null)

                {

                    MessageBox.Show("No workbook is currently defined");

                }

                Excel.Worksheet xlsSheet;

                xlsSheet = (Excel.Worksheet)workBook.ActiveSheet;//得到当前Sheet

                m_iJ = xlsSheet.UsedRange.Rows.Count;//得到当前Sheet行数

2、各个属性值:

newWorksheet = (Excel.Worksheet)workBook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);//新增一个Sheet

newWorksheet.Name = "导入MQC";//设置Sheet的名称

newWorksheet.get_Range("A1", Missing.Value).Value2 = "Path";//设置某个单元格的值

newWorksheet.Cells.Clear();//清除单元格里面的值

newWorksheet.Cells.Font.Size = "10";//设置单元格字体大小

 

问题1 Visual Studio 2005开发的Office插件无法在Office中运行

这个问题可能是由于没有安装KB908002中提到的prerequisite造成的,可以去下面的地址下载该文档中提到的补丁:http://support.microsoft.com/kb/908002

安装完成后,我们可以在Add-in的安装项目的prerequisites中找到一个新的组件。

问题2 如何制作兼容多个版本Office的Office Addin

通常情况下,我们编写的Add-in都是直接用向导生成的,且使用的是早期绑定技术(early binding)。但在许多需求中,我们需要制作一个能够兼容多个Office版本的Add-in,这时我们就不能使用早期绑定了,而应该使用后期绑定(late binding)。关于早期绑定和后期绑定的详细信息,请见http://word.mvps.org/FAQs/InterDev/EarlyvsLateBinding.htm

问题3 通常Addin设置保存在注册表的什么位置

以Office 2003 Word Add-in为例,通常会保存在HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Office/Word/Addins中。

假设我们有一个名字为MyAddin1的Addin,那么它就会保存在HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Office/Word/Addins/MyAddin1.Connect中。

对于Excel Add-in来说,也是类似的,通常保存在HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Office/Excel/Addins中,依此类推。

在每个Add-in的设置属性中有一个重要的标志LoadBehavior,这个属性是保存在XXXX.Connect中的,类型为DWORD,这个值直接决定了Addin的启动模式,默认值为3表示Office应用程序一启动就运行,这个设置与我们在Addin向导中选择的"I would like my Add-in to load when the host application loads"是对应的。

问题4 当确定你的Add-in应该可以正确加载,但在启动时没有加载,这是怎么回事

如果一个Add-in因为某些原因在启动时加载失败,Office应用程序会自动把LoadBehavior改成8,这表示仅在需要加载时才加载该Add-in,而不是在Office启动时。所以这时可以到与该Add-in对应的注册表项中检查一下LoadBehavior值是否正确,如果为8,一定把它改成3。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值