PHP 利用PHPExcel處處數據到Excel;還有導出數據亂碼的解決方案。

直接貼代碼吧php

PHP版本5.6.38mysql

mysql版本5.0sql

//鏈接數據庫
$mysql_server_name = "*.*.*.*";
$mysql_username="user";
$mysql_password="dbpasswd";
$mysql_database="test";
$conn = mysqli_connect($mysql_server_name,$mysql_username,$mysql_password,$mysql_database);
// 檢測鏈接
if ($conn->connect_error) {
    die("鏈接失敗: " . $conn->connect_error);
}
//設置字符集,若是不設置的話中文可能會亂碼
$conn->query("set names utf8");

//查詢數據
$sql = "SELECT * FROM testdata WHERE  inserttime > '2019-09-13' AND inserttime <'2019-0916'";
$result = $conn->query($sql);
//遍歷將數據放入數組中
$data =array();
while ($row = $result->fetch_assoc())
{
    $data[] = $row;
}

//將查詢出來的數據導入Excel中
require_once('./PHPExcel/PHPExcel.php');
// 建立Excel文件對象
$objPHPExcel = new PHPExcel();
// 設置文檔信息,這個文檔信息windows系統能夠右鍵文件屬性查看
$objPHPExcel->getProperties()->setCreator("wnn")
    ->setLastModifiedBy("wnn")
    ->setTitle("原創文章連接");
$objPHPExcel->setActiveSheetIndex(0)
    ->setCellValue('A1','文章ID')
    ->setCellValue('B1','標題')
    ->setCellValue('C1','連接')
    ->setCellValue('D1','做者')
    ->setCellValue('E1','發佈時間');

//設置excel表單根據內容大小變化
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setAutoSize(true);

//$i=1是標題行
$i=2;
foreach ($data as $k=>$v){
    $objPHPExcel->setActiveSheetIndex(0)
        ->setCellValue('A'.$i,$v['id'])
        ->setCellValue('B'.$i,$v['title'])
        ->setCellValue('C'.$i,$v['arcurl'])
        ->setCellValue('D'.$i,$v['writer'])
        ->setCellValue('E'.$i,$v['senddate']);
   //給C列的文字加上連接
    $objPHPExcel->getActiveSheet()->getCell('C'.$i)->getHyperlink()->setUrl($v['arcurl']);
    $i++;
}

//給C列的超連接字體顏色變成藍色
$length = count($data)+1;
$objPHPExcel->getActiveSheet()->getStyle( 'C2:C'.$length)->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_BLUE);

//文件名稱
$filename=urlencode('原創做品').'_'.date('YmdHis');

//生成xls文件
ob_end_clean();//清除緩衝區,避免亂碼
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$filename.'.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');

 

若是導出來的Excel文字都是亂碼的話,必定要在header()前面加上ob_end_clean()!數據庫

還有不少關於Excel樣式的一些設置,你們能夠上網查一下相關的資料~windows

相關文章
相關標籤/搜索