キントーン(Kintone)アプリから帳票出⼒(Excel)

キントーン(Kintone)アプリからExcel出⼒できればいいよねってことで⼿順まとめ。
とは⾔ってもjQueryとかで直接Excelファイル作るのは厳しいので、キントーンの詳細画⾯からjQueryでjson形式(GET)で内容を別サーバーに送信して、
サーバー上でファイル⽣成してダウンロードさせるだけ。
GETで渡してるのでHTTPS等で暗号化してないと中⾝丸⾒えなのが懸念点。(社内のネットワークのみから使う分には問題ないと思うけど。)

⼿順1 とりあえずExcel出⼒⽤のボタン追加(JSファイルとして保存してKintoneアプリに追加)

事前準備としてフォームに「btnExcel」という要素IDのスペースを追加しておく必要があります。
Kintoneアプリ > メニューから「アプリの設定の変更」 > 設定タブ「JavaScript/CSSでカスタマイズ」からファイルアップロードできます。

 
(function () {
  "use strict";
 
  var events = [];
  var category = new Object();
 
  kintone.events.on('app.record.detail.show', function (event) {
 
    $("#user-js-btnExcel").html("<button id='btnExcelDownload'>Excel出⼒</button>");
    $("#btnExcelDownload").click(function(){
          var data = JSON.stringify(event.record);
          window.open('http://(サーバーアドレス)/excel.php?data='+data);
    });
 
    });
 
})();

⼿順2 Excel出⼒⽤の機能準備(PHPExcel使ってます。)

送信先のWebサーバー内に追加

<?php
//PHPExcelファイルの読み込み
require_once 'PHPExcel/Classes/PHPExcel.php';
require_once 'PHPExcel/Classes/PHPExcel/IOFactory.php';
 
$data = json_decode($_GET['data'],true);
 
// Excel97-2003形式(xls)テンプレートの読み込み
$reader = PHPExcel_IOFactory::createReader('Excel2007');
$reader->setIncludeCharts(TRUE);
$excel = $reader->load('PHPExcel/template.xlsx');
$excel->setActiveSheetIndex(0);   //?番最初のシートを選択
$sheet = $excel->getActiveSheet();
 
 
$sheet->setCellValue('D1',$data['FIELD1']['value']);
$sheet->setCellValue('B2',$data['FIELD2']['value']);
$sheet->setCellValue('B3',$data['FIELD3']['value']);
$sheet->setCellValue('L2',date("Y/m/d",strtotime($data['FIELD4']['value'])));
$sheet->setCellValue('C7',date("Y/m/d",strtotime($data['FIELD5']['value'])));
$sheet->setCellValue('C9',date("Y/m/d",strtotime($data['FIELD6']['value'])));
$sheet->setCellValue('C11',$data['FIELD7']['value']);
 
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment;filename="ExcelFile_'.date("YmdHis").'.xlsx"');
 
$writer = PHPExcel_IOFactory::createWriter($excel, "Excel2007");
$writer->save('php://output');//出力開始
>?>

⼿順3 作成されたExcel出⼒ボタンを押下

あとはExcelがダウンロードされるだけなので、それを利⽤するだけ。サーバー⽤意するのがめんどうだけど便利。
応⽤すればPDFでもスプレッドシートでもなんでもいけますよね。請求書とかいろんな申請書、依頼書にも。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする