Tag: vsto

性能 – 在单元格中循环 – 在Excel VSTO中用C#压缩“存储为文本的编号”警告

我使用来自数据库的数据填充ListObject,并在插入数据之前对来自VarChar(&similar)的ListColumns进行格式化。 这个效果很好,但现在一些受影响的单元格显示“Number Stored As Text”错误。 答案https://stackoverflow.com/a/21869098/1281429正确地抑制错误,但需要循环所有单元格(因为它是不可能执行范围上的操作)。 不幸的是,对于大范围,这是不可接受的缓慢 。 (NB – 如果你在Excel中手动执行,它是闪电般的) 这是C#中的代码片段(针对特定的列): var columnDataRange = listColumn.DataBodyRange var cells = columnDataRange.Cells; for (var i = 1; i < cells.Count; i++) { InteropExcel.Range cell = cells[i, 1]; if (cell.Count > 1) break; if (cell.Errors != null) { var item = cell.Errors.Item[InteropExcel.XlErrorChecks.xlNumberAsText]; item.Ignore = true; } } 有没有人知道这样做的更快的方式? […]

如何debuggingNullReferenceException发生在base.Dispose(configuration)样板

我是C#和VSTO的新手。 我有一个Excel添加,我有工作,创build一个function区和一些新的button,做各种事情。 我得到一个NullReferenceException base.Dispose Ribbon.Designer.cs文件中发生的插件加载到Excel中。 从文档说我可能实例化了一些东西,而不使用新的关键字,但我不知道在哪里可以find我没有做的事情! 我今天早些时候有这个工作,但没有采取任何备份或连接到源代码pipe理,事后看来是一个坏主意! 在例外的时候有很多的空值,我不知道这是否有意义? 基本上; 我不知道我做了什么突然发生这种情况,我不知道如何debugging它,在哪里设置我的rest,或者这个样板如何适合事情的scheme。 当我没有包括绝大多数的代码时,我并不指望有人魔法般的把错误带出去,但是一些方向或者解释什么是好的! 当地人窗口在例外的时候 – this {ReportFramework.Ribbon} ReportFramework.Ribbon – base {ReportFramework.Ribbon} Microsoft.Office.Tools.Ribbon.RibbonBase {ReportFramework.Ribbon} + base {ReportFramework.Ribbon} System.ComponentModel.Component {ReportFramework.Ribbon} Base null Microsoft.Office.Tools.Ribbon.OfficeRibbon + Context '((Microsoft.Office.Tools.Ribbon.RibbonBase)(this)).Context' threw an exception of type 'System.NullReferenceException' object {System.NullReferenceException} Factory null Microsoft.Office.Tools.Ribbon.RibbonFactory + Global '((Microsoft.Office.Tools.Ribbon.RibbonBase)(this)).Global' threw an exception of type 'System.NullReferenceException' bool {System.NullReferenceException} + […]

当我将其设置为activeworkbook时,为什么我的Workbook对象为空?

我曾经见过类似的问题,但是我发现没有一个能解决我的具体情况。 我在Visual Studio 2010中有一个Excel 2007 COM加载项,用C#编写。 当我将活动手册加载到function区代码中的工作簿对象时,它工作正常。 当我以Windows窗体的forms进行操作时,每次都会从activeworkbook中返回null。 以下是我的使用语句和错误不断发生的代码片段。 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.InteropServices; using System.Text; using Office = Microsoft.Office.Core; using System.Windows.Forms; using Excel = Microsoft.Office.Interop.Excel; using System.Drawing; ————————————————— Excel.Application xlApp; xlApp = (Excel.Application)Marshal.GetActiveObject("Excel.Application"); Excel.Workbook xlWkbk = (Excel.Workbook)xlApp.ActiveWorkbook; Excel.Worksheet xlWksht = (Excel.Worksheet)xlWkbk.ActiveSheet; 任何帮助将不胜感激!

创build一个自定义的Excel加载项

我试图创build一个自定义Excel加载项。我目前有Visual Studio Ultimate 2013和Microsoft Excel 2010。我现在的问题是,当我创build一个新的Excel加载项目,并尝试构build时,它说我没有安装适当的Office版本 ,它提供了一个链接供参考。 每当我访问链接,它实际上说,支持Excel 2010。 每当我启动excel时,它实际上会将加载项加载到已安装的加载项列表中,但我无法在Visual Studio中进行debugging或运行它! 有没有人有这个问题?

如何检测(并更改)在Excel和PowerPoint中的图表中使用的字体是否将遵循样式或由用户指定?

当图表从Excel复制到PowerPoint时,如果轴上的字体由于在Excel中应用的样式或主题而发生更改,那么它们通常会更改为与PowerPoint中应用的任何主题(这是好的)保持一致。 但是,当字体(通常可能是格式化)已被用户覆盖时,用户指定的字体是使用的字体。 编写代码来检测默认字体是什么,并应用它可能不是那么棘手,但我宁愿应用主题字体的方式,将匹配后续主题的变化。 谁能告诉我如何做到这一点? 我正在使用C#,但熟悉VBA和对象模型或多或less都是相同的,所以两种语言的方法应该没问题。

