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".
1 комментарий:
Здравствуйте!
У меня есть попутный вопрос по данной тематике. Как сделать так чтобы в ocx.Open можно было использовать объекты, созданные при помощи VSTO.
Как пример...
using Excel = Microsoft.Office.Interop.Excel;
...
Excel.Application oXL;
Excel._Workbook oWB;
Excel._Worksheet oSheet;
...
oXL = new Excel.Application();
oXL.Visible = true;
oWB = (Excel._Workbook)(oXL.Workbooks.Add( Missing.Value ));
oSheet = (Excel._Worksheet)oWB.ActiveSheet;
...
ocx.Open(oSheet)
или COM...
string sAppProgID = "Excel.Application";
object oExcel = Marshal.GetActiveObject(sAppProgID);
ocx.Open(oExcel)
Отправить комментарий