SlideShare una empresa de Scribd logo
1 de 15
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)
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
● ...
Formats Extensions Lecture Ecriture
BIFF(5-8) : MS Excel 95+ .xls, .xlt
✓ ✓
SpreadSheetML : MS Excel 2003 .xml
✓
OpenXML : MS Excel 2007+ .xlsx
✓ ✓
OpenDocument : LibreOffice .ods
✓
GNumeric .gnumeric
✓
SYLK .slk
✓
HTML .htm, .html
✓ ✓
CSV .csv
✓ ✓
PDF (tcPdf, domPDF, mPDF) .pdf
✓
// 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__));
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
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
✓
$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');
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
Formats Extensions Lecture Ecriture
MS PowerPoint 97+ .ppt
✓
OpenXML : MS PowerPoint 2007+ .pptx
✓
OpenDocument : LibreOffice .odp
✓
$objPHPPowerPoint = new PhpPowerpoint();
// Set properties
$objPHPPowerPoint->getProperties()->setCreator('PHPOffice')
->setLastModifiedBy('PHPPowerPoint Team')
->setTitle('Sample 01 Title')
->setSubject('Sample 01 Subject')
->setDescription('Sample 01 Description')
->setKeywords('office 2007 openxml libreoffice odt php')
->setCategory('Sample Category');
// Create slide
$currentSlide = $objPHPPowerPoint->getActiveSlide();
// Create a shape (drawing)
$shape = $currentSlide->createDrawingShape();
$shape->setName('PHPPowerPoint logo')
->setPath('./resources/phppowerpoint_logo.gif')
->setHeight(36)
->setOffsetX(10)
->setOffsetY(10);
$shape->getShadow()->setVisible(true)->setDirection(45)->setDistance(10);
// Create a shape (text)
$shape = $currentSlide->createRichTextShape()
->setHeight(300)
->setWidth(600)
->setOffsetX(170)
->setOffsetY(180);
$shape->getActiveParagraph()->getAlignment()->setHorizontal( Alignment::HORIZONTAL_CENTER );
$textRun = $shape->createTextRun('Thank you for using PHPPowerPoint!');
$textRun->getFont()->setBold(true)
->setSize(60)
->setColor( new Color( 'FFE06B20' ) );
$objPHPPowerPoint->save('file.pptx', 'PowerPoint2007');
$objPHPPowerPoint->save('file.odp', 'ODPresentation');
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
✓
Fonctionnalités principales :
● Gestion des formes
● Gestion des connecteurs
PHPVisio
Formats Extensions Lecture Ecriture
Dia .dia
✓
Visio 97+ .vsd
✓
Visio 2007+ .vsdx
✓
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
✓
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
Présentation PHPOffice

Más contenido relacionado

La actualidad más candente

Normes de base du Web GTI780 & MTI780 ETS A09
Normes de base du Web  GTI780 & MTI780  ETS   A09Normes de base du Web  GTI780 & MTI780  ETS   A09
Normes de base du Web GTI780 & MTI780 ETS A09Claude Coulombe
 
HTML5 & CSS3
HTML5 & CSS3HTML5 & CSS3
HTML5 & CSS3JDerrien
 
Présentation complète de l'HTML5
Présentation complète de l'HTML5Présentation complète de l'HTML5
Présentation complète de l'HTML5jverrecchia
 
Formation MySQL Workbench
Formation MySQL WorkbenchFormation MySQL Workbench
Formation MySQL WorkbenchIsenDev
 
18 02-2015 atelier-pratique-xml-tei-stage-d-ecdotique-2015
18 02-2015 atelier-pratique-xml-tei-stage-d-ecdotique-201518 02-2015 atelier-pratique-xml-tei-stage-d-ecdotique-2015
18 02-2015 atelier-pratique-xml-tei-stage-d-ecdotique-2015Emmanuelle Morlock
 
Cours CSS feuilles de style en cascade- mars 2015
Cours CSS feuilles de style en cascade- mars 2015Cours CSS feuilles de style en cascade- mars 2015
Cours CSS feuilles de style en cascade- mars 2015Abdoulaye Dieng
 
IPW 2eme course - HTML
IPW 2eme course - HTMLIPW 2eme course - HTML
IPW 2eme course - HTMLVlad Posea
 
Interrogation des données
Interrogation des donnéesInterrogation des données
Interrogation des donnéesMusatge
 
2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen
2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen
2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygenEmmanuelle Morlock
 
Les balises HTML
Les balises HTMLLes balises HTML
Les balises HTMLNeovov
 
