Tag: office addins

设置范围值只设置第一个值

要设置一系列的Excel值,我使用下面的代码: int[] values = new int[] {1, 2, 3}; String rangeStart = "A1"; String rangeEnd = "A3"; Microsoft.Office.Interop.Excel.Workbook objBook; Microsoft.Office.Interop.Excel.Sheets objSheets; Microsoft.Office.Interop.Excel._Worksheet workSheet; objBook = (Microsoft.Office.Interop.Excel.Workbook)Globals.ThisAddIn.Application.ActiveWorkbook; objSheets = objBook.Worksheets; workSheet = (Microsoft.Office.Interop.Excel.Worksheet)objBook.ActiveSheet; workSheet.Range[rangeStart, rangeEnd].Value = values; 但单元格只包含数组的第一个值。 任何想法如何将每个数组值写入字段?

Excel对象是未定义的

我正在尝试开发Excel的Office加载项(n00b)。 在使用Office.context时,我已经设法做了一些事情(创build表和input等等)。 但是现在我想进入不同的单元格,所有的例子似乎都运行一个名为Excel的对象运行。 ( https://github.com/OfficeDev/office-js-docs/blob/master/excel/excel-add-ins-programming-overview.md ) 但是,当试图使用Excel是未定义的。 我正在运行Excel 2013.是否需要使用2016?

捕获MS Office autoshape单击事件

我想这个问题的答案可能是不可能的,但是我希望得到这方面专家的证实(其中我可悲的不是…) 我在Excel中创build了一组macros,这些macros通过将代码生成的macros分配给自定形来工作,以便macros在用户点击形状时执行。 我已经得到了一些很好的反馈,关于我所做的事情的有用性,现在我正在考虑使用VS做一个插件。 我走了一段路,但是我发现自己陷入了困境,因为我无法捕捉到一个点击,或者在Excel中自动成形的任何其他事件…这意味着我必须生成所有代码作为文本在我的加载项中,将其作为模块添加到工作表中,将macros分配给自动形状,并确保特定于自定形的对象类位于工作表类模块中…基本上,一个加载项。 我的问题是:是否有任何方法来捕获在Excel自动成形的点击事件? 我还没有尝试任何其他的Office应用程序,但我非常有兴趣将这一点进一步转化为Powerpoint。 是否有可能在Powerpoint中捕获点击事件? 我应该补充一点,我一直使用我在网上find的拼凑在一起的模板来制作VS中的加载项,不幸的是这个模板很慢。 而且我一直在瞄准Office 2003 …我无法尝试使用新版本的Office,但是可能有可能在新版本的Office中捕获这些事件? 任何见解或评论将是最受欢迎的。

在哪里存储有关Excel的元数据

我想就如何在Excel中存储一些附加信息寻求专家意见。 可以说这些额外的细节涉及一些内部信息,可能需要在以后阶段检查Excel工作簿中数据的完整性。 我研究并发现可以有多种方式来存储这些信息。 但我很困惑,select一个。 首先,我可以创build一个非常隐藏的工作表并将数据存储在其中。 但这种方法可能会受到挑战,因为任何外部程序都可以取消隐藏此表。 因此,不能是一个好的select。 将数据存储在自定义文档属性中,但是可以使用办公室button下的Excel UI检索相同的数据。 caching的数据。 caching的数据看起来相当令人信服,但不知道如果这是我应该去的select。 有人可以提供他们的build议吗? PS:有些人在这个论坛上认为这个问题是基于意见的。 并可能是主观的。 这就是为什么这个问题一直被很多人搁置。 我想知道为什么?? 谢谢。

Excel Addin和覆盖保存键盘快捷键

目前我已经inheritance了一个Word / Excel插件项目,做一个自定义的保存过程。 该项目在VS2010和Excel / Word 2007中 在addin这个词中,下面的xml被传回GetCustomUI调用,定义我们的自定义function <commands> <command idMso="FileOpen" onAction="WordAddinOpen" /> <command idMso="FileSave" onAction="WordAddinSave" /> <command idMso="FileSaveAs" onAction="WordAddinSaveAs" /> </commands> 当我在WordAddinSave函数中放置一个断点时,单击保存图标或按下Control-S,代码停在我的断点处。 如果我在打开的function中放置一个断点并按下Control-O,也会发生同样的情况 在Excel插件中,我有类似的xml被传回 <commands> <command idMso="FileOpen" onAction="ExcelAddinOpen" /> <command idMso="FileSave" onAction="ExcelAddinSave" /> <command idMso="FileSaveAs" onAction="ExcelAddinSaveAs" /> </commands> 但是,如果我在ExcelAddinSave函数中放置了一个断点,则代码只会停止,如果我单击保存图标,而不是键盘快捷方式。 如果我按下Control-S或Control-O,将会发生保存/打开文件的默认Excel行为,而不是我的自定义function。 ExcelAddinSave / ExcelAddinOpen在inheritanceBaseRibbon并实现Office.IRibbonExtensibility的类中定义,如下所示: [ComVisible(true)] public class CExcelRibbon : BaseRibbon, Office.IRibbonExtensibility { public CExcelRibbon() { […]

如何从Excel中获取范围(打印区域)?

我做了一个Excel添加,它必须将打印区域导出为图像。 它工作正常,如果我从程序手动设置打印区域(“Excel.Range范围= sheet.Range [”A1“,”E5“]”),但我需要在Excel中设置打印区域,并导出该区域作为图像。 有没有人有一个想法如何获得我在Excel中设置的打印区域? public static void Save(RibbonControlEventArgs e) { Excel.Window window = e.Control.Context; Excel.Worksheet sheet = ((Excel.Worksheet)window.Application.ActiveSheet); Excel.Range range = sheet.Range["A1", "E5"]; range.CopyPicture(Excel.XlPictureAppearance.xlPrinter, Excel.XlCopyPictureFormat.xlPicture); range.Copy(Type.Missing); string fileName = @"U:\test.jpg"; if (Clipboard.GetDataObject() != null) { IDataObject data = Clipboard.GetDataObject(); Image image = (Image)data.GetData(DataFormats.Bitmap, true); image.Save(fileName, ImageFormat.Jpeg); } MessageBox.Show("Save successful!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); }

基于C#的excel函数在Office.js JavaScript API可能吗?

我目前正在开发一个使用Office JavaScript API的工具。 但是,我想提供一个自己的Excel函数(类似于=SUM(A1:A5) ),它基于C#中的代码。 有没有办法避免从用户的angular度出货两个插件? 我可以将两种技术结合到一个插件吗?

Office JS setDataAsync函数内存泄漏

当在Excel 2016的Office js的共享API中使用asynchronous函数时,会导致内存泄漏,特别是调用binding.setDataAsnyc ,它永远不会释放写入的数据( 泄漏是在运行Excel中插件的Internet Explorer进程中一个32位版本) )。 例如: //1 Miliion row by 10 columns data parsed from a csv usually in chunks var data = []; var i,j; for (i=0; i<1000000; i++) { row = []; for(j=0; j<10; j++) { row.push("data" + i + "" + j); } data.push(row); } var limit = 10000; var […]

如何从Javascript Api中编写一个公式,这与用户语言无关?

我做的事: var myTable = new Office.TableData(); ….. var y = []; y.push(…); ….. y.push('=SUM(Test[@[364]:[0]])/365'); y.push(…); ….. myTable.rows.push(y); 然后 binding.addRowsAsync(myTable.rows, function (addResult){….}); 现在一切正常,如果用户在Excel中使用英语。 但是如果他使用德语,那么会出现“#NAME?”,因为在德语SUM中必须是SUMME。 如何从Javascript Api中编写一个公式,即与用户语言无关? 或者可能的问题是:我可以在Excel中用德语作为标准语言(在单元格中)使用英文写一个公式吗? 编辑 : 我将标记迈克尔·兹拉特科夫斯基的答案,因为它正在工作。 但是我没有使用它。 问题是我得到了很多“这个论点是无效的或失踪或格式不正确。” 我在Office开发人员中心论坛上提出了同样的问题,并且build议使用Context.displayLanguage或Context.contentLanguage来查找语言并使用不同的公式。 但是这不能通用。 我现在使用的是在一些表单和一些单元格(隐藏)中写入公式,然后在其他单元格中使用FORMULATEXT来获取正确的公式。 例如,如果在单元格P2中是这个公式: =COUNTIF(Test[@[364]:[0]];"<=0") 在P3中: =FORMULATEXT(P2) 你得到的Excel表格加载后,公式在正确的语言,我在表中直接使用它。 尽pipe公式中的错误被翻译。 这里用德语: =ZÄHLENWENN(Test[@[364]:[0]];"<=0")

exceljoin保存内部数据?

我是新来的编写excel加载项(在C#中),并试图找出正确的方式来保存一些内部数据结构,所以我可以在下次打开文件时恢复状态。 如果使事情变得更容易,我可以用xml或base64string转换数据。 我不想维护一个单独的文件,并想在Excel工作表中embedded此信息。 非常感谢您的帮助。