phpexcel导入excel表格,导入后自动为科学计数法5.1115E+14

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了phpexcel导入excel表格,导入后自动为科学计数法5.1115E+14相关的知识,希望对你有一定的参考价值。

phpexcel导入excel表格,表格中的数字长度超过15位,导入后自动为科学计数法5.1115E+14,如果用PHP将它转换后,跟原表格的数字最后两位数不一样。请问有什么方法解决?

吼吼 刚刚遇到这个问题 解决了
但我的情景是先下载模板(导出) 再导入 不知道符不符合你的

解决方法:导出的时候设置格式

例子:$resultPHPExcel->getActiveSheet()->getStyle('D2')->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);设为文本类型

导入获取数据时记得强制转换成string 不转的话 该字段的值对象类型

我再看看有没有别的方法
参考技术A 把EXCEL的单元格数据类型调为文本
$excel->getActiveSheet()->getCell('E'.$i)->setValueExplicit($row['invoice_number'], PHPExcel_Cell_DataType::TYPE_STRING);
参考技术B 把EXCEL的单元格数据类型调为文本

phpexcel导入excel表格

html代码

<form action="{:U(‘Mall/updExcel‘)}" method="POST" enctype="multipart/form-data"> //提交form表单到Mall控制器下的upExcel方法中
<div style="float:left;width:41%;">
<div style="float:left;">
<input type=‘submit‘ value="更改价格" style="margin: 0px 0px 7px 10px;cursor: pointer;background-color:#C30D23;border:0px;color:#FFFFFF;width:90px;border-radius:5px;padding:3px 0;font-size:13px;"/>
</div>
<div style="float:left;width:45%">
<input type=‘file‘ value="" name="import"/>
</div>
<input type="hidden" id="url" name="url" value=""/> //添加一个隐藏域 传递url
</div>

</form>

写ExcelController工具类:此类用来被实例化

<?php
namespace Home\Controller;
use Think\Controller;
include "./Public/Plugin/PHPExcel.class.php";
include "./Public/Plugin/PHPExcel/Writer/Excel5";
include "./Public/Plugin/PHPExcel/IOFactory.php";

class ExcelController extends Controller {
//导入功能
public function updExcel($file){
if(!file_exists($file)){
return array("error"=>0,‘message‘=>‘file not found!‘);
}
$objReader = \PHPExcel_IOFactory::createReader(‘Excel5‘);

$objPHPExcel = $objReader->load($file,$encode=‘utf-8‘);

$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumn = $sheet->getHighestColumn(); // 取得总列数
$j=0;
for($i=2;$i<=$highestRow;$i++){

$data[$j][‘id‘]= $objPHPExcel->getActiveSheet()->getCell("A".$i)->getValue();

$data[$j][‘result_price‘]= $objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue();
$j++;
}
return $data;
}

下面书写控制器来上传excel表格:此类方法不用把excel表格传递到服务器,直接写入数据:

<?php
namespace Admin\Controller;
use Think\Controller;
use Think\Page;
use Home\Controller\IndexController;
use Common;
use Org\Util\Date;
use Home\Controller\ExcelController;

class MallController extends Controller {
/*商品列表批量导入*/
public function updExcel(){
$excel=new ExcelController();
$goods=M(‘shop_goods_subinfo‘);

if(isset($_FILES["import"]) && ($_FILES["import"]["error"] == 0)){
$result = $excel->updExcel($_FILES["import"]["tmp_name"]);
/*
* 业务逻辑代码
* */
$true="";
$false="";
foreach($result as $value){
//$where=array(‘id‘=>$value[‘id‘],‘status‘=>0);
$where=array(
‘code‘=>$value[‘id‘],
);
$data=array(
‘result_price‘=>$value[‘result_price‘],
);
$state=$goods->where($where)->save($data);
if($state > 0){
$true .= ";".$value[‘id‘];
}else{
$false .= ";".$value[‘id‘];
}

}
echo ‘<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />‘;
echo "<script type=‘text/javascript‘>";
echo "alert(‘更改成功".$true.";更改失败".$false."‘);window.location.href=‘".I(‘param.url‘)."‘;";
echo "</script>";
exit;
}else{
echo ‘<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />‘;
echo "<script type=‘text/javascript‘>";
echo "alert(‘文件读取失败‘);window.location.href=‘".I(‘param.url‘)."‘;";
echo "</script>";
exit;
}
}
}

 






















































































以上是关于phpexcel导入excel表格,导入后自动为科学计数法5.1115E+14的主要内容,如果未能解决你的问题,请参考以下文章

Excel导入导出

ThinkPHP3.1.3使用phpExcel1.8.0实现数据从Excel表格导入mysql数据库

phpexcel导入excel表格

PHPExcel-1.8.1导入导出Excel表格

PHPExcel导入导出数据时候,部分小数会乱码。例如有一个30变成了29.:,在导入和导出的时候

PHP 用PHPExcel往数据库导入大量数据