2015-01-20 9 views
6

मैं PHP का उपयोग कर एक्सेल फ़ाइल में छवियों का एक सेट लिखने के लिए PHPExcel का उपयोग कर रहा हूं। छवियों को सम्मिलित करना एक समस्या प्रतीत नहीं होता है, हालांकि मुझे छवि ऊंचाई से मेल खाने के लिए उपयुक्त पंक्ति ऊंचाई निर्धारित करने में कुछ कठिनाइयां हैं।PHPExcel: पिक्सेल में पंक्ति ऊंचाई सेट करें

मैं सही कॉलम चौड़ाई की गणना करने के लिए पिक्सेलटोकेलडिमेंशन का उपयोग करने में कामयाब रहा, लेकिन यह पंक्ति ऊंचाई की गणना के लिए उचित प्रतीत नहीं होता है। PHPExcel_Shared_Drawing क्लास के बाकी कार्यों को देखने के बाद और चारों ओर गुगलिंग के बाद, मुझे यह कैसे करना है, इस बारे में डंबफॉल्ड छोड़ दिया गया है।

मेरे कोड अब तक:

// Create new PHPExcel object 
$objPHPExcel = new PHPExcel(); 

// Set document properties 
$objPHPExcel->getProperties()->setCreator("creator") 
    ->setLastModifiedBy("modifiedby") 
    ->setTitle("Title") 
    ->setSubject("Subject") 
    ->setDescription("Description") 
    ->setKeywords("keyword1 keyword2") 
    ->setCategory("category"); 

// Get default font 
$defaultFont = $objPHPExcel->getDefaultStyle()->getFont(); 

[कुछ कोड अपनी छवियों पैदा करते हैं और एक सरणी के लिए उनके रास्ते जोड़ने के लिए]

foreach($filePaths as $i => $filePath) { 
    $objDrawing = new PHPExcel_Worksheet_Drawing(); 
    $objDrawing->setWorkSheet($objPHPExcel->getActiveSheet()); 
    $objDrawing->setName("name"); 
    $objDrawing->setDescription("Description"); 
    $objDrawing->setPath($filePath); 

    $size = getimagesize($filePath); 
    $columnWidth = PHPExcel_Shared_Drawing::pixelsToCellDimension($size[0], $defaultFont); 
    $rowHeight = PHPExcel_Shared_Drawing::pixelsToCellDimension($size[1], $defaultFont); 

    $objDrawing->setCoordinates('A' . ($i+1)); 
    $objDrawing->setOffsetX(0); 
    $objDrawing->setOffsetY(0); 

    // set row/column (cell) sizes to match image size 
    $objPHPExcel->getActiveSheet() 
     ->getColumnDimension('A') 
     ->setWidth($columnWidth); 
    $objPHPExcel->getActiveSheet() 
     ->getRowDimension($i+1) 
     ->setRowHeight($rowHeight); 
} 

// Rename worksheet 
$objPHPExcel->getActiveSheet()->setTitle('Worksheet 1'); 

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

// Redirect output to a client’s web browser (Excel5) 
header('Content-Type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment;filename="myMCS Scancode Export.xls"'); 
header('Cache-Control: max-age=0'); 

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
$objWriter->save('php://output'); 
exit; 

उत्तर

-1

मैं एक ही समस्या थी। यदि संभव हो, तो चित्र सेल में "\ n" टेक्स्ट शामिल करें। उदाहरण के लिए, 100px छवि ऊंचाई आकार के लिए सेल में 5 बार "\ n" => "\ n \ n \ n \ n \ n" सेल में जोड़ें।

$objPHPExcel->getActiveSheet()->setCellValue($colLetter.$idLine, "\n\n\n\n\n"); 

लेकिन यह मर्ज के कोशिकाओं के साथ नहीं काम करता है

मुझे आशा है कि यह आप

+0

के लिए इस्तेमाल किया pixelsToPoints क्या एक बहुत ही हैकी समाधान – DevDonkey

+0

हे हाँ! लेकिन मुझे कोई अन्य समाधान नहीं मिला, और यह काम करता है: पी – squaleXxi

1

में मदद मिलेगी मैं ऊंचाई

$default_font = $spreadsheet->getDefaultStyle()->getFont(); 
$image_height = imageSY($image); 
$image_width = imageSX($image); 
$image_height_pt = Drawing::pixelsToPoints($image_height); 
$image_width_pt = Drawing::pixelsToCellDimension($image_width,$default_font); 

$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\MemoryDrawing(); 
$drawing->setImageResource($image); 
$drawing->setRenderingFunction(\PhpOffice\PhpSpreadsheet\Worksheet\MemoryDrawing::RENDERING_JPEG); 
$drawing->setMimeType(\PhpOffice\PhpSpreadsheet\Worksheet\MemoryDrawing::MIMETYPE_DEFAULT);  
$drawing->setCoordinates($col.$row); 
$drawing->setHeight($image_height); 
$drawing->setWorksheet($spreadsheet->getActiveSheet()); 
$spreadsheet->getActiveSheet()->getRowDimension($row)->setRowHeight($image_height_pt); 
$spreadsheet->getActiveSheet()->getColumnDimension($col)->setWidth($image_width_pt); 

संस्करण 1.8.0

संबंधित मुद्दे