1. PHPOffice
https://github.com/PHPOffice/
Librairie pour créer, lire et écrire des documents aux formats
standards de la bureautique
● PHPExcel
● PHPPowerPoint
● PHPWord
● PHPProject
● PHPVisio
● PHPAccess
License : LGPL (peut être lié à du code non-propriétaire)
2. Fonctionnalités principales :
● Gestion des méta-données (auteur, description, etc.)
● Formatage et Style des cellules et du contenu
● Rich Text dans les cellules
● Formatage conditionnel
● Fusion de cellules
● Liens hypertexte
● AutoFiltre
● Options d'impression
● Figer des volets
● Images embarqués (à partir de fichiers ou d'images générées)
● Diagrammes
● Moteur de calcul de formule embarqué pour le pré-calcul des formules
● ...
4. // Create new PHPExcel object
$objPHPExcel = new PHPExcel();
// Set document properties
$objPHPExcel->getProperties()->setCreator("Me")
->setLastModifiedBy("Me")
->setTitle("PHPExcel Test Document")
->setSubject("PHPExcel Test Document")
->setDescription("Test document for PHPExcel, generated using PHP classes.")
->setKeywords("office PHPExcel php")
->setCategory("Test result file");
// Add some data
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Hello')
->setCellValue('B2', 'world!')
->setCellValue('C1', 'Hello')
->setCellValue('D2', 'world!');
// Miscellaneous glyphs, UTF-8
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A4', 'Miscellaneous glyphs')
->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç');
$objPHPExcel->getActiveSheet()->setCellValue('A8',"HellonWorld");
$objPHPExcel->getActiveSheet()->getRowDimension(8)->setRowHeight(-1);
$objPHPExcel->getActiveSheet()->getStyle('A8')->getAlignment()->setWrapText(true);
// Rename worksheet
$objPHPExcel->getActiveSheet()->setTitle('Simple');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// Save Excel 2007 file
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
// Save Excel 95 file
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save(str_replace('.php', '.xls', __FILE__));
5. Fonctionnalités principales :
● Gestion des méta-données (auteur, description, etc.)
● Gestion des sections avec paramétrage (orientation, taille de page,
numérotation, header & footer)
● Gestion de l'UTF-8 et des fonts asiatiques
● Styles personnalisées (polices, paragraphes)
● Gestion de :
● Paragraphes
● Titres
● Sommaire
● Retour à la ligne/page
● Images (local, distance) en image ou watermark
● Objets OLE (Excel, Visio,…)
● Listes
● Hyperliens
● Notes de bas de page/de fin
● Formes (arc, rectangle, etc.)
● Diagrammes
● Champs de formulaire
6. Formats Extensions Lecture Ecriture
MS Word 97+ .doc
✓
OpenXML : MS Word 2007+ .docx
✓ ✓
OpenDocument : LibreOffice .odt
✓ ✓
WordPad .rtf
✓ ✓
HTML .html, .htm
✓
PDF (tcPdf, domPDF, mPDF) .pdf
✓
7. $phpWord = new PhpOfficePhpWordPhpWord();
$phpWord->addFontStyle('rStyle', array('bold' => true, 'italic' => true, 'size' => 16, 'allCaps' => true, 'doubleStrikethrough' =>
true));
$phpWord->addParagraphStyle('pStyle', array('alignment' => 'center', 'spaceAfter' => 100));
$phpWord->addTitleStyle(1, array('bold' => true), array('spaceAfter' => 240));
// New portrait section
$section = $phpWord->addSection();
// Simple text
$section->addTitle(htmlspecialchars('Welcome to PhpWord', ENT_COMPAT, 'UTF-8'), 1);
$section->addText(htmlspecialchars('Hello World!', ENT_COMPAT, 'UTF-8'));
// Two text break
$section->addTextBreak(2);
// Defined style
$section->addText(htmlspecialchars('I am styled by a font style definition.', ENT_COMPAT, 'UTF-8'), 'rStyle');
$section->addText(htmlspecialchars('I am styled by a paragraph style definition.', ENT_COMPAT, 'UTF-8'), null, 'pStyle');
$section->addText(htmlspecialchars('I am styled by both font and paragraph style.', ENT_COMPAT, 'UTF-8'), 'rStyle', 'pStyle');
$section->addTextBreak();
// Inline font style
$fontStyle['name'] = 'Times New Roman';
$fontStyle['size'] = 20;
$textrun = $section->addTextRun();
$textrun->addText(htmlspecialchars('I am inline styled ', ENT_COMPAT, 'UTF-8'), $fontStyle);
$textrun->addText(htmlspecialchars('with ', ENT_COMPAT, 'UTF-8'));
$textrun->addText(htmlspecialchars('color', ENT_COMPAT, 'UTF-8'), array('color' => '996699'));
// Link
$section->addLink('https://github.com/PHPOffice/PHPWord', htmlspecialchars('PHPWord on GitHub', ENT_COMPAT, 'UTF-8'));
$section->addTextBreak();
// Image
$section->addImage('resources/_earth.jpg', array('width'=>18, 'height'=>18));
$phpWord->save('file.docx', 'Word2007');
8. Fonctionnalités principales :
● Gestion des méta-données (auteur, description, etc.)
● Gestion des slides avec paramétrage
● Gestion de l'UTF-8 et des fonts asiatiques
● Styles personnalisées (polices, paragraphes)
● Gestion de diagrammes
● Gestion des transitions
11. Fonctionnalités principales :
● Gestion des méta-données (auteur, description, etc.)
● Gestion des ressources
● Gestion des tâches
PHPProject
Formats Extensions Lecture Ecriture
MS Project Exchange .mpx
✓ ✓
GanttProject .gan
✓ ✓
HTML .html, .htm
✓
12. Fonctionnalités principales :
● Gestion des formes
● Gestion des connecteurs
PHPVisio
Formats Extensions Lecture Ecriture
Dia .dia
✓
Visio 97+ .vsd
✓
Visio 2007+ .vsdx
✓
13. Fonctionnalités principales :
● Gestion des bases de données, tables, colonnes et lignes
PHPAccess
Formats Extensions Lecture Ecriture
Access .mdb
✓
SQL .sql
✓
MySQL Workbench .mwb
✓
14. PHPOffice = Qualité
Documenté
Via ReadTheDocs.org
Et PHPDocumentor
Testé
Via Travis CI
Avec PHP_CodeSniffer
Avec PHP Mess Detector
Avec PHPUnit (> 80% de CC)
Fonctionnel
API