在excel中如果在一個預設的格中輸入或複製超長數字字串,它會顯示為科學計演算法,例如社會安全號碼碼,解決方案是把表格設定文字格式設定或在輸入前加一個單引號。
使用PHPExcel來產生excel,也會遇到同樣的問題,解決方案有三種:
1、設定儲存格為文本
$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在處理大數字時採用的科學計數法。
2、在設定值的時候顯示的指定資料類型
$objPHPExcel = new PHPExcel();$objPHPExcel->setActiveSheetIndex(0);$objPHPExcel->getActiveSheet()->setTitle('Simple');$objPHPExcel->getActiveSheet()->setCellValueExplicit('D1', 123456789033, PHPExcel_Cell_DataType::TYPE_STRING);
3、在數字字串前加一個空格使之成為字串
$objPHPExcel = new PHPExcel();$objPHPExcel->setActiveSheetIndex(0);$objPHPExcel->getActiveSheet()->setTitle('Simple');$objPHPExcel->getActiveSheet()->setCellValue('D1', ' ' . 123456789033);
推薦使用第二、三種,第一種沒有根本解決問題。