[ruby][php]Excel出力操作の方法
Excel出力が要件としてもとめられた、言語は問わない、WEBではなくバッチで。
という状態。せっかくなので、どっちも確認する。
①rubyでのExcel出力 spreadsheet
参考:http://qiita.com/satoken0417/items/bf302cc47e9bd69aaa73
こっちはxlsが前提の様子。(xlsxは別ライブラリで可能な模様。)
詳細は参考ページを見てもらうとして、
・newしてbook作成
・credteでworksheetを作って
・インスタンに下記のように値を追加
1 |
@sheet[1,1] = 100 |
とだけやればよいみたい。
だいぶ簡単。CSVより良いかもな。
②phpでのExcel出力 PHPExcel
参考サイト:http://mizyupon-rpg.com/posts/719.html
こっちはxlsxも可能。
下記からライブラリをダウンロードして
サーバー上の適当なところに配置。
※下記ソースはphpexcelフォルダ>PHPExcel.php となる構造
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php require 'phpexcel/PHPExcel.php'; //シートまで作成・取得 $book = new PHPExcel(); $sheet = $book->getActiveSheet(); //シートにデータセット //行(0start),列(1start) 値で設定 $sheet->setCellValueByColumnAndRow(0, 1, '値'); //これでA1にセット。 //セル名で設定 $sheet->setCellValue('A2' , '値'); //保存 $writer = PHPExcel_IOFactory::createWriter($book, 'Excel2007'); $writer->save('phptest.xlsx'); |
こんな感じ。
ちなみに、WEBで落とすなら、データセット後に下記のようにするで、良いらしい。
1 2 3 4 5 6 |
header('Content-Type: application/octet-stream'); //ダウンロードするファイル名を設定 header('Content-Disposition: attachment;filename="download_test.xlsx"'); $writer = PHPExcel_IOFactory::createWriter($book, "Excel2007");//EXCEL2007形式 $writer->save('php://output');//出力開始 |
ふむー
関連記事
-
-
phpでcURLのhttps接続時エラー
“TCP connection reset by pe …
-
-
phpでhtmlからタグ、スクリプトの除去
スクレイピング中に需要が。 simple_html_parserの「innert …
-
-
[Cake]CakePHPで意識の低いトランザクション commit rollback
cakeで複数のテーブルにまたがったトランザクション管理をしたい。 …
-
-
[php]ログインセッションの維持・有効期間について (session,cookie)
cookieとsessionファイルと、登場人物が複数いるので、どこに何を設定す …
-
-
[php]期間指定で月一覧、日付一覧のデータ取得
123456789101112131415161718192021222324#日付けで取得(yyyy-mm-dd)function get_period_date (){$startDate = date('Y-m-d', strtotime('2018-01-06'));$endDate = date('Y-m-d', strtotime("2018-01-09"));$diff = (strtotime($endDate) - strtotime($startDate)) / ( 60 * 60 * 24);for($i = 0; $i <= $diff; $i++) {$period[] = date('Y-m-d', strtotime($startDate . '+' . $i . 'days'));}return $period;}#月(yyyy-mm)で取得function get_period_month(){$startDate = date('Y-m-d', strtotime('2017-01-06'));$endDate = date('Y-m-d', strtotime("2018-01-09"));$diff = (strtotime($endDate) - strtotime($startDate)) / ( 60 * 60 * 24 * 30);for($i = 0; $i <= $diff; $i++) {$period[] = date('Y-m', strtotime($startDate . '+' . $i . 'month'));}return $period;}