Как можно распечатать документы Office из .NET единообразным способом?

Используя объекты Microsoft InterOp, я могу программно распечатать документ Word или Excel.

Есть ли более простой и унифицированный способ программной печати всех типов документов (.txt, .doc, .xls, .pdf и т. Д.)?

13.10.2009 10:50:48
1 ОТВЕТ

Microsoft использует DDE по умолчанию для печати из офисных продуктов. Перейдите в Инструменты / Параметры папки / Типы файлов, затем найдите .XLS, например, и нажмите «Дополнительно». Вы увидите список действий, одним из которых является «Печать». Внутри этой команды находится команда DDE, которую Excel использует для печати, а затем закрывает документ, и одна из этих команд существует для каждого продукта в пакете Office. К сожалению, DDE использует API SendMessage, но здесь была библиотека, которая оборачивает эти функции для вас:

http://ndde.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=4828

Это больше не обновления, но все равно следует делать то, что вам нужно, если вам нужен только общий способ печати документов.

Если вы используете Interop и уже открыли экземпляр приложения, просто вызовите соответствующую функцию PrintOut. например для Word, это:

object nullobj = Missing.Value;
doc.PrintOut(ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj); 

Очевидно, что и взаимодействие, и DDE далеки от идеальных решений, но Office все еще основан на том же ядре Win32, которое было в 90-х годах.

Как только они перекодируют его в управляемый код, у нас будет хороший общий набор интерфейсов для создания, печати и просмотра офисных документов!

Ура, Джейсон

3
12.11.2009 03:13:24