Odoo Formation Administration Serveur V8
Odoo Formation Administration Serveur V8Odoo Formation Administration Serveur V8
Odoo Formation Administration Serveur V8Africa Performances
 

La actualidad más candente (20)

Normes de base du Web GTI780 & MTI780 ETS A09
Normes de base du Web  GTI780 & MTI780  ETS   A09Normes de base du Web  GTI780 & MTI780  ETS   A09
Normes de base du Web GTI780 & MTI780 ETS A09
 
Tutorial html
Tutorial htmlTutorial html
Tutorial html
 
HTML5 & CSS3
HTML5 & CSS3HTML5 & CSS3
HTML5 & CSS3
 
Cours HTML/CSS
Cours HTML/CSSCours HTML/CSS
Cours HTML/CSS
 
Présentation complète de l'HTML5
Présentation complète de l'HTML5Présentation complète de l'HTML5
Présentation complète de l'HTML5
 
Les base du Html5
Les base du Html5Les base du Html5
Les base du Html5
 
Formation MySQL Workbench
Formation MySQL WorkbenchFormation MySQL Workbench
Formation MySQL Workbench
 
18 02-2015 atelier-pratique-xml-tei-stage-d-ecdotique-2015
18 02-2015 atelier-pratique-xml-tei-stage-d-ecdotique-201518 02-2015 atelier-pratique-xml-tei-stage-d-ecdotique-2015
18 02-2015 atelier-pratique-xml-tei-stage-d-ecdotique-2015
 
Cours CSS feuilles de style en cascade- mars 2015
Cours CSS feuilles de style en cascade- mars 2015Cours CSS feuilles de style en cascade- mars 2015
Cours CSS feuilles de style en cascade- mars 2015
 
IPW 2eme course - HTML
IPW 2eme course - HTMLIPW 2eme course - HTML
IPW 2eme course - HTML
 
Interrogation des données
Interrogation des donnéesInterrogation des données
Interrogation des données
 
cours Php
cours Phpcours Php
cours Php
 
HTML & CSS
HTML & CSSHTML & CSS
HTML & CSS
 
Introduction à XML
Introduction à XMLIntroduction à XML
Introduction à XML
 
2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen
2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen
2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen
 
C5 Javascript
C5 JavascriptC5 Javascript
C5 Javascript
 
Initiation au html
Initiation au htmlInitiation au html
Initiation au html
 
HTML
HTMLHTML
HTML
 
Les balises HTML
Les balises HTMLLes balises HTML
Les balises HTML
 
Odoo Formation Administration Serveur V8
Odoo Formation Administration Serveur V8Odoo Formation Administration Serveur V8
Odoo Formation Administration Serveur V8
 

Destacado

What is PHPOffice?
What is PHPOffice?What is PHPOffice?
What is PHPOffice?Mark Baker
 
Creating hypermedia APIs in a few minutes using the API Platform framework
Creating hypermedia APIs in a few minutes using the API Platform frameworkCreating hypermedia APIs in a few minutes using the API Platform framework
Creating hypermedia APIs in a few minutes using the API Platform frameworkLes-Tilleuls.coop
 
MySQL Day Paris 2016 - State Of The Dolphin
MySQL Day Paris 2016 - State Of The DolphinMySQL Day Paris 2016 - State Of The Dolphin
MySQL Day Paris 2016 - State Of The DolphinOlivier DASINI
 
MySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeurs
MySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeursMySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeurs
MySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeursFrederic Descamps
 
MySQL Day Paris 2016 - MySQL as a Document Store
MySQL Day Paris 2016 - MySQL as a Document StoreMySQL Day Paris 2016 - MySQL as a Document Store
MySQL Day Paris 2016 - MySQL as a Document StoreOlivier DASINI
 
Haute disponibilité my sql avec group réplication
Haute disponibilité my sql avec group réplicationHaute disponibilité my sql avec group réplication
Haute disponibilité my sql avec group réplicationFrederic Descamps
 
MySQL Day Paris 2016 - MySQL Enterprise Edition
MySQL Day Paris 2016 - MySQL Enterprise EditionMySQL Day Paris 2016 - MySQL Enterprise Edition
MySQL Day Paris 2016 - MySQL Enterprise EditionOlivier DASINI
 
MySQL Day Paris 2016 - MySQL HA: InnoDB Cluster and NDB Cluster
MySQL Day Paris 2016 - MySQL HA: InnoDB Cluster and NDB ClusterMySQL Day Paris 2016 - MySQL HA: InnoDB Cluster and NDB Cluster
MySQL Day Paris 2016 - MySQL HA: InnoDB Cluster and NDB ClusterOlivier DASINI
 
