1

PHPExcelを使用してExcelシートを生成することになっている次のコードがありますが、問題は実行に永遠にかかることです。DoctrinePHPコードもいくつかあります。Doctrineコードはデータベースに接続し、Excelファイルにデータを入力するために使用するデータを選択します。以下はコードです。誰かが何が悪いのか教えてもらえますか




/** Error reporting */ error_reporting(E_ALL);

if (!isset($_SESSION)) { // session_name("mediapp123456"); session_start(); }

require_once ('bootstrap.php'); $conn = Doctrine_Manager::connection ( DSN );

$q = Doctrine_Query::create() ->select('u.*') ->from('UserQuestionnaire u') ->orderBy('u.id DESC'); $row = $q->execute();

date_default_timezone_set('Europe/London');

/** PHPExcel */ require_once 'excelreports/Classes/PHPExcel.php';

// Create new PHPExcel object echo date('H:i:s') . " Create new PHPExcel object\n"; $objPHPExcel = new PHPExcel();

// Set properties echo date('H:i:s') . " Set properties\n"; $objPHPExcel->getProperties()->setCreator("Ifeanyi Agu") ->setLastModifiedBy("Ifeanyi Agu") ->setTitle("QUSER") ->setSubject("QUSER") ->setDescription("QUser Generated Document") ->setKeywords("xml") ->setCategory("Test result file");

// Add some data echo date('H:i:s') . " Add some data\n";

$objPHPExcel->getActiveSheet()->mergeCells('B2:F2') ->mergeCells('G2:K2') ->setCellValue('I2', 'FEATURES') ->mergeCells('L2:AI2') ->setCellValue('W2', 'EXPECTATION') ->mergeCells('AJ2:BG2') ->setCellValue('AU2', 'PERCEPTION') ->mergeCells('L3:03') ->setCellValue('M', 'Tangible');

$objPHPExcel->getActiveSheet()->setCellValue('A4', 'No') ->setCellValue('B4', 'School') ->setCellValue('C4', 'Dept') ->setCellValue('D4', 'Status') ->setCellValue('E4', 'Browse') ->setCellValue('F4', 'How Long') ->setCellValue('G4', 'Tangibility') ->setCellValue('H4', 'Reliability') ->setCellValue('I4', 'Assurance') ->setCellValue('J4', 'Responsive') ->setCellValue('K4', 'Empathy') ->setCellValue('L4', 'E1') ->setCellValue('M4', 'E2') ->setCellValue('N4', 'E3') ->setCellValue('O4', 'E4') ->setCellValue('P4', 'E5') ->setCellValue('Q4', 'E6') ->setCellValue('R4', 'E7') ->setCellValue('S4', 'E8');

$i=4; foreach($row as $rows) { $i++;
$objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()->setCellValue('A'.$i, ($i-4)) ->setCellValue('B'.$i, $rows->schoolname) ->setCellValue('C'.$i, $rows->department) ->setCellValue('D'.$i, $rows->status) ->setCellValue('E'.$i, $rows->doyoubrowse) ->setCellValue('F'.$i, $rows->browselength);

}

// Set active sheet index to the first sheet, so Excel opens this as the first sheet $objPHPExcel->setActiveSheetIndex(0);

// Save Excel 2007 file echo date('H:i:s') . " Write to Excel2007 format\n"; $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save(str_replace('.php', '.xlsx', FILE));

// Echo memory peak usage echo date('H:i:s') . " Peak memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB\r\n";

// Echo done echo date('H:i:s') . " Done writing file.\r\n";

?>

4

1 に答える 1

0

明らかな可能性:

->mergeCells('L3:03')

これは03(数値ゼロ3)ではなくO3(列文字O、行3)である必要があると思われます

->setCellValue('M', 'Tangible'); 

いくつかの問題の原因である可能性があります'M'はセル参照ではなく列参照です

マージしてからマージされたセルの値を設定する場合は、範囲の中央のセルではなく、マージ範囲の左上のセルを設定することをお勧めします。例えば

->mergeCells('G2:K2')
->setCellValue('G2', 'FEATURES')

それよりも

->mergeCells('G2:K2')
->setCellValue('I2', 'FEATURES')
于 2011-03-22T15:13:36.953 に答える