【问题标题】:Undesirable rounding off of numbers in generated PHPexcel生成的 PHPexcel 中不希望的数字四舍五入
【发布时间】:2017-05-06 15:24:45
【问题描述】:

我正在使用 phpexcel 从 mysql 数据库生成一个可下载的 excel 文件。其中,有一个18位数字的字段,在mysql中,它被定义为Bigint。该数字在代码中定义为超链接。现在,有以下问题 -

数字超链接的最后 4 位显示为 0000,尽管单击数字超链接时,它可以正确打开。示例860814069447613475在生成的excel中显示为860814069447610000

这是我的代码 -

$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++;
} 

【问题讨论】:

  • Excel 的精度为 15 位。如果您需要以更高的精度显示数字,则需要将它们作为文本存储在 Excel 中(并且在输入数字字符串之前必须将单元格格式化为文本)

标签: mysql excel phpexcel


【解决方案1】:

找到对我有用的代码 -

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

【讨论】:

    猜你喜欢
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多