MySQL Cloud Service Deep Dive
MySQL Cloud Service Deep DiveMySQL Cloud Service Deep Dive
MySQL Cloud Service Deep DiveMorgan Tocker
 
MySQL High Availability -- InnoDB Clusters
MySQL High Availability -- InnoDB ClustersMySQL High Availability -- InnoDB Clusters
MySQL High Availability -- InnoDB ClustersMatt Lord
 
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud Service
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud ServiceMySQL Day Paris 2016 - Introducing Oracle MySQL Cloud Service
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud ServiceOlivier DASINI
 
Solution de transfert mobile - Formats d'échange
Solution de transfert mobile - Formats d'échangeSolution de transfert mobile - Formats d'échange
Solution de transfert mobile - Formats d'échangeOCTO Technology
 
La qualité, un choix personnel ou imposé - Passionate People
La qualité, un choix personnel ou imposé - Passionate PeopleLa qualité, un choix personnel ou imposé - Passionate People
La qualité, un choix personnel ou imposé - Passionate PeoplePatrice Roulive
 
Prezentare Forum Francofonie Banica Victoria
Prezentare Forum Francofonie Banica VictoriaPrezentare Forum Francofonie Banica Victoria
Prezentare Forum Francofonie Banica Victoriaguest58a9f1
 
Bruno Jacques
Bruno JacquesBruno Jacques
Bruno Jacquesmic666
 
Mon pays africain: kénia
Mon pays africain: kéniaMon pays africain: kénia
Mon pays africain: kéniaainhoasp
 
Profiter de la turbulence pour accélérer sa croissance
Profiter de la turbulence pour accélérer sa croissanceProfiter de la turbulence pour accélérer sa croissance
Profiter de la turbulence pour accélérer sa croissanceGroupe Dancause
 
Communiqué de Presse Incarose - Juin 2010
Communiqué de Presse Incarose - Juin 2010Communiqué de Presse Incarose - Juin 2010
Communiqué de Presse Incarose - Juin 2010pbcom1998
 

Destacado (20)

What is PHPOffice?
What is PHPOffice?What is PHPOffice?
What is PHPOffice?
 
Creating hypermedia APIs in a few minutes using the API Platform framework
Creating hypermedia APIs in a few minutes using the API Platform frameworkCreating hypermedia APIs in a few minutes using the API Platform framework
Creating hypermedia APIs in a few minutes using the API Platform framework
 
MySQL Day Paris 2016 - State Of The Dolphin
MySQL Day Paris 2016 - State Of The DolphinMySQL Day Paris 2016 - State Of The Dolphin
MySQL Day Paris 2016 - State Of The Dolphin
 
MySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeurs
MySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeursMySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeurs
MySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeurs
 
MySQL Day Paris 2016 - MySQL as a Document Store
MySQL Day Paris 2016 - MySQL as a Document StoreMySQL Day Paris 2016 - MySQL as a Document Store
MySQL Day Paris 2016 - MySQL as a Document Store
 
Haute disponibilité my sql avec group réplication
Haute disponibilité my sql avec group réplicationHaute disponibilité my sql avec group réplication
Haute disponibilité my sql avec group réplication
 
MySQL Day Paris 2016 - MySQL Enterprise Edition
MySQL Day Paris 2016 - MySQL Enterprise EditionMySQL Day Paris 2016 - MySQL Enterprise Edition
MySQL Day Paris 2016 - MySQL Enterprise Edition
 
MySQL Day Paris 2016 - MySQL HA: InnoDB Cluster and NDB Cluster
MySQL Day Paris 2016 - MySQL HA: InnoDB Cluster and NDB ClusterMySQL Day Paris 2016 - MySQL HA: InnoDB Cluster and NDB Cluster
MySQL Day Paris 2016 - MySQL HA: InnoDB Cluster and NDB Cluster
 
MySQL Cloud Service Deep Dive
MySQL Cloud Service Deep DiveMySQL Cloud Service Deep Dive
MySQL Cloud Service Deep Dive
 
MySQL High Availability -- InnoDB Clusters
MySQL High Availability -- InnoDB ClustersMySQL High Availability -- InnoDB Clusters
MySQL High Availability -- InnoDB Clusters
 
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud Service
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud ServiceMySQL Day Paris 2016 - Introducing Oracle MySQL Cloud Service
MySQL Day Paris 2016 - Introducing Oracle MySQL Cloud Service
 
