You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.5 KiB
85 lines
2.5 KiB
<?php
|
|
require_once('../conn.php');
|
|
require dirname(dirname(dirname(__DIR__))) . '/common/composer/vendor/autoload.php';
|
|
header("Content-Type: application/json");
|
|
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
|
use PhpOffice\PhpSpreadsheet\Style\Fill;
|
|
|
|
//數字轉英文(0=>A、1=>B、26=>AA...以此類推)
|
|
function num2alpha($n)
|
|
{
|
|
for ($r = ""; $n >= 0; $n = intval($n / 26) - 1)
|
|
$r = chr($n % 26 + 0x41) . $r;
|
|
return $r;
|
|
}
|
|
|
|
//英文轉數字(A=>0、B=>1、AA=>26...以此類推)
|
|
function alpha2num($a)
|
|
{
|
|
$l = strlen($a);
|
|
$n = 0;
|
|
for ($i = 0; $i < $l; $i++)
|
|
$n = $n * 26 + ord($a[$i]) - 0x40;
|
|
return $n - 1;
|
|
}
|
|
|
|
try {
|
|
$create_at_start = isset($_REQUEST['create_at_start']) ? $_REQUEST['create_at_start'] : '';
|
|
$create_at_end = isset($_REQUEST['create_at_end']) ? $_REQUEST['create_at_end'] : '';
|
|
if (!empty($create_at_start) && !empty($create_at_end)) {
|
|
$sql_str = "SELECT *
|
|
FROM sanlien_log
|
|
WHERE SUBSTR(create_at, 1, 10)
|
|
BETWEEN :create_at_start AND :create_at_end
|
|
";
|
|
$stmt = $conn->prepare($sql_str);
|
|
$stmt->bindParam(':create_at_start', $create_at_start);
|
|
$stmt->bindParam(':create_at_end', $create_at_end);
|
|
} else {
|
|
$sql_str = "SELECT * FROM sanlien_log ";
|
|
$stmt = $conn->prepare($sql_str);
|
|
}
|
|
$stmt->execute();
|
|
|
|
$spreadsheet = new Spreadsheet();
|
|
$sheet = $spreadsheet->getActiveSheet();
|
|
$sheet->setTitle('三連地震數據');
|
|
|
|
// 設定標題
|
|
$colTitleArr = [];
|
|
for ($i = 0; $i < $stmt->columnCount(); $i++) {
|
|
$columnMeta = $stmt->getColumnMeta($i);
|
|
$colTitleArr[] = $columnMeta['name'];
|
|
}
|
|
// 標題寫入 excel 第一列
|
|
for ($i = 0; $i < count($colTitleArr); $i++)
|
|
$sheet->setCellValue(num2alpha($i) . '1', $colTitleArr[$i]);
|
|
|
|
// 設定內容
|
|
$data = $stmt->fetchAll(PDO::FETCH_NUM);
|
|
$i = 2;
|
|
foreach ($data as $row) {
|
|
for ($j = 0; $j < count($row); $j++) {
|
|
$sheet->setCellValue(num2alpha($j) . $i, $row[$j]);
|
|
}
|
|
$i++;
|
|
}
|
|
|
|
|
|
$writer = new Xlsx($spreadsheet);
|
|
$file_path = dirname(dirname(dirname(__DIR__))) . '/wms/excel/' . 'sanlien.xlsx';
|
|
|
|
$writer->save($file_path);
|
|
try {
|
|
$writer->save($file_path);
|
|
// 回傳檔案路徑給 JavaScript
|
|
echo json_encode(['data' => $file_path]);
|
|
} catch (Exception $e) {
|
|
echo 'Error: ' . $e->getMessage();
|
|
}
|
|
exit();
|
|
} catch (PDOException $e) {
|
|
die("ERROR!!!: " . $e->getMessage());
|
|
}
|
|
|