PHPExcel导入数字被转科学计数问题

PHPExcel导入excel文件时,如果某例的数字太长 识别出来的是科学计算法的数据

3947ea861bd0f796d587bc90992f1202.png

如上图的车辆VIN码,导入时PHP得到的是:8.66289E+14

查了下资料 原来PHPExcel自带处理函数: getFormattedValue()

修改代码:

//$objPHPExcel->getActiveSheet()->getCell('C'.$i)->getValue();
$objPHPExcel->getActiveSheet()->getCell('C'.$i)->getFormattedValue();

问题解决,不过这个方式对日期类型的数据效果不好;

还有一种方式,通过 number_format 对其格式化

/*还原科学计数*/
function decimalNotation($num)
{
    $parts = explode('E', $num);
    if (count($parts) != 2) {
        return $num;
    }
    $exp = abs(end($parts)) + 3;
    $decimal = number_format($num, $exp, '.', '');
    $decimal = rtrim($decimal, '0');
    
    return rtrim($decimal, '.');
}

这下再导入得到的数据就是正确的了;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是使用PHPExcel将Excel文件中的数据导入到数据库的步骤: 1. 首先,您需要安装PHPExcel库。您可以从官方GitHub存储库中获取最新版本的PHPExcel。下载后,将库的文件解压缩到您的项目目录中。 2. 创建一个名为“import_excel.php”的PHP文件,并在其中包含PHPExcel库中的“PHPExcel.php”文件。 3. 在“import_excel.php”文件中,创建一个HTML表单,允许用户上传Excel文件。 4. 在PHP文件中,使用以下代码将Excel文件中的数据读取到PHP数组中: ```php require_once 'PHPExcel.php'; $excel = PHPExcel_IOFactory::load($_FILES['file']['tmp_name']); $sheet = $excel->getActiveSheet(); $rows = array(); foreach ($sheet->getRowIterator() as $row) { $cellIterator = $row->getCellIterator(); $cellIterator->setIterateOnlyExistingCells(FALSE); $cells = array(); foreach ($cellIterator as $cell) { $cells[] = $cell->getValue(); } $rows[] = $cells; } ``` 5. 将数组中的数据插入到数据库中。您可以使用MySQLi或PDO等PHP扩展来执行此操作。以下是一个使用MySQLi的示例: ```php $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } foreach ($rows as $row) { $sql = "INSERT INTO table_name (column1, column2, column3) VALUES ('" . $row[0] . "', '" . $row[1] . "', '" . $row[2] . "')"; if ($conn->query($sql) === TRUE) { echo "New record created successfully"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } } $conn->close(); ``` 6. 在浏览器中打开“import_excel.php”文件,并上传Excel文件。数据将被导入到数据库中。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值