2017-05-06 1 views
1

Ich erzeuge eine herunterladbare Excel-Datei von mysql-Datenbank mit phpexcel. In diesem gibt es ein Feld mit einer 18-stelligen Zahl, die in der Mysql als Bigint definiert ist. Die Nummer ist im Code als Hyperlink definiert. Nun gibt es das folgende Problem -Unerwünschte Abrundung von Zahlen in generiertem PHPexcel

Die letzten 4 Ziffern der Nummer Hyperlink werden als 0000 angezeigt, obwohl beim Klicken auf die Nummer Hyperlink, es richtig geöffnet wird. Beispiel 860814069447613475 wird als 860814069447610000 in der erzeugten Excel

gezeigt Hier ist mein Code -

$objPHPExcel->getActiveSheet() 
    ->getStyle('A'.(string)$n) 
    ->getNumberFormat() 
    ->setFormatCode(
     PHPExcel_Style_NumberFormat::FORMAT_NUMBER 
    ); 

$n = 2; 

while ($row = mysqli_fetch_array($result)){ 
    $objPHPExcel->getActiveSheet()->setCellValue('A'.(string)$n, 
$row['t_id']); 
    $objPHPExcel->getActiveSheet()->setCellValue('B'.(string)$n, 
$row['t_text']); 
    $objPHPExcel->getActiveSheet()->setCellValue('C'.(string)$n, 
$row['user_name']); 
    $objPHPExcel->getActiveSheet()->setCellValue('D'.(string)$n, 
$row['description']); 
    $objPHPExcel->getActiveSheet()->setCellValue('E'.(string)$n 
,$row['time']); 
    $objPHPExcel->getActiveSheet()->setCellValue('F'.(string)$n, 
$row['place']); 
    $objPHPExcel->getActiveSheet()->getStyle("A$n:F$n")->getAlignment()- 
>setWrapText(true); 


$objPHPExcel->getActiveSheet() 
    ->getCell('A'.(string)$n) 
    ->getHyperlink() 
    ->setUrl('http://t.com/'.$row['user_name'].'/status/' . $row['t_id']); 

    // Config 
$link_style_array = [ 
    'font' => [ 
    'color' => ['rgb' => '0000FF'], 
    'underline' => 'single' 
    ] 
]; 

// Set it! 
$objPHPExcel->getActiveSheet()->getStyle('A'.(string)$n)->applyFromArray($link_style_array); 
    $n++; 
} 
+1

Excel Genauigkeit beträgt 15 Ziffern. Wenn Sie Ziffern mit einem höheren Genauigkeitsgrad anzeigen müssen, müssen Sie sie in Excel als Text speichern (und die Zelle muss als Text formatiert sein, bevor Sie die Ziffernfolge eingeben). –

Antwort

2

gefunden Code, der für mich gearbeitet -

setCellValueExplicit('A'.(string)$n, $row['t_id'], 
PHPExcel_Cell_DataType::TYPE_STRING);