Solution de transfert mobile - Formats d'échange
Solution de transfert mobile - Formats d'échangeSolution de transfert mobile - Formats d'échange
Solution de transfert mobile - Formats d'échange
 
La qualité, un choix personnel ou imposé - Passionate People
La qualité, un choix personnel ou imposé - Passionate PeopleLa qualité, un choix personnel ou imposé - Passionate People
La qualité, un choix personnel ou imposé - Passionate People
 
Prezentare Forum Francofonie Banica Victoria
Prezentare Forum Francofonie Banica VictoriaPrezentare Forum Francofonie Banica Victoria
Prezentare Forum Francofonie Banica Victoria
 
Bruno Jacques
Bruno JacquesBruno Jacques
Bruno Jacques
 
Uso óptimo de Moodle
Uso óptimo de MoodleUso óptimo de Moodle
Uso óptimo de Moodle
 
Mon pays africain: kénia
Mon pays africain: kéniaMon pays africain: kénia
Mon pays africain: kénia
 
Profiter de la turbulence pour accélérer sa croissance
Profiter de la turbulence pour accélérer sa croissanceProfiter de la turbulence pour accélérer sa croissance
Profiter de la turbulence pour accélérer sa croissance
 
Parcours1 gm
Parcours1 gmParcours1 gm
Parcours1 gm
 
Communiqué de Presse Incarose - Juin 2010
Communiqué de Presse Incarose - Juin 2010Communiqué de Presse Incarose - Juin 2010
Communiqué de Presse Incarose - Juin 2010
 

Similar a Présentation PHPOffice

Développement Web
Développement WebDéveloppement Web
Développement Webmastertic
 
Développement Web
Développement WebDéveloppement Web
Développement Webmastertic
 
