解決 PHPExcel 長數字串顯示爲科學計數php
在excel中若是在一個默認的格中輸入或複製超長數字字符串,它會顯示爲科學計算法,例如身份證號碼,解決方法是把表格設置文本格式或在輸入前加一個單引號。算法
使用PHPExcel來生成excel,也會遇到一樣的問題,解決方法有三種:
一、設置單元格爲文本excel
$objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()->setTitle('Simple'); //設置A3單元格爲文本 $objPHPExcel->getActiveSheet()->getStyle('A3')->getNumberFormat() ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT); //也能夠設置整行或整列的style /* //E 列爲文本 $objPHPExcel->getActiveSheet()->getStyle('E')->getNumberFormat() ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT); //第三行爲文本 $objPHPExcel->getActiveSheet()->getStyle('3')->getNumberFormat() ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT); */
更多的格式能夠在PHPExcel/Style/NumberFormat.php中找到。注意:上述的設置對長數字字符串仍是以文本方式來顯示科學計數法的結果,緣由可能php在處理大數字時採用的科學計數法。
二、在設置值的時候顯示的指定數據類型orm
$objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()->setTitle('Simple'); $objPHPExcel->getActiveSheet()->setCellValueExplicit('D1', 123456789033, PHPExcel_Cell_DataType::TYPE_STRING);
三、在數字字符串前加一個空格使之成爲字符串ci
$objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()->setTitle('Simple'); $objPHPExcel->getActiveSheet()->setCellValue('D1', ' ' . 123456789033);
推薦使用第2、三種,第一種沒有根本解決問題。字符串
=====================================================================================================get
以上內容爲轉載,我的補充以下:it
第一種方法中不起做用,如今要這樣設置才起做用:數據類型
$objPHPExcel->getActiveSheet()->getStyle('S'.$i)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);方法
可是用這種方法,若是數字長度超過15位,則15爲以後的都會變成0,緣由以下:
excel最多支持的數值型數據的長度是15位。當數據長度到過15位時,從第16位開始,後面的數字所有被默認修改成0。