2015-01-07 3 views
0

안녕하세요, datetime 열을 내보낼 때 Excel 데이터를 내보내려고합니다.이 오류가 발생합니다. 치명적인 오류 : 개체를 사용할 수 없습니다. 유형 C에서 날짜 시간의 배열로서 : \ XAMPP \ htdocs를 \ PhpExport \ SRC \ 라인 PHPExcel \ 셀 \의 DefaultValueBinder.php 86Sqlsrv 데이터베이스 테이블을 Excel 작업으로 내보내는 중 오류가 발생했습니다.

$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(); 
} 

답변

0

셀에 그 값을 설정하기 전에 PHPExcel_Shared_Date::PHPToExcel()를 사용하여 MS 엑셀 시리얼 날짜 값 (당신이 열 EF에 설정하는 값) 데이터베이스 결과 집합에서 날짜 값을 변환

foreach ($row as $value) { 
    if ($value instanceof DateTime) { 
     // Convert DateTime values to MS Excel serialized timestamps 
     $value = PHPExcel_Shared_Date::PHPToExcel($value); 
    } 
    $activeSheet->setCellValue($col++ . $rownum, $value); 
} 
+0

난 당신의 코드에이 표현할 수하고자하는 마크가 마법처럼 일 – user2245190

+0

감사합니다 ........ 당신은 최고 !!!!!!!!있어 바랍니다 – user2245190

관련 문제