Access and manipulate 'Microsoft Word' and 'Microsoft PowerPoint' documents from R. The package focuses on tabular and graphical reporting from R; it also provides two functions that let users get document content into data objects. A set of functions lets add and remove images, tables and paragraphs of text in new or existing documents. When working with 'PowerPoint' presentations, slides can be added or removed; shapes inside slides can also be added or removed. When working with 'Word' documents, a cursor can be used to help insert or delete content at a specific location in the document. The package does not require any installation of Microsoft products to be able to write Microsoft files.
The officer package lets R users manipulate Word (
.docx) and PowerPoint (
*.pptx) documents. In short, one can add images, tables and text into documents from R. An initial document can be provided; contents, styles and properties of the original document will then be available.
This package is close to ReporteRs as it produces Word and PowerPoint files but it is faster, do not require
xml2) and has less functions that will make it easier to maintain.
read_docx() function will read an initial Word document (an empty one by default) and let you modify its content later.
The package provides functions to add R outputs into a Word document:
In a Word document, one can use cursor functions to reach the beginning or end of a document, or a particular paragraph containing a given text. This cursor concept has been implemented to make the post processing of files easier.
File generation is performed with the
docx_summary() reads and imports content of a Word document into a tibble object. The function handles paragraphs, tables and section breaks.
read_pptx() will read an initial PowerPoint document (an empty one by default) and let you modify its content later.
The package provides functions to add R outputs into existing or new PowerPoint slides:
In a PowerPoint document, one can set a slide as selected and reach a particular shape (and remove it or add text).
ile generation is performed with the
pptx_summary() function reads and imports content of a PowerPoint document into a tibble object. The function handles paragraphs, tables and images.
The package flextable brings a full API to produce nice tables and use them with
officer. Tables can be written in PowerPoint documents and Word documents. An option is available to render flextables in rmarkdown (HTML and Word outputs).
The package rvg brings an API to produce nice vector graphics that can be embedded in PowerPoint documents or Excel workbooks with
The package mschart combined with
officer can produce native office charts in PowerPoint and Word documents.
You can get the development version from GitHub:
Or the latest version on CRAN:
The help pages are located at https://davidgohel.github.io/officer/.
This project is developped and maintained on my own time. In order to help me to maintain the package, do not send me private emails if you only have questions about how to use the package. Instead, visit Stackoverflow,
officer has its own tag Stackoverflow link! I usually read them and answer when possible.
Anyone getting involved in this package agrees to our Code of Conduct.
When you file a bug report, please spend some time making it easy for me to follow and reproduce. The more time you spend on making the bug report coherent, the more time I can dedicate to investigate the bug as opposed to the bug report.
A great way to start is to contribute an example or improve the documentation.
If you want to submit a Pull Request to integrate functions of yours, please provide:
By using rhub (run
rhub::check_for_cran()), you will see if everything is ok. When submitted, the PR will be evaluated automatically on travis and appveyor and you will be able to see if something broke.
body_replace_all_text()to replace any text in a Word document
ph_with_gg_at()to make easier production of ggplot objects in PowerPoint
ph_with_ul()to make easier production of unordered lists of text in PowerPoint
body_replace_atto replace text inside bookmark
layout_propertiesnow returns placeholder id when available.
ph_empty_atcan now make new shapes inherit properties from template
body_end_sectionis supposed to only work with cursor on a paragraph, an error is raised now if ending a section on something else than a paragraph.
pptx_summaryto import content of an Office document into a tidy data.frame.
docx_dim()is returning current page dimensions.
doc_propertiesto let you modify/access metadata of Word and PowerPoint documents.
slip_in*now will use docx default style if not specified
pptxhave been renamed
pptxto avoid conflict with package ReporteRs.