मेरे पास निम्न कोड है जो PHPExcel का उपयोग करके मेरे लिए एक्सेल शीट उत्पन्न करना है लेकिन समस्या यह है कि इसे चलाने में हमेशा के लिए लगता है। मेरे पास कुछ सिद्धांत PHP कोड भी है। सिद्धांत कोड डीबी से जुड़ता है और उस डेटा को चुनता है जिसे मैं एक्सेल फ़ाइल को पॉप्युलेट करने के लिए उपयोग करना चाहता हूं। नीचे कोड है। कृपया कोई मुझे बता सकता है कि क्या गलत है




/** 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";

?>

1
Yanki Twizzy 22 मार्च 2011, 14:35
कुछ और विवरण मदद कर सकते हैं... क्या आपने अपनी डीबी क्वेरी को प्रोफाइल करने का प्रयास किया है? निष्पादित करने में कितना समय लगता है? आपको कितनी पंक्तियों को प्रिंट करना है? "हमेशा के लिए" से आपका क्या मतलब है? 20 सेकंड या 5 मिनट?
 – 
Raveline
22 मार्च 2011, 14:49
हमेशा के लिए मेरा मतलब है कि यह निष्पादन समय समाप्त होने तक चलता रहता है। मुझे अधिकतम निष्पादन समय 6000 तक बढ़ाना पड़ा लेकिन यह अभी भी मेरी समस्या का समाधान नहीं करता है। समस्या डीबी क्वेरी से नहीं है। मैंने देखा कि जब मैं उन पंक्तियों पर टिप्पणी करता हूं जिनमें मर्जसेल होते हैं, तो सोचते हैं बेहतर
 – 
Yanki Twizzy
22 मार्च 2011, 15:11

1 उत्तर

सबसे बढ़िया उत्तर

स्पष्ट संभावनाएं:

->mergeCells('L3:03')

संदेह है कि यह 03 (संख्यात्मक शून्य तीन) के बजाय O3 (स्तंभ अक्षर O, पंक्ति तीन) होना चाहिए

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

कुछ समस्याओं का कारण हो सकता है 'एम' सेल संदर्भ के बजाय एक कॉलम संदर्भ है

मर्ज करते समय और फिर मर्ज किए गए सेल के लिए मान सेट करते समय, मर्ज रेंज के ऊपरी-बाएँ सेल को रेंज के मध्य के लिए सेल के बजाय सेट करना बेहतर होता है। जैसे

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

इसके बजाय

->mergeCells('G2:K2')
->setCellValue('I2', 'FEATURES')
0
Mark Baker 22 मार्च 2011, 18:13