2

关于这个主题的许多其他问题,我仍然没有找到可以避免我的问题的东西。

我想知道剪贴板在复制粘贴处理方面的限制是什么,并针对特定用途和程序 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 工作表)。如何避免复制到剪贴板的内容将被粘贴到错误的文档中,因为两个文档都使用了粘贴功能。

所以,我想知道,是否可以在我的剪贴板中提供参考,告诉他,只复制他的 word/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"

我只是在调度我的批处理文件,唯一可以做的就是等待一个调度完成,然后再开始下一个调度,但这会产生间隔

4

1 回答 1

1

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

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

更好的选择:Office API(VSTO,有人吗?)- 我很确定您在报告方面提出的任何建议都可以通过 API 重现。当心 - 太多的 API 调用,你的函数可能会运行得更慢。

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

于 2013-04-15T14:02:50.137 回答