reportgen
===========

Release v0.1.1

*reportgen* is a Python library for creating and updating analysis report.

Release History
------------------

0.1.0(2017-11-18)

- Create.

0.1.1(2017-11-19)

- fix some bug.

Feature Support
------------------

**reportgen** has the following capabilities, with many more on the roadmap:

- get all the texts in the pptx file
- get all the images in the pptx file
- add one slide simply about charts/tables/images with pandas in a pptx file
- add slides simply about charts/tables/images with pandas in a pptx file

Quick Start
------------

1. Get texts or images in a pptx file.

::

  import reportgen as rpt
  # Open a pptx file
  p=rpt.Report('analysis.pptx')
  # We can get the texts and images simply.
  result=p.get_texts()
  print('\n'.join(result))
  # All the images will saved in folder '.\\images\\'.
  p.get_images()

2. Created a analysis report.

::

  import reportgen as rpt
	import pandas as pd
	# Open a pptx file
	p=rpt.Report('template.pptx')# The parameters can be defaulted
	# add a cover
	p.add_cover(title='A analysis report powered by reportgen')
	# add a chart slide
	data=pd.DataFrame({'Jack':[90,80,100],'David':[100,70,85]},index=['Math','English','Physics'])
	p.add_slide(data={'data':data,'slide_type':'chart','type':'COLUMN_CLUSTERED'},\
	title='the scores report',summary='Our class got excellent results',footnote='This is a footnote.')
  # add a table slide
	data=pd.DataFrame({'Jack':[90,80,100],'David':[100,70,85]},index=['Math','English','Physics'])
	p.add_slide(data={'data':data,'slide_type':'table'},title='the scores report',summary='Our class got excellent results',footnote='This is a footnote.')
	# add a textbox slide
	data='This a paragraph. \n'*4
	p.add_slide(data={'data':data,'slide_type':'textbox'},title='This is a textbox slide',summary='',footnote='')
	# add a picture slide
	data='.\\images\\images.png'
	p.add_slide(data={'data':data,'slide_type':'picture'},title='This is a picture slide')
  p.save('analysis report.pptx')




In general, I divide a slide of analysis report into four parts: title、summary、footnote and the body data. And the body are one or more charts/textboxs/tables/pictures.

The *add_slide* which is the most commonly used function  has the following parameters:

::

  add_slide(data=[{'data':,'slide_type':,'type':},],title='',summary='',footnote='',layouts='auto')

For example, we can draw a chart on the left side, and insert a picture on the right.

::

  import reportgen as rpt
  import pandas as pd
  p=rpt.Report()
  scores=pd.DataFrame({'Jack':[90,80,100],'David':[100,70,85]},index=['Math','English','Physics'])
  data=[{'data':scores,'slide_type':'chart','type':'COLUMN_CLUSTERED'},\
  {'data':'.\\images2.jpg','slide_type':'picture'}]
  p.add_slide(data=data)
  p.save('add_slide.pptx')

As a lazy person, I also provide a solution with less scripts.

::

  import reportgen as rpt
  p=rpt.Report()
  imgs=['.\\images\\'+img for img in os.listdir('.\\images\\')]
  p.add_slides(data=imgs)
  # more functions way
  slides_data=[{'title':'ppt{}'.format(i),'data':data} for i in range(10)]
  p.add.slides(slides_data)
  p.save('add_slides.pptx')


TO DO
-------

- support export analysis report to html
- make the chart_type recommend more intelligence