Microsoft.Office.Tools.Excel.ApplicationFactory.GetVstoObject导致VBA内存泄漏?

下面是VSTO-Project的一个最小示例,它强制Excel VBA环境显示错误“内存不足”,并导致VBA-Project出现两次。 问题:这是“GetVstoObject”-Method中的一个错误。 我怎样才能解决? 脚步: 在Excel 2010中:创build一个新的工作簿并按ALT + F11进入VBA环境 在VBA.ThisWorkworkbook:创build一个空的新的子 小测() 结束小组 将工作簿保存为Test.xlsm并退出Excel。 在Visual Studio中创build一个新的Excel 2010加载项 用下面的代码replaceThisAddIn.cs中的所有代码。 用F5开始debuggingExcel 用F5开始debuggingExcelAddIn1 打开保存的工作簿Test.xlsm 。 重新打开保存的工作簿(重要:必须“外部”,例如通过使用Windows任务栏中的Excel跳转列表) 结果: CTP翻了一番 如果按ALT + F11打开VBA,将会得到“没有足够的内存” – 错误 感谢您的任何解释/解决scheme! 问候,Jörg C#最小插件代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Linq; using Excel = Microsoft.Office.Interop.Excel; using Office = Microsoft.Office.Core; using Microsoft.Office.Tools.Excel; namespace ExcelAddIn1 { […]

在VB中集成SQlite数据库(或任何其他build议)与Excel项目

我很新的VB。 我正在一个Excel-VB(2013)项目中,我想从另一个Excel文件中读取数据,然后将其中一些字段与现有数据进行比较。 所以问题是关于现有的数据库,它位于应用程序内部(没有服务器,没有在线连接)。 我想知道如何添加一个SQLite数据库文件(或任何其他)到我的项目,然后连接到该数据库并使用它。 我需要帮助一些例子。 谢谢,

Excel 64位和SQL Server CE 4与entity framework的私人部署6

我正在部署使用entity framework6和我的VSTO Excel加载项的SQL Server CE 4.0数据库。 在开发机器上与数据库的通讯工作正常但是在用Excel 64bittestingPC时,我得到一个exception: ADO.NET提供的名称为“System.Data.SQlServerCe.40”的variables名称未在计算机或应用程序configuration文件中注册 相同的configuration,但与Excel 32位数据库通信build立没有任何问题。 在两台testing电脑上的操作系统是Win7 – 64位 我已经检查过在部署文件夹中存在所有库(x86和amd64)。 有什么想法吗?

如何以编程方式访问从剪贴板复制的select地址

这是我想要达到的: 用户复制一个单元格(或范围),比如说A3,当她点击一个button时,我需要通过编程访问单元格的地址(创build一个链接)。 以文本格式访问剪贴板非常简单: string clip; if (Clipboard.ContainsText()) clip = Clipboard.GetText(); 我也发现可以像这样以不同的格式访问剪贴板 var dataObj = Clipboard.GetDataObject(); var format = DataFormats.CommaSeparatedValue; if (dataObj != null && dataObj.GetDataPresent(format)) { var csvData = dataObj.GetData(format); //… } 但我不能为我的生活find哪个格式包含链接和如何得到它。 (我循环通过Clipboard.GetDataObject()提供的所有格式。GetFormats(),但一些返回的不可思议的stream,我无法理解。 背景信息: 答:链接必须在那里,因为我可以使用“粘贴链接”,它创build一个绝对的参考 B.我正在使用Excel 2010和VS2010 – Win7下的C# C.代码在自定义任务窗格中运行 任何帮助感激! 所以, 并感谢所有设法读到这一点的人。 我终于弄明白了。 我的解决scheme仍然很尴尬,因为我无法从剪贴板中获得stream的实际结构,但是我发现我在寻找什么: protected override void WndProc(ref Message m) { const int […]

如何安装Excel加载项的两个实例

我们已经为MS Excel 2010编写了一个.NET加载项。它工作的很好,我们正在使用MS部署包创build一个安装加载项的MSI。 问题是,有时我们需要安装两个版本的加载项。 也许一个是今天的版本,一个是正在testing的下一个版本。 在同一台机器上,我需要更新哪些内容以及在哪里允许安装插件? 首先,尝试更改两个版本的加载项目的GUIDAttribute: <GuidAttribute("75AC751D-AB16-4E37-8940-XXXXXXXXX"), ProgIdAttribute("MyAddin.connect")> 随着这一变化,我想我需要改变设置中的产品代码,包装码和升级码。 我的理解是正确的,如果我需要在同一台机器上安装我的两个环境(UAT,Prod)的附加组件,那么我的产品代码,软件包代码和升级代码都是唯一的。 以后,用户得到一个新版本的prod加载项,那么这个加载项应该有相同的升级代码和包代码,但是只有不同的产品代码(特定的 在这种情况下,我可以保持UAT和Prod相同的ProgIDAttribute?