1
我有PHPExcel功能的问题,这是我的代码:日期和使用日期时间函数PHPExcel在Excel中写为文本
<?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){
switch($column) {
case 'G';
case 'H';
$val = '=DATEVALUE("'.date('Y.m.d',strtotime($result[$rowCount][$value])).'")';
$objPHPExcel->getActiveSheet()->setCellValue($column.$cell, $val);
break;
case 'L';
$val = date('Y.m.d H:i:s',strtotime($result[$rowCount][$value]));
$objPHPExcel->getActiveSheet()->getStyle($column.$cell)
->getNumberFormat()
->setFormatCode("yyyy.mm.dd h:mm");
$objPHPExcel->getActiveSheet()->setCellValue($column.$cell, $val);
break;
default;
$val = $result[$rowCount][$value];
$objPHPExcel->getActiveSheet()->setCellValue($column.$cell, $val);
}
}
$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;
我使用的开关列,其中我需要一个不同的单元格的格式。
列G和H我需要格式2015.10.05(yyyy.mm.dd)并且列L 2015.10.05 12:03(yyyy.mm.dd H:i)。
函数getStyle()不起作用,并返回相同的值。如果输出为= datevalue,这是excel函数,一切正常,但它不适用于时间。
此外,如果我在Excel中按编辑单元格,然后按回车键,该日期转换为正常的日期为Excel和所有工作正常。
所以,问题是输出格式。我怎样才能定义它?对于其他列,例如数字,一切正常。
它在该列的所有单元格中返回:“FALSE”。 :( – AlexIL
它返回false?$ result [$ rowCount] [$ value])''的值是什么? 'PHPToExcel()'方法应该与DateTime对象,unix时间戳(如果该值是一个整数)或strtotime()识别的每个日期格式一起使用,如果该值是一个字符串的话。如果它没有抱怨你的'$ val = date('Ymd H:i:s',strtotime($ result [$ rowCount] [$ value]));'并且返回一个实际的日期字符串,那么'PHPToExcel ()'应该能够处理它,当使用'echo $ result [$ rowCount] [$ value]时它没有问题 –
'它会返回格式:2015-10-01 12:01:52。试图使用:'$ val = date('Y.m.d H:i:s',strtotime($ result [$ rowCount] [$ value])); $ dateVal = PHPExcel_Shared_Date :: PHPToExcel($ val);'也是同样的问题 – AlexIL