Remkomplekty.ru

IT Новости из мира ПК
3 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Office interop assemblies

Генерируем документы Microsoft Word на PHP

Мы живем в мире, где PHP разработчикам приходится время от времени взаимодействовать с операционной системой Windows. WMI (Windows Management Interface, Интерфейс управления Windows) — один из таких примеров — взаимодействие с Microsoft Office.

В данной статье мы рассмотрим простую интеграцию между Word и PHP: генерацию документа Microsoft Word на основе полей ввода в HTML-форме с помощью PHP (и его расширения Interop).

Подготовительные шаги

Первым делом убедимся, что у нас настроено базовое окружение WAMP. Так как Interop присутствует только в Windows, то нам необходимо, чтобы наш сервер Apache и инсталляция PHP были развернуты на Windows машине. В этом качестве я использую EasyPHP 14.1, который крайне прост в установке и настройке.

Следующим делом необходимо установить Microsoft Office. Версия не очень важна. Я использую Microsoft Office 2013 Pro, но любая версия Office старше 2007 должна подойти.

Также необходимо убедиться, что у нас установлены библиотеки для разработки приложения Interop (PIA, Primary Interop Assemblies, Основные Сборки Interop). Узнать это можно открыв Проводник Windows, и перейдя в директорию assembly , и там мы должны увидеть набор установленных сборок:

Здесь можно увидеть элемент Microsoft.Office.Interop.Word (подчеркнут на скриншоте). Это будет та сборка, которую мы будем использовать в нашей демонстрации. Пожалуйста, обратите особое внимание на поля “Assembly name (Имя сборки)”, “Version (Версия)” и “Public key token (Токен публичного ключа)”. Их мы скоро будем использовать в нашем PHP скрипте.

