性能-在单元格上循环-在Excel VSTO中用C#抑制 "数字存储为文本 "的警告
我正在用数据库中的数据填充一个listObject,并且正在预先构图listColumns,这些列表来自varchar(&light)在插入数据之前. 这效果很好,但是一些受影响的单元格现在显示"存储为文本"错误. 答案 https://stackoverflow.com/a/a/21869098/1281429 需要正确抑制错误通过所有单元格(由于无法在范围内执行动作). 不幸的是,对于大范围,这是慢> . (n.b.-如果您在Excel中手动进行闪电,请快速进行) 这是C#中的代码段(对于特定列): var columnDataRange = listColumn.DataBodyRange var cells = columnDataRange.Cells; for (var i = 1; i
0 2023-05-24
编程技术问答社区
Excel互操作--效率和性能
我想知道我该怎么做才能提高Excel自动化的性能,因为如果您在工作表中有很多事情会很慢... 这是我发现自己的一些: ExcelApp.ScreenUpdating = false - 关闭屏幕重新绘制 ExcelApp.Calculation = Excel.XlCalculation.xlCalculationManual - 关闭计算引擎,因此Excel不会自动重新计算单元格值(完成后重新打开) 减少对Worksheet.Cells.Item(row, col)和Worksheet.Range的调用 - 我不得不轮询数百个单元以找到所需的单元.实施一些单元位置的缓存,将执行时间从〜40秒减少到〜5秒. 什么样的Interop调用对性能造成了沉重的损失,应该避免?您还能做些什么来避免进行不必要的处理? 解决方案 使用c#或vb.net进行获取或设置一个范围时,找出范围的总尺寸是多少,然后获得一个大2尺寸对象阵列... //get value
6 2023-05-23
编程技术问答社区
C# Excel VSTO | 能否移动一个透视表?
我正在尝试在VSTO中移动一个枢纽,而根本不再成功.我的逻辑是找到枢轴表的范围,将其剪切并粘贴到一个新范围内,我确定在工作表上不存在数据. public static void MovePivotTable(string sheetName, PivotTable pivotTable, int newX, int newY, int width, int height) { try { Worksheet worksheet = GetOrCreateWorksheet(sheetName); Range topLeft = (Range)worksheet.Cells[newX, newY]; Range bottomRight = (Range)worksheet.Cells[newX + width, newY + height];
4 2023-05-21
编程技术问答社区
Outlook插件:如何根据自定义逻辑自动回复?
问题 有可能,Outlook加载项可以根据自定义逻辑自动回复某些电子邮件/发件人?如果是这样,如何? 示例 这样的加载项可能仅向未联系中的发件人发送自动答复,或者仅向已通过外部服务验证的电子邮件(加载项调用以进行检查)的发件人.此自动答复可能是: 感谢您的电子邮件!我优先考虑经过验证的发件人的电子邮件.您可以免费验证自己在这里 接收该消息的发件人可以单击链接并通过外部服务验证.然后,对于将来的电子邮件,自动答复将不适用于该发件人. 背景 Outlook在设置中具有自动答复选项,但其功能仅限于为内部发件人设置特定消息,而外部发件人的功能则不同,然后选择是否仅使用与联系人使用自动答复.没有内在的能力来完成上面示例中描述的内容. 其他问题和答案(可能相关) 如何编辑使用C#:在Outlook中的自动答复也可能是相关的,但答案中也有一个断开的链接(大约7年前). 任何帮助都将不胜感激! 解决方案 Outlook Web附加组件设计用
0 2023-05-15
编程技术问答社区
Outlook插件:如何用外部服务模拟自动回复?
背景 我以前问了这个问题: Outlook加载程序:如何根据自定义逻辑自动回复? 正如Answerers @eugeneastafiev和 @outlookadd-insteam-msft所述,Outlook Web附加组件只能在当前选择的项目上运行.这对于自动回复用例不起作用,因为自动答复应在接收新电子邮件时发送,无论用户是否选择了它. 问题 尽管如此,我知道附加 can 对传入邮件进行分类,例如移动/将它们复制到不同的文件夹.是否可以从这个意义上检测传入的邮件,然后将加载项调用到外部服务以这种方式发送自动回复? 示例 例如: 加载项副本传入到文件夹中. 加载项命中外部API端点. 外部服务发送自动回复电子邮件(也许使用SMTP或类似?). 澄清 我不是希望在Outlook中使用内置自动答复功能,因为该选项的选项非常有限. (粗略地说,它只能向所有发件人发送一条消息,或者向联系人发送一条消息,而另一个则可以发送给非接触.)我希望
0 2023-05-15
编程技术问答社区
阻止电子邮件发件人
无论如何,您是否可以创建一个代码,当您单击一个按钮时(我已经创建了这个),它将采用选定的电子邮件并阻止将删除电子邮件的发件人? 解决方案 Outlook对象模型根本不会公开阻止/安全的发件人. 如果使用 rexemption (我是其作者)是一种选择,它将公开 rdojunkemailoptions object(返回 rdosession .JunkEmailOptions,.JunkEmailOptions, rdoexchangemailboxstore .使用RDOJunkEmailOptions.BlockedSenders.Add. 添加阻塞发件人 其他解决方案 Outlook对象模型没有为此提供任何东西.但是,您可以创建一个VSTO加载项,该加载项可以处理传入的电子邮件并删除它们是发件人属于阻止列表的.当新消息到达收件箱和客户端规则处理之前,Application类的NewMailEx.您可以使用"入口"汇票数组中返回的输入ID调用参见
4 2023-05-15
编程技术问答社区
Outlook 2010显示添加到ContextMenu的控件的Shotentips和/或Supertips吗?
我正在Outlook 2010中添加上下文菜单.我只是在使用以下代码进行测试.我正在阅读有关这些内容的显示了按钮标签,但没有提示. 我也在使用idMso="ContextMenuMailItem"进行测试,并且存在相同的问题. Outlook是否显示菜单项的某种形式的提示?如果是如何? 更新:最初,我确实显示了附件上下文菜单的示例,但我也对idMso="ContextMenuMailItem"感兴趣. Outlook确实有某种菜单
10 2023-05-15
编程技术问答社区
如何检测其他Outlook事件,如 "作为附件转发","用会议回复"。
外面的Outlook提供以下内容: ((Outlook.ItemEvents_10_Event)this._mailItem).Reply += new Outlook.ItemEvents_10_ReplyEventHandler(MailItem_Reply); ((Outlook.ItemEvents_10_Event)this._mailItem).ReplyAll += new Outlook.ItemEvents_10_ReplyAllEventHandler(MailItem_ReplyAll); ((Outlook.ItemEvents_10_Event)this._mailItem).CustomAction += new Outlook.ItemEvents_10_CustomActionEventHandler(MailItem_CustomAction); ((Outlook.ItemEvents_10_Event)this._mailItem).Forwa
0 2023-05-15
编程技术问答社区
如何在加载Outlook时在VSTO ADD中执行事件C#
在Outlook应用程序被满载后如何执行事件.当C#VSTO ADDIN启动事件触发时,我尝试执行一些代码,但我希望在应用程序完成加载后运行脚本.有什么想法吗? private void ThisAddIn_Startup(object sender, System.EventArgs e) { //Doesn't make sense to add script here because outlook is still not finished loading } private void ThisAddIn_Shutdown(object sender, System.EventArgs e) { // Note: Outlook no longer raises this event. If you have code that // must run when Ou
4 2023-05-15
编程技术问答社区
VSTO插件Outlook任命的删除和写入事件只有在首先打开时才被触发
我正在研究Outlook Addin,如果删除,我尝试执行特定的操作.我已经打开过一次的所有约会都可以正常工作.从日历中创建或删除约会而不开放的情况下没有事件(beforedelete,写). private void ThisAddIn_Startup(object sender, System.EventArgs e) { inspectors = this.Application.Inspectors; inspectors.NewInspector += new Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler(Inspectors_NewInspector); } void Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector) { appoi
4 2023-05-15
编程技术问答社区
开发与多个版本兼容的Outlook插件
我在Outlook 2010下创建了一个VSTO Outlook加载项.但是,当它部署到Outlook 2007时,它似乎不起作用.解决该问题的效率低下的方法是在Outlook 2007下再次编译.使其在两个版本中都可以使用的方法?谢谢 解决方案 我有同样的问题.我所做的是在Addin(Starup函数)开头测试Outlook版本(2010年)是否为14.但是我不得不安装Office 2007,然后在Outlook 2007项目中再次编译以查看结果.该程序功能正常,但我仍然有一些错误. 其他解决方案 您只需要根据此创建一个VSTO Outlook Add-in,按照此文章 基本上,Visual Studio 2010中新的嵌入式Interop类型功能有助于加载在运行时解决PIAS.唯一的问题是您需要使用Lower denoMinator(2007)代码或在代码中查看Outlook版本并启用2010年所需功能. 替代方案:您可以考虑使用第三方 - 工具(www.
2 2023-05-15
编程技术问答社区
在Exchange设置中试图获取项目时,C# Outlook VSTO插件出现错误
我正在开发C#中的CODD-IN加载项,该加载项在Outlook中查找日历约会,并在其中读取/写入一些数据. 最近,其中一位客户遇到了加载项的问题,即他们无法读/编写日历约会,并且给予例外: 操作失败. 从例外日志中没有太多信息,但我怀疑它们与Exchange有同步问题. 我问客户,他们说,他们在Outlook中也随机弹出窗口,有时在与Exchange同步时发生不幸时会发生这种情况.我告诉他们"维修" Outlook数据文件,但这并没有解决问题. Outlook项目基本上是根据其Outlook 进入或主题查找的(主题是独一无二的,为了简单起见,我对代码进行了一些翻译) ...main alghorythm... Outlook.AppointmentItem calAppointment = null; calAppointment = SearchforCalendarMatch(EntryID, Subject); //we try
0 2023-05-15
编程技术问答社区
编程禁用Outlook组合窗口功能区中的现有按钮
AM在C#中写下Outlook加载项.在撰写新电子邮件时,我想在"选项"选项卡中禁用"权限"按钮. 目前正在使用Addin Express创建Outlook加载项 解决方案 您需要使用定义的getEnabled属性使用command标签.例如: 您可以重新使用内置的功能区控件,请参见在办公室流利的色带上暂时重新使用命令以获取更多信息. 可以在以下文档中找到内置控制ID的列表: Offic
12 2023-05-15
编程技术问答社区
在Microsoft Outlook 2010中准备好事件?
Microsoft Outlook 2010中是否有一个事件可以订阅,以便知道Outlook何时完成初始化,并且所有组件,文件夹等都已加载? 解决方案 好吧,我发现了我需要做的... ... private void ThisAddInStartup(object sender, EventArgs e) { this.Application.Startup += ApplicationStartup; this.Application.ItemLoad += ApplicationItemLoad; } void ApplicationItemLoad(object Item) { //Do something } private void ApplicationStartup() { //Do something } ... ff869298.aspx 其他解决方案 不确定VSTO,但良好的
0 2023-05-15
编程技术问答社区
在发送前用ID号标记Outlook MailItem,不会导致TNEF(RTF)的发送。
我有一个Outlook加载项,该加载项在发送之前将用户property分配给邮件: Outlook.UserProperty prop = mail.UserProperties.Add("XXXX", Outlook.OlUserPropertyType.olText); prop.Value = "YYYY"; 已知(请参阅停止将Outlook转换为RTF 例如)这样做会导致使用TNEF发送电子邮件(即RTF格式,可怕的winmail.dat). 我的问题是,简单地将tnef属性放置安全吗?以下代码将做到这一点: mail.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/id/{00062008-0000-0000-C000-000000000046}/8582000B", false); 这里的问题是,我必须在ItemSend上进行此操作 - 设置属性后我无法直接执行此操作,因
2 2023-05-15
编程技术问答社区
将项目移至目标文件夹时,VSTO Outlook ItemAdd不会被解雇
我试图在将项目移动到目标文件夹时在ItemADD事件上做一些事情,但ItemAdd事件没有启动. 我已经在全局范围声明了源对象(全局列表肌表示肌化),以确保它一直活着我需要接收事件. 我已经包装了要在MyOutlookItems类,文件夹对象和通讯事件处理程序中使用的功能,该功能作为参数传递,因为我想在源类中而不是在包装类中处理事件./p> 包装类Myoutlookitems: public class MyOutlookItems { public Outlook.MAPIFolder Folder { get; set; } private Outlook.ItemsEvents_ItemAddEventHandler _itemAddEvtHandler; public void Subscribe(Outlook.ItemsEvents_ItemAddEventHandler itemAddEvtHandler) {
0 2023-05-15
编程技术问答社区
如何以编程方式设置注册表设置以防止Outlook删除VSTO插件
hi是否有一种方法可以编程设置以下注册表密钥: HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Resiliency\DoNotDisableAddinList\ DWORD= 1 正如我从这篇文章中学到的那样(除其他)时,这阻止了Outlook从Outlook中删除我的慢速.是的,最好设计加快速度的ADDIN.但是,由于它需要在互联网上连接服务,因此很难实现.顺便说一句:我也有许多其他Addins. 解决方案 您需要使用.NET Base类库来完成工作, congistrykey 类代表Windows注册表中的键级节点.参见在
0 2023-05-15
编程技术问答社区
想要将一个VSTO ADDIN项目的对象类型数据发送到另一个VSTO ADDIN项目
我正在研究Outlook Addin,其中我想将一个Outlook Addin项目的数据发送到另一个Outlook项目.但是,当我尝试在参数中使用对象类型数据调用另一个项目的函数时,它将抛出 "无法施放type'system.runtime.remoting.proxies.__ promentparentproxy'的对象. runtime.interopservices.marshal.throwexceptionforhrinternal(int32 errorcode,intptr errorInfo)"错误. 这是您参考的代码. public IProfileAttribute[] profileAttributes= null; Outlook.Application outlookApp = new Outlook.Application(); this.pro
12 2023-05-15
编程技术问答社区
visual studio生成的msi与gpo。这个被宣传的应用程序将不会被安装,因为它可能是不安全的
我的Outlook VSTO ADDIN带有OneClick Installer(VSTO清单等),与MSI捆绑在一起.这样做是为了能够使用组策略安装它(据我了解,GPO无法真正部署过电信,它需要MSI). 如果我从有限帐户(UAC提示)或管理员帐户运行,此MSI可以正常工作. 问题是,如果通过GPO部署它: "此广告应用程序不会安装,因为它可能不安全(...)" 我看了堆叠,发现它可以使用/qb开关运行 - 但它不起作用:(. 互联网中的某个地方我发现这与以下方式有关: 但老实说,我不明白为什么Visual Studio几乎可以通过GPO真正部署MSI. 我应该在视觉工作室中的MSI中解决什么才能使其正常工作? 解决方案 您可以使用GPO部署每个用户软件,而没有任何问题.基本上,您可以在使用GPO之前通过静静安装软件包进行测试: msiexec /i productname.msi /quiet 问题在于将MSI发布到可能没有特权的系统中,因此
0 2023-05-15
编程技术问答社区
VSTO Outlook:添加一个带有预定义的Outlook Icon(PR_ICON_INDEX)的新探索器列
我正在尝试在Explorer中创建一个新列.我希望此列使用pr_icon_index包含一个预定义的Outlook图标之一. 因此,我正在使用以下方法来循环浏览所有Outlook Mail项目,并使用以下方法设置其属性PR_ICON_INDEX: private const int OL_PHONE = 0x15D; private const string PR_ICON_INDEX = "http://schemas.microsoft.com/mapi/proptag/0x10800003"; private bool SetExtendedPropertyValue(Outlook.MailItem aMailItem, string aProperty, int value) { Outlook.PropertyAccessor oPropAcc = null; try {
16 2023-05-15
编程技术问答社区