复制到剪贴板限制

时间:2013-04-15 13:56:05

标签: c# excel ms-word powerpoint copy-paste

关于这个主题的许多其他问题,我仍然找不到可以避免我的问题的事情。

我想知道剪贴板在复制粘贴处理方面的时间限制,并限制其复制粘贴功能以用于特定用途和程序ID。

因为,我一直在为我的公司开发一个软件,它在Word / Excel和PowerPoint中使用模板通过每天替换图片并粘贴新图表和模板中的图片来生成自动生成的报告。

但是,我很害怕,因为它似乎存在一些关于复制到剪贴板的限制

CopyBitmapToClipboard

ActiveWindow.View.PasteSpecial()

当我将表格/图像复制到我的剪贴板并将其粘贴到Word / Excel / PowerPoint中时,它很好,但是如果我现在有10个并行报告同时生成并使用复制粘贴机制,那么将会发生它将其复制到另一个报告当前正在使用的Word / Excel / PowerPoint中。

考虑到,我有1个文件,并且对于一个巨大的powerpoint表的复制到剪贴板将采用最佳情况1秒(没有),这将意味着在1天内,我可以生成最大值

1 copy paste procedure = 1 second

1minute = 60 second means 60 copy paste

1hour = 60min x 60 copy paste

1day = 24hours x 3600 copy paste

表示我总共有 86400 复制粘贴/报告。这是不可能的。文档永远不会至少花费1秒钟完成(对于大约20页的报告,带有30张幻灯片的powerpoint,带有6张表格的excel工作表)。如何避免将复制到剪贴板中的内容粘贴到错误的文档中,因为两个文档都使用粘贴功能。

所以,我想知道,如果有可能在我的剪贴板中给出一个引用,告诉他,只复制他的单词/ excel / powerpoint中的内容而不是复制我刚才复制的那些做CTRL + C并在错误的文档中执行CTRL + V?

目前,我们每天有大约50份报告生成(考虑到几个月前我们有2份报告要生成),这些报告计划在5分钟内完成,但是当天我们将会发生86400每日报道生成?复制粘贴功能会搞砸所有报告并粘贴在错误的报告中。我可能不会帮助它,但我想防止这种影响。

我正在用C#/ .NET编写我的软件,但我无法在其中写入以捕获是否正在生成当前的计划/报告,因为我运行 .bat 来执行用我写的程序创建报告。

**编辑: 我的 .bat 的内容是:     myprogram.exe / objectsourceprogram =“”/ sourcefile =“my template.doc / xls / ppt”/ destinationfile =“my destination.doc / xls / ppt”

我只是安排我的批处理文件,唯一可以做的是,在开始下一个调度之前等待一个调度完成,但是这会创建intervales

1 个答案:

答案 0 :(得分:1)

我也在Word和Excel中处理过自动生成的报告。你这样做很慢,难怪它很慢 - .NET COM interop很慢,因为它然后你的进程利用其他线程,所以现在你必须在线程之间进行编组和同步,因为Office是单线程的。

复制/粘贴是一个高级用户功能,您可以将其用作黑客,但依赖它作为执行任务的主要方式是一个糟糕的选择。

更好的选择:Office API(VSTO,任何人?) - 我很确定您在报告方面提出的任何内容都可以通过API重现。注意 - 太多的API调用,你的功能可以更慢。

最佳选择:OpenXML SDK。这里的学习曲线可能很陡,因为您仍在使用复制/粘贴,但回报是您的文档处理时间将减少几个数量级。