[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...
[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...
[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...Clément OUDOT
 
Globekid NeoDoc Presentation Bookcamp
Globekid NeoDoc Presentation BookcampGlobekid NeoDoc Presentation Bookcamp
Globekid NeoDoc Presentation Bookcampguest41b263
 
Panels, une autre façon de construire. DrupalCamp Paris 2013
Panels, une autre façon de construire. DrupalCamp Paris 2013Panels, une autre façon de construire. DrupalCamp Paris 2013
Panels, une autre façon de construire. DrupalCamp Paris 2013bellesmanieres
 
Rmll2010 Html5 Css3
Rmll2010 Html5 Css3Rmll2010 Html5 Css3
Rmll2010 Html5 Css3Fnot
 
Structurer ses travaux SAS à l'aide de pages HTML, Joël Rivest
Structurer ses travaux SAS à l'aide de  pages HTML, Joël RivestStructurer ses travaux SAS à l'aide de  pages HTML, Joël Rivest
Structurer ses travaux SAS à l'aide de pages HTML, Joël Rivestsasreference
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSHoracio Gonzalez
 
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1Horacio Gonzalez
 
Chapitre 1_HTML_complet_version1.pdf
Chapitre 1_HTML_complet_version1.pdfChapitre 1_HTML_complet_version1.pdf
Chapitre 1_HTML_complet_version1.pdfYassineZARIOUH
 
HTML 5 et CSS3, créez, animez et enrichissez vos sites Web
HTML 5 et CSS3, créez, animez et enrichissez vos sites WebHTML 5 et CSS3, créez, animez et enrichissez vos sites Web
HTML 5 et CSS3, créez, animez et enrichissez vos sites WebMicrosoft
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JSENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JSHoracio Gonzalez
 
Cours Introduction a la programmation Web ISI Ettaieb Abdessattar Chapitre 6
Cours Introduction a la programmation Web ISI Ettaieb Abdessattar Chapitre 6Cours Introduction a la programmation Web ISI Ettaieb Abdessattar Chapitre 6
Cours Introduction a la programmation Web ISI Ettaieb Abdessattar Chapitre 6Abdessattar Ettaieb
 
Internationalisation du Front
Internationalisation du FrontInternationalisation du Front
Internationalisation du FrontYannick Croissant
 

Similar a Présentation PHPOffice (20)

Développement Web
Développement WebDéveloppement Web
Développement Web
 
Développement Web
Développement WebDéveloppement Web
Développement Web
 
Atelier template
Atelier templateAtelier template
Atelier template
 
[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...
[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...
[RMLL2017] Templer, Git, Bootstrap, PHP : des outils libres pour concevoir le...
 
Globekid NeoDoc Presentation Bookcamp
Globekid NeoDoc Presentation BookcampGlobekid NeoDoc Presentation Bookcamp
Globekid NeoDoc Presentation Bookcamp
 
Panels, une autre façon de construire. DrupalCamp Paris 2013
Panels, une autre façon de construire. DrupalCamp Paris 2013Panels, une autre façon de construire. DrupalCamp Paris 2013
Panels, une autre façon de construire. DrupalCamp Paris 2013
 
Rmll2010 Html5 Css3
Rmll2010 Html5 Css3Rmll2010 Html5 Css3
Rmll2010 Html5 Css3
 
Structurer ses travaux SAS à l'aide de pages HTML, Joël Rivest
Structurer ses travaux SAS à l'aide de  pages HTML, Joël RivestStructurer ses travaux SAS à l'aide de  pages HTML, Joël Rivest
Structurer ses travaux SAS à l'aide de pages HTML, Joël Rivest
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
 
Cours Php
Cours PhpCours Php
Cours Php
 
Cours Php
Cours PhpCours Php
Cours Php
 
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
 
Chapitre 1_HTML_complet_version1.pdf
Chapitre 1_HTML_complet_version1.pdfChapitre 1_HTML_complet_version1.pdf
Chapitre 1_HTML_complet_version1.pdf
 
HTML 5 et CSS3, créez, animez et enrichissez vos sites Web
HTML 5 et CSS3, créez, animez et enrichissez vos sites WebHTML 5 et CSS3, créez, animez et enrichissez vos sites Web
HTML 5 et CSS3, créez, animez et enrichissez vos sites Web
 
Atelier initiation au html5
Atelier initiation au html5Atelier initiation au html5
Atelier initiation au html5
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JSENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
 
JasperReport
JasperReportJasperReport
JasperReport
 
Cours Introduction a la programmation Web ISI Ettaieb Abdessattar Chapitre 6
Cours Introduction a la programmation Web ISI Ettaieb Abdessattar Chapitre 6Cours Introduction a la programmation Web ISI Ettaieb Abdessattar Chapitre 6
Cours Introduction a la programmation Web ISI Ettaieb Abdessattar Chapitre 6
 
Html css-xhtml
Html css-xhtmlHtml css-xhtml
Html css-xhtml
 
Internationalisation du Front
Internationalisation du FrontInternationalisation du Front
Internationalisation du Front
 

Présentation PHPOffice

  • 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 ● ...
  • 3. Formats Extensions Lecture Ecriture BIFF(5-8) : MS Excel 95+ .xls, .xlt ✓ ✓ SpreadSheetML : MS Excel 2003 .xml ✓ OpenXML : MS Excel 2007+ .xlsx ✓ ✓ OpenDocument : LibreOffice .ods ✓ GNumeric .gnumeric ✓ SYLK .slk ✓ HTML .htm, .html ✓ ✓ CSV .csv ✓ ✓ PDF (tcPdf, domPDF, mPDF) .pdf ✓
  • 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
  • 9. Formats Extensions Lecture Ecriture MS PowerPoint 97+ .ppt ✓ OpenXML : MS PowerPoint 2007+ .pptx ✓ OpenDocument : LibreOffice .odp ✓
  • 10. $objPHPPowerPoint = new PhpPowerpoint(); // Set properties $objPHPPowerPoint->getProperties()->setCreator('PHPOffice') ->setLastModifiedBy('PHPPowerPoint Team') ->setTitle('Sample 01 Title') ->setSubject('Sample 01 Subject') ->setDescription('Sample 01 Description') ->setKeywords('office 2007 openxml libreoffice odt php') ->setCategory('Sample Category'); // Create slide $currentSlide = $objPHPPowerPoint->getActiveSlide(); // Create a shape (drawing) $shape = $currentSlide->createDrawingShape(); $shape->setName('PHPPowerPoint logo') ->setPath('./resources/phppowerpoint_logo.gif') ->setHeight(36) ->setOffsetX(10) ->setOffsetY(10); $shape->getShadow()->setVisible(true)->setDirection(45)->setDistance(10); // Create a shape (text) $shape = $currentSlide->createRichTextShape() ->setHeight(300) ->setWidth(600) ->setOffsetX(170) ->setOffsetY(180); $shape->getActiveParagraph()->getAlignment()->setHorizontal( Alignment::HORIZONTAL_CENTER ); $textRun = $shape->createTextRun('Thank you for using PHPPowerPoint!'); $textRun->getFont()->setBold(true) ->setSize(60) ->setColor( new Color( 'FFE06B20' ) ); $objPHPPowerPoint->save('file.pptx', 'PowerPoint2007'); $objPHPPowerPoint->save('file.odp', 'ODPresentation');
  • 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