2011-06-07 7 views
5

मेरे पास PHPExcel के साथ एक एक्सेल फ़ाइल है जिसमें बाएं संरेखित लोगो के साथ एक शीर्षलेख है और दाएं संरेखित दिनांक & उपयोगकर्ता टेक्स्ट है। पहले पृष्ठ के लिए, मुझे एक समान शीर्षलेख चाहिए (एक ही लोगो और उसी दिनांक & उपयोगकर्ता पाठ) लेकिन कुछ अतिरिक्त जानकारी के साथ (फाइल के शीर्षक और पैरामीटर बाद में जोड़ों की लाइनों को केंद्रित करते हैं)।PHPExcel: पहले पृष्ठ शीर्षलेख में कोई छवि कैसे डालें और इसे अपनी सामग्री में फिट करने के लिए बढ़ाएं?

<?php 

    $sheet = $this->_spreadsheet->getActiveSheet(); //_spreadsheet is an instance of PHPExcel 

    $logo = new PHPExcel_Worksheet_HeaderFooterDrawing(); 
    $logo->setName('Logo'); 
    $logo->setPath(DOCUMENT_ROOT . '/public/logo.jpg'); //Path is OK & tested under PHP 
    $logo->setHeight(38); //If image is larger/smaller than that, image will be proportionally resized 
    $sheet->getHeaderFooter()->addImage($logo, PHPExcel_Worksheet_HeaderFooter::IMAGE_HEADER_LEFT); 

    $sheet->getHeaderFooter()->setOddHeader('&L&G&RExport date: ' . date('Y-m-d H:i:s') . "\n" . 'User: ' . $user->name); 

    if ($grid->getTitle() != '') { 
     $sheet->getHeaderFooter()->setDifferentFirst(true); 

     $sheet->getHeaderFooter()->addImage($logo, PHPExcel_Worksheet_HeaderFooter::IMAGE_HEADER_LEFT); 
     $sheet->getHeaderFooter()->setFirstHeader('&L&G&C&"-,Bold"' . "\n\n\n" . $grid->getTitle() . "\n" . $grid->getParameters() . '&RExport date: ' . date('Y-m-d H:i:s') . "\n" . 'User: ' . $user->name); 
    } 

?> 

"नियमित" शीर्षक, लोगो के लिए और पाठ सब वहाँ तो सब कुछ ठीक है है:

यह मैं अब तक क्या कर रहा है। पहले पृष्ठ शीर्षलेख के लिए मेरे पास 2 समस्याएं हैं:

  1. लोगो पहले पृष्ठ शीर्षलेख पर प्रदर्शित नहीं हो रहा है (लेकिन टेक्स्ट ठीक है)।
  2. चूंकि केंद्रित शीर्षक के बाद कुछ पाठ (गतिशील रूप से प्राप्त पैरामीटर) के साथ लोड किया जाएगा, मैं चाहता हूं कि पहले पृष्ठ शीर्षलेख को इसकी सामग्री को फिट करने के लिए खींचें।

मैं PHPExcel के साथ ऐसा कैसे कर सकता हूं?

उत्तर

2

मेरे पास कोई जवाब नहीं है कि लोगो पहले पृष्ठ शीर्षलेख पर क्यों नहीं दिख रहा है, लेकिन पृष्ठ मार्जिन को मैन्युअल रूप से बदलने के लिए आवश्यक सामग्री को फिट करने के लिए ऊंचाई को फैलाएं।

मुझे यकीन नहीं है कि ऐसा करने का सबसे अच्छा तरीका है, चाहे न्यूलाइन अक्षरों या क्या गिनती हो।

$headerHeight = ($imageHeight/72) + ($headerLineCount * $lineHeight); 
$objPHPExcel->getActiveSheet()->getPageMargins()->setHeader($margin); 
$objPHPExcel->getActiveSheet()->getPageMargins()->setTop($margin + $headerHeight); 

** "$ imageHeight/72" खंड कैसे इंच में अपनी छवि की स्क्रीन ऊंचाई रूपांतरित होने के लिए सिर्फ एक अनुमान है: लेकिन एक बार आप जानते हैं कि आप कितने लाइनों है, तो आप की तरह कुछ कर सकता है।