Word, Excel, Visio, PowerPoint можно встроить в Windows Forms Application или веб-страницу с помощью DSOFramer (это ActiveX), который входит в состав
Microsoft Developer Support Office Framer Control 1.3 Sample (KB 311765).
После установки примеров (C:\DsoFramer) надо: 1) в Visual Studio создать новый проект (Windows Forms Application); 2) В References добавить ссылку на C:\DsoFramer\dsoframer.ocx (в результате будет создан файл Interop.DSOFramer.dll; в References появится DSOFramer); 3) Добавить в проект класс:
public class Fcc : AxHost |
| : base("00460182-9E5E-11d5-B7C8-B8269041DD57") |
4) Код конструктора Form1 заменить на следующий:
this.Size = new Size((int)(SystemInformation.WorkingArea.Width * .90f), 400); |
| fcc.Dock = DockStyle.Fill; |
| var ocx = fcc.GetOcx() as FramerControl; |
| ocx.EventsEnabled = true; |
| ocx.Open(@"C:\Temp\Test.docx", Missing.Value, Missing.Value, Missing.Value, Missing.Value); |
Метод ocx.Open также можно вызвать следующим способом:
typeof(_FramerControl).GetMethod("Open").Invoke(ocx, new object[] { @"C:\Temp\Test.docx", Missing.Value, Missing.Value, Missing.Value, Missing.Value }); |
5) Заменить "C:\Temp\Test.docx" на путь к файлу с расширением: .docx | .doc | .pptx | ... Нажать F5.
Чтобы самому не создавать наследника AxHost, можно сделать следующее: 1) Открыть Form1.cs в дизайнере (= в контекстном меню выбрать View Designer); 2) Открыть Toolbox (Ctrl+W, X); 3) В контекстном меню Toolbox'а выбрать Choose Items... - COM Components; 4) В списке найти DSO Framer Control Object, включить checkbox; 5) DSO Framer Control Object перетащить с Toolbar'а и сбросить над формой.
В результате будет создан файл AxInterop.DSOFramer.dll, а в References появится AxDSOFramer.
Пример встраивания офисных документов в веб-страницу находится в папке C:\DsoFramer\Samples\WebTest
Подробности использования DSOFramer приведены в статье "
Visual C++ ActiveX Control for hosting Office documents in Visual Basic or HTML".