2015-01-20 11 views
6

Sto utilizzando PHPExcel per scrivere un set di immagini in un file Excel utilizzando PHP. L'inserimento delle immagini non sembra essere un problema, tuttavia ho qualche difficoltà nell'impostare l'altezza della riga appropriata per abbinare l'altezza dell'immagine.PHPExcel: imposta l'altezza della riga in pixel

Sono riuscito a utilizzare pixelsToCellDimension per calcolare la larghezza della colonna corretta, ma questo non sembra essere appropriato per il calcolo dell'altezza della riga. Dopo aver controllato il resto delle funzioni nella classe PHPExcel_Shared_Drawing e Googling in giro, sono rimasto interdetto su come farlo.

Il mio codice finora:

// 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(); 

[po 'di codice per generare le mie immagini e aggiungere i loro percorsi in un array]

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; 

risposta

-1

Ho avuto lo stesso problema. Se possibile, includere il testo "\ n" nella cella dell'immagine. Ad esempio, aggiungi alla cella 5 volte "\ n" => "\ n \ n \ n \ n \ n" per un'altezza dell'immagine di 100px.

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

Ma non funziona con le cellule Unisce

Spero che vi aiuterà a

+0

che soluzione terribilmente hacky – DevDonkey

+0

hehe sì! Ma non ho trovato alcuna altra soluzione, e funziona: p – squaleXxi

1

ho usato pixelsToPoints per l'altezza

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

Versione 1.8.0

Problemi correlati