В этой директории также присутствуют и другие сборки (включая и все семейство Office), доступные для использования в своих программах (не только для PHP, но также и для VB.net, C#, и т.д.).

Если список сборок не включает весь пакет Microsoft.Office.Interop , то нам нужно либо переустановить Office, добавив PIA, или вручную загрузить пакет с сайта Microsoft и установить его. Для более детальных инструкций обратитесь к этой странице на MSDN.

Замечание: к загрузке и установке доступен только дистрибутив PIA Microsoft Office 2010. Версия сборок в этом пакете 14.0.0, а 15 версия поставляется только с Office 2013.

И, наконец, необходимо включить расширение php_com_dotnet.dll в php.ini и перезапустить сервер.

Теперь можно перейти к программированию.

HTML форма

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

У нас есть текстовое поле для имени, группа переключателей для пола, слайдер для возраста, и область ввода текста для ввода сообщения, а также небезызвестная кнопка “Отправить”.

Сохраните этот файл как “index.html” в директории виртуального хоста, чтобы до него можно было добраться по адресу типа http://test/test/interop .

Серверная часть

Файл-обработчик на серверной стороне — это основная цель нашего разговора. Для начала я приведу полный код этого файла, а потом объясню его шаг за шагом.

После того, как мы записали в переменную $inputs значения, полученные из формы, а также создали пустой элемент с ключом printdate (зачем мы это сделали — обсудим позже), мы переходим к четырем очень важным строкам:

Манипулятор COM в PHP требует создания экземпляра класса в рамках “сборки”. В нашем случае мы работаем с Word. Если взглянуть на первый скриншот, то можно записать полную сигнатуру сборки для Word:

  • “Name”, “Version”, “Public Key Token” — все это берется из информации, которую можно просмотреть в “c:Windowsassembly“ .
  • “Culture” всегда neutrual

Класс, на который мы хотим ссылаться, всегда называется “имя.сборки”+ “ .ApplicationClass “.

Установив два этих параметра мы сможем получить объект для работы с Word.

Этот объект может оставаться в фоне, или мы можем перевести его в рабочий режим установкой атрибута visible в true .

Следующим шагом открываем документ, требующий обработки, и записываем экземпляр “документа” в переменную $d .

Чтобы создать в документе содержимое, основанное на данных с формы, можно пойти несколькими путями.

Самым неправильным было бы жестко прописать содержимое документа в PHP, а потом вывести его в документ Word. Я настоятельно рекомендую этого не делать по следующим причинам:

  1. Вы теряете гибкость. Любые изменения в выходном файле потребуют изменения кода PHP.
  2. Это нарушает разделение управления и вида
  3. Применение стилей к содержимому документа (выравнивание, шрифты, стили, и т.д.) в скрипте сильно увеличит количество строк кода. Программное изменение стилей чересчур громоздко.

Другим вариантом будет использование поиска и замены. У PHP есть хорошие встроенные средства для этого. Мы можем создать документ Word, в котором разместим метки со специальными разделителями, которые в последствии будут заменены. Например, мы можем создать документ, который будет содержать следующий фрагмент:

а с помощью PHP мы легко можем заменить его на содержимое поля “Имя”, полученное с формы.

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

Читать еще:  Office software protection platform не запускается

Я рекомендую третий способ, и он основывается на более глубоком знании Word. В качестве заполнителей мы будем использовать поля, а с помощью PHP кода будем непосредственно обновлять значения в полях соответствующими значениями.

Этот подход гибкий, быстрый, и согласуется с лучшими практиками работы с Word. С его помощью также можно избежать полнотекстового поиска в документе, что хорошо сказывается на производительности. Замечу, что у этого решения также есть недостатки.

Word с самого начала не поддерживал именные индексы для полей. Даже если мы и указали имена для создаваемых полей — нам все равно необходимо пользоваться числовыми идентификаторами этих полей. Это также объясняет, зачем нам нужно использовать отдельную функцию ( setupfields ) для того, чтобы задать соответствие индекса поля и имени поля из формы.

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

Прошу заметить, что поле printdate не имеет соответствующего поля на форме. Вот зачем мы добавили пустой элемент printdate в массив $inputs . Без этого скрипт все же будет запускаться и работать, но PHP будет выдавать предупреждение, что индекс printdate отсутствует в массиве $inputs .

После замены полей новыми значениями мы отпечатаем документ с помощью

Метод PrintOut принимает несколько необязательных параметров, и мы используем самую простую его форму. Так будет отпечатана одна копия документа на принтере по умолчанию, который присоединен к Windows-машине.

Также можно вызвать PrintPreview , чтобы взглянуть на получившийся результат, прежде чем его отпечатать. В полностью автоматическом окружении мы, конечно же, будем использовать метод PrintOut .

Необходимо подождать некоторое время, прежде чем завершить работу с приложением Word, так нужно время на то чтобы поставить в очередь задание на печать. Без delay(3) метод $w->Quit выполняется незамедлительно, и задание не ставится в очередь.

Наконец, мы вызываем $w->Quit(false) , что закрывает приложение Word, которое было вызвано нашим скриптом. Единственным параметром, передаваемым в метод, является указание сохранить файл перед выходом. Мы сделали правки в документе, но мы не хотим их сохранять, так как нам нужен чистый шаблон для последующей работы.

После того, как мы закончили с кодом, можем загрузить нашу страницу с формой, забить некоторые значения, и отправить её. Нижеприведенные изображения показывают результат работы скрипта, а также обновленный документ Word:

Улучшение скорости обработки и немного подробнее о PIA

PHP — слабо типизированный язык. Объект COM типа Object . Во время написания скрипта у нас нет возможности получить описание объекта, будь оно приложением Word, документом или полем. Мы не знаем, какие свойства есть у этого объекта, или какие он поддерживает методы.

Это сильно замедлит скорость разработки. Чтобы ускорить разработку, я бы рекомендовал писать функции сначала на C#, а после переводить код в PHP. Я могу рекомендовать бесплатную IDE для разработки на C# под названием “#develop”. Найти ее можно здесь. Я предпочитаю ее Visual Studio, так как #develop меньше, проще и быстрее.

Миграция C# кода в PHP не так страшна, как кажется. Давайте я покажу вам пару строк на C#:

Можно заметить, что код на C# очень похож на код PHP, который я показывал ранее. C# — строго типизированный язык, так что в этом примере можно заметить несколько операторов приведения типов, а также переменным необходимо указывать тип.

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

Другой способ повысить скорость разработки на PHP — вызывать макрос в Word. Мы проводим ту же последовательность действий, а после сохраняем ее как макрос. Макрос написан на Visual Basic, который также просто перевести в PHP.

И, что самое важное — документация по Office PIA от Microsoft, особенно документация по пространствам имен каждого приложения Office является самым детальным справочным материалом. Наиболее используемые три приложения:

Заключение

В этой статье мы показали, как заполнить данными документ Word с помощью библиотек PHP COM и возможностями взаимодействия Microsoft Office.

Windows и Office широко используются в повседневной жизни. Знать силу Office/Window и PHP будет полезно каждому PHP и Windows разработчику.

С помощью расширения PHP COM вам открывается дверь к использованию этой комбинации.

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: http://www.sitepoint.com/make-microsoft-word-documents-php/
Перевел: Станислав Протасевич
Урок создан: 5 Сентября 2014
Просмотров: 26427
Правила перепечатки

5 последних уроков рубрики «PHP»

Фильтрация данных с помощью zend-filter

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

Контекстное экранирование с помощью zend-escaper

Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.

Подключение Zend модулей к Expressive

Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.

Читать еще:  World of office

Совет: отправка информации в Google Analytics через API

Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.

Подборка PHP песочниц

Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.

Office interop assemblies

Categories

New Software

Top Software

Top Search

Interop Software

Redistributable Primary Interop Assemblies 1.0 Microsoft Coporation

The 2007 Microsoft Office Primary interop Assemblies (PIA) redistributable is a Microsoft Windows Installer package that contains the Primary interop Assemblies for 2007 Microsoft Office products. Specifically, the redistributable contains the PIAs for the following products:

* Microsoft Office Access 2007
* Microsoft Office Excel . Freeware download of Redistributable Primary Interop Assemblies 1.0, size 6.59 Mb.

chasm-interop 1.2.0 chasm-interop.sourceforge.net

Chasm-interop is a set of tools that parses C++ and Fortran 90 source files and automatically generates bridging code to provide for seamless language interoperability. . Freeware download of chasm-interop 1.2.0, size 391.68 Kb.

Microsoft Office 2010 Primary Interop Assemblies Redistributable 14.0.4763.1150 Microsoft

The Microsoft Office 2010 Primary interop Assemblies (PIA) Redistributable is a Microsoft Windows Installer package that contains the Primary interop Assemblies for Microsoft Office 2010 products.

The redistributable contains the PIAs for the following products:
· Microsoft Access 2010
· Microsoft Excel . Free download of Microsoft Office 2010 Primary Interop Assemblies Redistributable 14.0.4763.1150, size 0 b.

Paltalk Messenger Interop 9 03 Paltalk

Meet people around the world in Paltalk’s video chat rooms. Browse over 5,000 chat rooms live right now categorized by topic and language. Paltalk Messenger interop gives you the most functionality and flexibility. Paltalk can be minimized on your computer to run in the background and only alert you when you have a message. . Freeware download of Paltalk Messenger Interop 9 03, size 21.24 Mb.

Autodesk AutoCAD .Net Interop 1.0 Cadnetinterop

A .Net (c#) module to interop with Autodesk AutoCAD using AutoCAD .Net API (ObjectARX wrapper classes)

Autodesk AutoCAD .Net interop 1.0 License — GNU General Public License (GPL) . Freeware download of Autodesk AutoCAD .Net Interop 1.0, size 155.44 Kb.

Teroid Data Source Selector 2 Teroid Software Limited

Teroid Data Source Selector is a .NET component providing a quick and easy way to open the OLE DB Data Link Properties dialog without complex interop programming. Just one method call opens the dialog for the user to select a data source, and returns a connection string to the client application. . Free download of Teroid Data Source Selector 2, size 116.74 Kb.

Local IO 1 5 Industrial DOT NET

Local IO is an object oriented .NET assembly that supports the development of OPC DA 2.0 clients by encapsulating all of the OPC communications details in one assembly. Not just an OPC wrapper; you never have to deal with COM to .NET interop issues. Focus your efforts on your application’s functionality and avoid the costs of man-months of . Free download of Local IO 1 5, size 5.97 Mb.

msword2chm 0.4.3123 Wolfskin

MSWord2CHM is a VB.NET application for converting MS Office Word documents (doc) into the compiled help (chm) document format, using the Primary interop Assemblies (PIA) and the ‘HTML Tidy’ and ‘TidyForNet’ libraries. The program its available for free download. . Freeware download of msword2chm 0.4.3123, size 2.92 Mb.

Command Prompt Explorer Bar 1 1 Pavel Zolnikov

This tool extends explorer with functionality of a command prompt.

Implemented as a band object completely in C#. Demonstrates COM interop and P/Invoke, windows hooking and API interception.

Finally you can run all these .Net SDK tools and ‘Hello World!’ programs without leaving explorer shell.
. Freeware download of Command Prompt Explorer Bar 1 1, size 0 b.

JNBridgePro 6.0 JNBridge

Is a Java and .NET interoperability tool that allows you to access your entire object-oriented API from the other side, in the same process or across a network.

JNBridgePro removes the complexity of cross-platform interop, so you can generate solutions within a day, instead of weeks.

JNBridgePro creates the . Free download of JNBridgePro 6.0, size 6.10 Mb.

ClickSaverSharp 002 clicksaversharp.sourceforge.net

ClickSaverSharp is a partial port from C to managed C++ of the ClickSaver program, a program used to automate minor tasks in the MMORPG Anarchy Online. ClickSaverSharp adds support for interop with .NET components. . Freeware download of ClickSaverSharp 002, size 491.38 Kb.

Comreg 1.0 comreg.sourceforge.net

Comreg is a .NET assembly for registering/unregistering COM binaries including .NET assemblies with COM interop, ActiveX controls, COM libraries, Typelib containers, etc. . Freeware download of Comreg 1.0, size 78.61 Kb.

Читать еще:  Скачать debug menu access на андроид

FreeMiCal 1.0 freemical.sourceforge.net

FreeMiCal allows the bulk export of MS Outlook appointment items to RFC 2445 conformant iCal format. .NET 2.0 or greater and Outlook 2003 or 2007 interop Services required. . Freeware download of FreeMiCal 1.0, size 193.99 Kb.

Media Framework 1.0 mediaframework.sourceforge.net

A multimedia framework written in C# that wraps most of the DirectShow API and includes several useful Windows Forms controls. It differs from DirectShowLib in that MediaFramework tries to take the burden of COM interop off the developer. . Freeware download of Media Framework 1.0, size 372.71 Kb.

OpenGPS.NET rc opengps-net.sourceforge.net

.NET Framework GPS communications class library for communicating with GPS devices using NMEA 0183 and/or Garmin protocols. Written in C# with some Win32 interop (not quite mono compatible). . Freeware download of OpenGPS.NET rc, size 176.20 Kb.

UEMLBase Plugin for Protege-OWL 1.0 Uemlbase-plugin

The UEMLBase Plugin for Protege-OWL aids development, management and use of the Unified Enterprise Modelling Language version 2 (UEML2). It was developed in context of the EU-funded Network of Excellence, interop-NoE (IST-508011).

UEMLBase Plugin for Protege-OWL 1.0 License — GNU General Public License (GPL) . Freeware download of UEMLBase Plugin for Protege-OWL 1.0, size 0 b.

UEMLBase: The UEML2 Protege-OWL database 1.0 Uemlbase

UEMLBase is a Protege-OWL database that describes the common ontology and language descriptions that constitute the Unified Enterprise Modelling Language version 2 (UEML2). It was developed by the EU-funded Network of Excellence interop-Noe.

UEMLBase: The UEML2 Protege-OWL database 1.0 License — GNU General Public License (GPL) . Freeware download of UEMLBase: The UEML2 Protege-OWL database 1.0, size 0 b.

accellera-vip-interop-library 1.0 Acc-vip-iop

This library supports interoperability between components written for different verification methodologies such as VMM and OVM. This is maintained by the Accellera Verification Intellectual Property Technical Subcommittee.

accellera-vip-interop-library 1.0 License — Apache License V2.0 . Freeware download of accellera-vip-interop-library 1.0, size 875.62 Kb.

AlchemySOAP 1.0.0 Alchemysoap

AlchemySOAP is a C++ SOAP 1.1/1.2 protocol stack, licensed under the LGPL. It is fast, standards compliant, includes many automated unit/interop tests and other notable features (optional SSL and DOM support, etc.). AlchemySOAP is a fork of the EasySoap+

AlchemySOAP 1.0.0 License — GNU Library or Lesser General Public License (LGPL) . Freeware download of AlchemySOAP 1.0.0, size 337.60 Kb.

RTM-.NET 1.0 Rtm-net

RTM-.NET is a wrapper API for the RememberTheMilk.com API, written in C#. It provides the chance to interop with the original API by working with a normal OOP approach.

RTM-.NET 1.0 License — GNU General Public License (GPL) . Freeware download of RTM-.NET 1.0, size 0 b.

Office interop assemblies

Перевести · 20.12.2019 · To install the Office 2010 Primary Interop Assemblies, click the Download button, …

Office primary interop assemblies — Visual S…

  • Separate Primary Interop Assemblies to Build and Run Projects
  • Use Features of Multiple Microsoft Office Applications in A Single Project
  • Primary Interop Assemblies For Microsoft Office Applications
  • See Also

Microsoft Office 2010: Primary In…

ЗАГРУЗИТЬ

ЛЮДИ ТАКЖЕ ИЩУТ

Office — основные сборки взаимодейс…

Office — основные сборки взаимодействия Office primary interop assemblies. 08/14/2019; Время чтения: 6 мин; В этой статье. Для использования компонентов приложения Microsoft Office из проекта Office

Видео

Microsoft Office 2010: Primary Interop Asse…

Версия 14.0.6024.1000 Microsoft Office 2010: Primary Interop Assemblies Redistributable доступна бесплатно на нашем архиве. Эта бесплатная программа принадлежит Microsoft

Microsoft Office 2010 Primary Interop Asse…

Перевести · 19.03.2020 · Microsoft Office 2010 Primary Interop Assemblies — intallation of the package failed. I’m installling Microsoft Office 2010 Primary Interop Assemblies

office 2010 primary interop assemblies i…

Перевести · HI, I am trying to install office 2010 primary interop assemblies(o2010pia.msi) …

Primary Interop Assemblies のイン …

Перевести · IBM Cognos Analysis for Microsoft Excel の機能を使用するには、Excel 用の Primary Interop Assemblies(PIA)をインストールしておく必要があります。通常、PIA はコンピュータに Microsoft Office

Microsoft Office 2010 Primary Interop Asse…

Перевести · Should I remove Microsoft Office 2010 Primary Interop Assemblies by Microsoft? The Microsoft Office 2010 Primary Interop Assemblies (PIA) Redistributable is a Microsoft Windows Installer package that contains the Primary Interop Assemblies for Microsoft Office 2010

Download Microsoft Office 2010: Primary …

Перевести · The Microsoft Office 2010 Primary Interop Assemblies (PIA) Redistributable is a Microsoft Windows Installer package that contains the Primary Interop Assemblies for Microsoft Office 2010

Download Microsoft Office 2010 Primary I…

Перевести · 07.09.2010 · The Microsoft Office 2010 Primary Interop Assemblies Bootstrapper Installer adds the option Microsoft Office 2010 Primary Interop Assemblies to the Prerequisites Dialog Box in Visual Studio 2010 or Visual Studio 2008. Then when you deploy with ClickOnce or Windows Installer, you can select this option to deploy the Microsoft Office 2010

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector
×
×