首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择已用按钮单击方法打开的Workbook Excel

选择已用按钮单击方法打开的Workbook Excel
EN

Stack Overflow用户
提问于 2012-10-15 16:44:42
回答 2查看 2.6K关注 0票数 3

我有一个问题,我想插入数据的按钮单击方法,但这个方法是在一个条带菜单(VSTO)中创建的。

为了更好地理解这一点,我希望对数据库进行查询,将其发送到一个人员列表中,并在excel上打印我希望从这些人身上看到的内容。例如,我只想看看名字和生日,或者名字,身份和职业。

为此,我需要选择在运行应用程序时打开的工作簿。所以我试试看:

代码语言:javascript
复制
private void button1_Click(object sender, RibbonControlEventArgs e)
        {
            Excel.Workbook wb = (Excel.Workbook)Globals.ThisWorkbook.InnerObject;
            Excel.Worksheet ws = wb.Sheets["Sheet1"];
            ws.Cells[1, 2] = "teste";
        }
  • 使用Excel = Microsoft.Office.Tools.Excel;
  • 使用ExcelTools = Microsoft.Office.Tools;
  • 使用Microsoft.Office.Interop.Excel;

但是我得到了一个错误:**"Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.Office.Tools.Excel.Workbook'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{B74CBB86-9C9F-4172-9AE7-3CE4A7BFA5EB}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE))."**

可能比我看到的更容易,但我太累了,我需要完成这个.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-19 16:11:25

男人试试这个:

代码语言:javascript
复制
using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.Office.Tools.Excel;
using Office = Microsoft.Office.Core;
using Microsoft.VisualStudio.Tools.Applications.Runtime;
Excel.Worksheet wsheet =
  (Excel.Worksheet)Globals.ThisAddIn.Application.ActiveSheet;
票数 4
EN

Stack Overflow用户

发布于 2012-10-16 11:43:17

下面的操作应该有效(删除.InnerObject)

代码语言:javascript
复制
private void button1_Click(object sender, RibbonControlEventArgs e) 
        { 
            Excel.Workbook wb = (Excel.Workbook)Globals.ThisWorkbook; 
            Excel.Worksheet ws = wb.Sheets["Sheet1"]; 
            ws.Cells[1, 2] = "teste"; 
        } 

InnerObject性质返回对底层工作簿(read )的引用。返回类型是Microsoft.Office.Interop.Excel.Workbook (而不是Microsoft.Office.Tools.Excel.Workbook,它是工作簿的.Net包装版本)。

这同样适用于纸张:

如果您访问本机Com工作簿的Sheets集合,它将返回一个Microsoft.Office.Interop.Excel.WorkSheet,访问Excel.Workbook将返回一个Excel.WorkSheet

有关vsto包装对象的更多信息,请参见:

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12900194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档