【发布时间】:2015-03-05 05:35:50
【问题描述】:
嘿,我正在尝试将 Sqlsrv 数据库表导出到 excel,但当我没有导出 datetime 列时效果很好,但是一旦我这样做了,我就会收到此错误: 致命错误:无法在第 86 行的 C:\xampp\htdocs\PhpExport\src\PHPExcel\Cell\DefaultValueBinder.php 中将 DateTime 类型的对象用作数组
$sql = "SELECT * FROM ComSec_meeting ORDER BY submission_date";
$stmt = sqlsrv_query($conn, $sql);
try {
// Set value binder
PHPExcel_Cell::setValueBinder( new PHPExcel_Cell_AdvancedValueBinder() );
$sheet = new PHPExcel();
// Set metadata
$sheet->getProperties()->setCreator('Mozes')
->setLastModifiedBy('Mozes')
->setTitle('Try')
->setKeywords('Try');
// Set default settings
$sheet->getDefaultStyle()->getAlignment()->setVertical(
PHPExcel_Style_Alignment::VERTICAL_TOP);
$sheet->getDefaultStyle()->getAlignment()->setHorizontal(
PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$sheet->getDefaultStyle()->getFont()->setName('Lucida Sans Unicode');
$sheet->getDefaultStyle()->getFont()->setSize(12);
// Get reference to active spreadsheet in workbook
$sheet->setActiveSheetIndex(0);
$activeSheet = $sheet->getActiveSheet();
// Set print options
$activeSheet->getPageSetup()->setOrientation(
PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE)
->setFitToWidth(1)
->setFitToHeight(0);
$activeSheet->getHeaderFooter()->setOddHeader('&C&B&16' .
$sheet->getProperties()->getTitle())
->setOddFooter('&CPage &P of &N');
// Populate with data
$row = sqlsrv_fetch_array($stmt);
$colHeaders = array_keys($row);
$col = 'A';
$rownum = 1;
// Set column headings
foreach ($colHeaders as $header) {
$activeSheet->setCellValue($col . $rownum, $header);
$activeSheet->getStyle($col . $rownum)->getFont()->setBold(true);
$col++;
}
// Populate individual cells with data
do {
$col = 'A';
$rownum++;
foreach ($row as $value) {
$activeSheet->setCellValue($col++ . $rownum, $value);
}
} while ($row = sqlsrv_fetch_array($stmt));
// Format individual columns
$activeSheet->getStyle('E2:E' . $rownum)->getNumberFormat() ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH);
$activeSheet->getStyle('F2:F' . $rownum)->getNumberFormat() ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH);
// Give spreadsheet a title
$activeSheet->setTitle('Try');![enter image description here][1]
// Generate Excel file and download
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="TryOut.xlsx"');
header('Cache-Control: max-age=0');
$writer = PHPExcel_IOFactory::createWriter($sheet, 'Excel2007');
$writer->save('php://output');
} catch (Exception $e) {
$error = $e->getMessage();
}
【问题讨论】:
标签: php sql-server datetime phpexcel