2015-10-01 50 views
2

當格式的日期格式的一些列時使用PHPExcel劇本我我有日期格式的問題我如何使用PHPExcel腳本

我從WPDB查詢生成XLSX文件驗證碼:

<?php 
# Load slim WP 
define('WP_USE_THEMES', false); 
require('./wp-load.php'); 
# http://phpexcel.codeplex.com/ 
require_once dirname(__FILE__) . '/Classes/PHPExcel.php'; 
global $wpdb; 
$query = "Select 
    tsales_funnel.ID As ID, 
    wp_users.display_name As Darijuma_vaditajs, 
    tcportal_starpnieks.Cp_Name As Starpnieks, 
    tcportal_stucture.Cp_Name As OWCA, 
    n_products.Product_Nos As Produkts, 
    tsales_funnel_mrecord.Product_type as Produkta_kods, 
    tsales_funnel.Sanems_date as Saņēmšanas_datums, 
    tsales_funnel_mrecord.Deadline As Deadline, 
    n_sf_statusi.nosaukums_lv As Statuss, 
    tsales_funnel_clients.Reg_nr As Klienta_Regnr, 
    tfirmas_reg.name_in_quotes As Klients, 
    tsales_funnel_mrecord.Faze_date as Faze_date, 
    n_sf_fazes.nosaukums_lv As Faze, 
    tsales_funnel_mrecord.Summa As Apdrošīnājuma_summa, 
    tsales_funnel_mrecord.Vien_skaits As TRL_skaits, 
    tsales_funnel_mrecord.Compensa_cena, 
    tsales_funnel_mrecord.Tirgus_cena, 
    wp_users02.display_name As Riska_parakstitajs, 
    comm.Comment as Aizveršanas_komentārs 
From 
    tsales_funnel Left Join 
    tsales_funnel_mrecord On tsales_funnel.ID = tsales_funnel_mrecord.Funnel_ID 
    Left Join 
    tcportal_starpnieks On tcportal_starpnieks.Cp_code = tsales_funnel.Starpnieks 
    Left Join 
    tcportal_stucture On tcportal_stucture.Cp_code = tsales_funnel.OWCA Left Join 
    tsales_funnel_clients On tsales_funnel_clients.Funnel_ID = tsales_funnel.ID 
    Left Join 
    tfirmas_reg On tfirmas_reg.regcode = tsales_funnel_clients.Reg_nr Left Join 
    wp_users On tsales_funnel.Darijuma_vaditajs = wp_users.user_login Left Join 
    n_sf_statusi On n_sf_statusi.id = tsales_funnel.Statuss 
    Left Join n_sf_fazes on tsales_funnel_mrecord.Product_faze = n_sf_fazes.id 
    Left Join 
    n_products On tsales_funnel_mrecord.Product_type = n_products.Product_Code 
    Left Join 
    (SELECT * FROM tsales_funnel_comments WHERE Comm_type = 4) as comm On tsales_funnel.ID = comm.Funnel_ID 
    Left Join 
    wp_users As wp_users02 
    On wp_users02.user_login = tsales_funnel_mrecord.Risk_acceptance 
WHERE 
tsales_funnel_clients.Tips_Galvenais = 1 
"; 
$error = "Error: the query failed... 
    <pre style='width:700px;word-wrap:break-word;white-space:normal;'>$query</pre>"; 
$result = $wpdb->get_results($query, ARRAY_A) or wp_die($error); 
$objPHPExcel = new PHPExcel(); 
$objPHPExcel->getProperties() 
     ->setCreator("user") 
      ->setLastModifiedBy("user") 
     ->setTitle("Office 2007 XLSX Test Document") 
     ->setSubject("Office 2007 XLSX Test Document") 
     ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") 
     ->setKeywords("office 2007 openxml php") 
     ->setCategory("Test result file"); 
// Set the active Excel worksheet to sheet 0 
$objPHPExcel->setActiveSheetIndex(0); 
// Initialise the Excel row number 
$rowCount = 0; 
// Sheet cells 
$cell_definition = array(
    'A' => 'ID', 
    'B' => 'Darijuma_vaditajs', 
    'C' => 'Starpnieks', 
    'D' => 'OWCA', 
    'E' => 'Produkts', 
    'F' => 'Produkta_kods', 
    'G' => 'Saņēmšanas_datums', 
    'H' => 'Deadline', 
    'I' => 'Statuss', 
    'J' => 'Klienta_Regnr', 
    'K' => 'Klients', 
    'L' => 'Faze_date', 
    'M' => 'Faze', 
    'N' => 'Apdrošīnājuma_summa', 
    'O' => 'TRL_skaits', 
    'P' => 'Compensa_cena', 
    'Q' => 'Tirgus_cena', 
    'R' => 'Riska_parakstitajs', 
    'S' => 'Aizveršanas_komentārs' 
); 
// Build headers 
foreach($cell_definition as $column => $value) 
    $objPHPExcel->getActiveSheet()->setCellValue("{$column}1", $value); 
// Build cells 
while($rowCount < count($result)){ 
    $cell = $rowCount + 2; 
    foreach($cell_definition as $column => $value) 
     $objPHPExcel->getActiveSheet()->setCellValue($column.$cell, $result[$rowCount][$value]); 

    $rowCount++; 
} 
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 
header('Content-Disposition: attachment;filename="iPortal_Atskaite_'.date('Y-m-d_H.i.s', strtotime('+3 hour')).'.xlsx"'); 
header('Cache-Control: max-age=0'); 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
$objWriter->save('php://output'); 
exit; 

我收到日期列作爲YY-MM-DD,Excel不支持。 但我需要爲:

'G' => 'Saņēmšanas_datums', 

格式(YYYY.MM.DD)喜歡的:2015年12月31日

併爲:

'H' => 'Deadline', and 'L' => 'Faze_date', 

我需要的日期格式(YYYY.MM.DD HH:MM:SS)Like 2015.12.31 15:31:22

我該怎麼做?我試圖找到在互聯網上的東西,但沒有找到。

+1

爲什麼檢查「互聯網」時,你可以看看PHP文檔? http://php.net/date和http://php.net/strtotime –

+0

正如你可以在輸出文件名中看到的,我知道那些函數。問題是,我不明白如何爲輸出數據列添加不同的格式(生成xlsx文件時) – AlexIL

回答

1

就拿你是從數據庫中獲取的YY-MM-DD日期,並將其轉換爲一個PHP DateTime對象

$dateTimeObject = DateTime::createFromFormat('y-m-d', <date value from database row>, new DateTimeZone('UTC')); 

然後再轉換到MS Excel的系列化時間戳

$excelDate = PHPExcel_Shared_Date::PHPToExcel($dateTimeObject); 

最後,將該值寫入單元格,併爲該單元格設置格式掩碼

$objPHPExcel->getActiveSheet() 
    ->setCellValue(<cell address>, $excelDate); 
$objPHPExcel->getActiveSheet() 
    ->getStyle(<cell address>) 
    ->getNumberFormat() 
    ->setFormatCode('yyyy.mm.dd'); 

類似的日期/時間值