excelファイルをプログラムで出力しよう
TRANSCRIPT
![Page 1: excelファイルをプログラムで出力しよう](https://reader033.vdocuments.pub/reader033/viewer/2022042723/58ef02df1a28abfe108b4633/html5/thumbnails/1.jpg)
Excelファイルをプログラムで出力しよう2016.04.20 @yuji0602
![Page 2: excelファイルをプログラムで出力しよう](https://reader033.vdocuments.pub/reader033/viewer/2022042723/58ef02df1a28abfe108b4633/html5/thumbnails/2.jpg)
Agenda
• やろうと思ったきっかけ• PHPExcelとは• openPyXLとは• プログラムを比較してみよう• まとめ
![Page 3: excelファイルをプログラムで出力しよう](https://reader033.vdocuments.pub/reader033/viewer/2022042723/58ef02df1a28abfe108b4633/html5/thumbnails/3.jpg)
やろうと思ったきっかけ
![Page 4: excelファイルをプログラムで出力しよう](https://reader033.vdocuments.pub/reader033/viewer/2022042723/58ef02df1a28abfe108b4633/html5/thumbnails/4.jpg)
やろうと思ったきっかけ• 案件でレポートを Excelファイルでダウンロードする必要があった。• 外部スタッフとの共同開発に伴い、開発言語が PHPとなった。• それに伴い、 PHPで Excelファイルを出力する必要があった。• ただ、 PHPだけではなく pythonでも同じことが出来るのがわかったので今回の発表に至る
![Page 5: excelファイルをプログラムで出力しよう](https://reader033.vdocuments.pub/reader033/viewer/2022042723/58ef02df1a28abfe108b4633/html5/thumbnails/5.jpg)
PHPExcelとは
![Page 6: excelファイルをプログラムで出力しよう](https://reader033.vdocuments.pub/reader033/viewer/2022042723/58ef02df1a28abfe108b4633/html5/thumbnails/6.jpg)
PHPExcelとは• PHPで Excelファイルの新規作成、読み込み、書き込みができる• オープンソースソフトウェア( OSS)• ライセンスは GNU LESSER GENERAL PUBLIC
LICENSE( LGPL)• https://github.com/PHPOffice/PHPExcel
![Page 7: excelファイルをプログラムで出力しよう](https://reader033.vdocuments.pub/reader033/viewer/2022042723/58ef02df1a28abfe108b4633/html5/thumbnails/7.jpg)
openPyXLとは
![Page 8: excelファイルをプログラムで出力しよう](https://reader033.vdocuments.pub/reader033/viewer/2022042723/58ef02df1a28abfe108b4633/html5/thumbnails/8.jpg)
openPyXLとは• pythonで Excelファイルの新規作成、読み込み、書き込みができる• PHPExcelを基に作られている• こちらも OSS• ライセンスはMIT License• https://bitbucket.org/openpyxl/openpyxl
![Page 9: excelファイルをプログラムで出力しよう](https://reader033.vdocuments.pub/reader033/viewer/2022042723/58ef02df1a28abfe108b4633/html5/thumbnails/9.jpg)
プログラムを比較してみよう
![Page 10: excelファイルをプログラムで出力しよう](https://reader033.vdocuments.pub/reader033/viewer/2022042723/58ef02df1a28abfe108b4633/html5/thumbnails/10.jpg)
プログラムを比較してみよう• 簡単にプログラムを書いてみました。
• https://github.com/yuji0602/phpExcelStudy
• https://github.com/yuji0602/openPyXLStudy
• バージョンは以下で行いました。• PHP 5.6.12
• python 3.4.3
![Page 11: excelファイルをプログラムで出力しよう](https://reader033.vdocuments.pub/reader033/viewer/2022042723/58ef02df1a28abfe108b4633/html5/thumbnails/11.jpg)
プログラムを比較してみよう• PHPExcelは、 composerを利用してインストールします。
$ vim composer.json{ "require": { "phpoffice/phpexcel": "~1.8.0" }}: wq$ composer install
![Page 12: excelファイルをプログラムで出力しよう](https://reader033.vdocuments.pub/reader033/viewer/2022042723/58ef02df1a28abfe108b4633/html5/thumbnails/12.jpg)
プログラムを比較してみよう• openPyXLは、 pipを利用してインストールします。
$ pip install openpyxl
![Page 13: excelファイルをプログラムで出力しよう](https://reader033.vdocuments.pub/reader033/viewer/2022042723/58ef02df1a28abfe108b4633/html5/thumbnails/13.jpg)
プログラムを比較してみよう• 簡単な使い方
PHPExcel openPyXLワークブック作成 $excel = new PHPExcel(); wb = openpyxl.Workbook()
アクティブなシートを取得 $sheet = $excel->getActiveSheet(); ws = wb.active
シートのタイトル設定 $sheet->setTitle('Test'); ws.title = 'Test'
表示幅の設定 $sheet->getColumnDimension('A')->setWidth(13); ws.column_dimensions['A'].width = 13
セルに文字を出力 $sheet->setCellValue('A1', '=ROW()-1'); ws.cell(row=1, column=1).value = '=ROW()-1'
ファイル保存$writer = PHPExcel_IOFactory::createWriter($excel, 'Excel2007');$writer->save('output.xlsx');
wb.save(filename='output.xlsx')
![Page 14: excelファイルをプログラムで出力しよう](https://reader033.vdocuments.pub/reader033/viewer/2022042723/58ef02df1a28abfe108b4633/html5/thumbnails/14.jpg)
プログラムを比較してみよう• その他に以下のことが可能
• セルの色を変更• 条件式の設定• チャートを表示
![Page 15: excelファイルをプログラムで出力しよう](https://reader033.vdocuments.pub/reader033/viewer/2022042723/58ef02df1a28abfe108b4633/html5/thumbnails/15.jpg)
まとめ
![Page 16: excelファイルをプログラムで出力しよう](https://reader033.vdocuments.pub/reader033/viewer/2022042723/58ef02df1a28abfe108b4633/html5/thumbnails/16.jpg)
まとめ• PHPや pythonで同じように Excelファイルを作成できる• 利用シーンに応じて使い分けすることが出来る• どちらもオープンソースなので不具合とか改善点を見つけたら修正していきたいところ
![Page 17: excelファイルをプログラムで出力しよう](https://reader033.vdocuments.pub/reader033/viewer/2022042723/58ef02df1a28abfe108b4633/html5/thumbnails/17.jpg)
おわり