PHP 구글 번역 API + PhpSpreadsheet 엑셀 파일 읽기 쓰기
2022. 4. 8. 17:09ㆍPHP
728x90
엑셀 파일을 읽어들이고 한줄 한줄 번역하는 프로그램
1. Composer 설치
PhpSpreadsheet 설치를 위해 필요
https://kor-karll.github.io/php/2019/08/12/PHP-CI-phpspreadsheet-install-copy/
2. curl 설치
https://kitae0522.tistory.com/entry/Windows-%EC%9C%88%EB%8F%84%EC%9A%B010%EC%97%90%EC%84%9C-curl-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95
3. 구글 API 키 발급
http://www.themango.co.kr/tmg/mall/admin/manual/manual.php?page=9_4_2
4. 프로그램 소스코드
<?
// Composer의 autoload.php를 사용
require_once('vendor/autoload.php');
/** 엑셀파일 읽기 */
$file = 'data1.xlsx';
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$spreadsheet = $reader->load($file);
$worksheet = $spreadsheet->getActiveSheet();
$string_arr = array();
/** 엑셀파일 row들을 $string_arr에 때려넣음 */
foreach ($worksheet->getRowIterator() as $row) {
$cell_iterator = $row->getCellIterator('B');
$cell_iterator->setIterateOnlyExistingCells(FALSE);
foreach ($cell_iterator as $cell) {
$cell_value = $cell->getValue();
array_push($string_arr, $cell_value);
}
}
$json_string_arr = json_encode($string_arr);
/** 구글 번역API */
$api = 'https://translation.googleapis.com/language/translate/v2';
$q = '数据'; // The input text to translate. 최대 128개의 문장을 array 형식으로 넣을 수 있음.
$q2 = $json_string_arr;
$target = 'en'; // input text
$format = 'text'; // The format of the source text
$source = 'zh-CN'; // The language of the source text
$model = 'base';
$key = '구글API Key 문자열';
$param = array(
// 'q' => $q,
// 'q' => "array(
// '收藏',
// '系统',
// )",
'q' => $json_string_arr,
'target' => $target,
'format' => $format,
'source' => $source,
'model' => $model,
'key' => $key,
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$res = curl_exec($ch);
$res_arr = json_decode($res);
$translated = $res_arr->data->translations[0]->translatedText; // 다수개의 문장일 경우 array('aa','bb','cc') 의 형태로 리턴됨
/** 엑셀파일 쓰기 */
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$writesheet = new Spreadsheet();
$sheet = $writesheet->getActiveSheet();
foreach ($translated as $k => $v) {
$sheet->setCellValue('A'.((int)$k+1), $v);
echo 'A'.((int)$k+1);
}
$writer = new Xlsx($writesheet);
$writer->save('output1.xlsx');
?>
728x90
반응형
'PHP' 카테고리의 다른 글
PHP Call by Value, Call by Reference (PHP 포인터) (0) | 2022.04.30 |
---|---|
PHP array_map, array_walk, foreach (0) | 2022.04.29 |
윈도우10 APM 설치 (0) | 2022.04.07 |
file_get_contents(): ssl: handshake timed out (0) | 2021.03.11 |
A non well formed numeric value encountered (0) | 2021.03.11 |