Ограничение копирования в буфер обмена

Как и многие другие вопросы по этой теме, я все еще не нашел что-то, что могло бы избежать моей проблемы.

Я хотел бы знать, каковы ограничения буфера обмена с точки зрения обработки копирования-вставки во времени и ограничения его функциональности копирования-вставки для конкретного использования и идентификатора программы.

Потому что я разрабатывал программное обеспечение для своей компании, которое использует шаблон в 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 страниц, PowerPoint с 30 слайдами, рабочий лист Excel с 6 листами). Как избежать того, что содержимое, скопированное в буфер обмена, будет вставлено в неправильный документ, так как оба документа используют функцию вставки.

Итак, я хотел бы знать, можно ли дать ссылку в мой буфер обмена, чтобы сказать ему, копировать только содержимое внутри его слова /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"

Я только планирую свой пакетный файл, единственное, что можно сделать, это ждать завершения одного планирования, прежде чем начинать следующий, но это создаст интервалы

1 ответ

Решение

Я имел дело с автоматически генерируемыми отчетами в Word и Excel. Вы делаете это медленным способом, не удивительно, что он медленный - взаимодействие.NET COM довольно медленное, поскольку оно само по себе, и тогда ваш процесс использует другие потоки, так что теперь вы должны выполнять сортировку и синхронизацию между потоками, поскольку Office является однопоточным.

Копирование / вставка - это высокоуровневая пользовательская функция, и вы можете использовать ее как хак, но полагаться на нее как на основной способ выполнения вашей задачи - плохой выбор.

Лучший выбор: API-интерфейсы Office (VSTO, кто-нибудь?) - я уверен, что все, что вы придумали с точки зрения отчетов, воспроизводимо с помощью API. Осторожно - слишком много вызовов API, и ваши функции могут работать медленнее.

Лучший выбор: OpenXML SDK. Кривая обучения здесь, вероятно, будет крутой, так как вы все еще используете копирование / вставку, но выгода в том, что время обработки вашего документа будет сокращено на пару порядков.

Другие вопросы по тегам