Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- git 연동
- katalon 자동화
- katalon 사용법
- katalon xpath
- recursion example
- oracle group by
- 피보나치함수 예제
- 최대공약수 예제
- 한국투자증권 양도세 신고
- katalon 비교
- js 자동완성
- 피보나치함수
- javascript 자동완성
- 테스트 자동화
- 주식 양도세 신고방법
- 재귀 예제
- 국세청 해외주식 양도세 신고방식
- 재귀함수 예제
- 해외주식 양도세 신고
- 해외증권 양도세 한국투자증권
- 홈택스 해외주식 양도세
- CSTS 폭포수 모델
- Katalon Recorder 사용법
- 피보나치 예제
- java.sql.SQLSyntaxErrorException
- 한국투자증권 해외주식 양도세
- tomcat log
- katalon
- 톰캣 실시간 로그
- bfs 미로탐색 java
Archives
- Today
- Total
엄지월드
PHP를 이용하여 Dialogflow의 json 파일을 export해서 Excel로 저장하기 본문
PHP를 이용하여 Dialogflow의 json 파일을 export해서 Excel로 저장하기 예제입니다.
약간의 하자가 있지만.. 흐름만 익히시고 업무에 도움 되시길 바랍니다^^
저는 이정도만 돼도 잘 사용하고 있네요~
(3번 순서까지 가면 예제 파일이 같이 첨부되어 있습니다)
1. Dialogflow에서 intent를 json 파일로 export 합니다.
2. 압축을 풀고, Intent 파일 안에 있는 json으로 변환된 질문 POOL들을 폴더 안에 몰아넣습니다.
3. 코드 예제 파일입니다.
저는 Autoset으로 서버를 구축하고,
http://127.0.0.1/temp/dialogflowExport.php 링크로 접속해서 작동을 확인하였습니다.
PHP 알고리즘 요약
1) 폴더에 있는 json 파일명을 모두 읽어온다.
2) json 파일을 읽으면서 엑셀에 저장한다.
3) 엑셀을 다운로드 한다.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php include './../PHPExcel-1.8/Classes/PHPExcel.php'; // 엑셀 라이브러리 import ?>
<?php
// 파읽을 읽을 폴더 위치 지정
$dir = "./dialogflowIntent/";
// 핸들 획득
$handle = opendir($dir);
$files = array();
// 디렉터리에 포함된 파일을 저장한다.
while (false !== ($filename = readdir($handle))) {
if($filename == "." || $filename == ".."){
continue;
}
// 파일인 경우만 목록에 추가한다.
if(is_file($dir . "/" . $filename)){
$files[] = $filename;
}
}
// 핸들 해제
closedir($handle);
// 정렬, 역순으로 정렬하려면 rsort 사용
sort($files);
// 파일명을 출력한다.
// foreach ($files as $f) {
// echo $f;
// echo "<br />";
// }
?>
<?php
ini_set('memory_limit','-1');
set_time_limit(10000); //
//다운로드 시 파일명 설정
$fileName = 'excelTemp';
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
// Set document properties
$objPHPExcel->getProperties()->setCreator("Me")->setLastModifiedBy("Me")->setTitle("My Excel Sheet")->setSubject("My Excel Sheet")->setDescription("Excel Sheet")->setKeywords("Excel Sheet")->setCategory("Me");
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// 첫번째 행의 값 넣기
$objPHPExcel->getActiveSheet()
->setCellValue('A1', 'id')
->setCellValue('B1', 'name')
->setCellValue('C1', 'speech')
;
$ii = 2; // 2번째 행부터 입력
foreach ($files as $f) {
// echo $f;
$searchName = "usersays_ko"; // json 파일마다 형식이 다르기 때문에 이름 별로 구분해준다.
$searchName1 = "- yes.json";
$searchName2 = "- no.json";
if( strpos($f, $searchName ) !== false){
// echo $f;
$arr = json_decode(file_get_contents("./dialogflowIntent/".$f), true);
$aaaa = array();
foreach ($arr as $f){
// echo $f["data"][0]["text"]."<br/>";
array_push($aaaa, $f["data"][0]["text"]); // 이상하게 0번 배열이 아닌 1번 배열을 넣으면 에러가 난다.
}
if(strcmp($aaaa[0], "네") && strcmp($aaaa[0], "아니오")){
$objPHPExcel->getActiveSheet()->setCellValue('D'.$ii, $aaaa[0]);
$ii++;
}
}else{
if( strpos($f, $searchName1 ) != true){
if( strpos($f, $searchName2 ) != true){
$arr = json_decode(file_get_contents("./dialogflowIntent/".$f), true);
$objPHPExcel->getActiveSheet()->setCellValue('A'.$ii, $arr["id"]);
$objPHPExcel->getActiveSheet()->setCellValue('B'.$ii, $arr["name"]);
$objPHPExcel->getActiveSheet()->setCellValue('C'.$ii, $arr["responses"][0]["messages"][0]["speech"]);
}
}
}
}
// Set worksheet title
$objPHPExcel->getActiveSheet()->setTitle($fileName);
//save the file to the server (Excel2007)
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('.\\' . $fileName . '.xlsx'); // 저장될 파일 위치
// 파일 다운로드 구현
function mb_basename($path) { return end(explode('/',$path)); }
function utf2euc($str) { return iconv("UTF-8","cp949//IGNORE", $str); }
function is_ie() {
if(!isset($_SERVER['HTTP_USER_AGENT']))return false;
if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) return true; // IE8
if(strpos($_SERVER['HTTP_USER_AGENT'], 'Windows NT 6.1') !== false) return true; // IE11
return false;
}
$filepath = '.\excelTemp.xlsx';
$filesize = filesize($filepath);
$filename = mb_basename($filepath);
if( is_ie() ) $filename = utf2euc($filename);
header("Pragma: public");
header("Expires: 0");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $filesize");
ob_clean();
flush();
readfile($filepath);
// unlink('.\excelTemp.xlsx') // 생성된 excel 파일 삭제
?>
</body>
'PHP' 카테고리의 다른 글
(PHP) 시간, 날짜 비교하기 (0) | 2020.04.26 |
---|---|
(PHP) POST 요청을 보내기 위해 Rest API를 활용하기 (1) | 2020.04.26 |
php select box 동적 구성하기 (0) | 2019.07.21 |
PHP DB 원격 접속 방법 (0) | 2019.05.08 |
PHP SQL Injection 방지 방법 (0) | 2019.03.18 |
Comments