gpt4 book ai didi

php - 如何使用 php/mysql 强制将整数到字符串导出到 Excel?

转载 作者:行者123 更新时间:2023-11-29 18:25:48 26 4
gpt4 key购买 nike

我需要将 MySql 表中的所有数据导出到 Excel。我正在使用下面的代码,运行良好。

问题是:有 2 个字段是超过 30 位的整数。因此,当我将其导出到 .csv 文件时,Excel 会将它们转换为科学计数法。

示例:字段“95145612345641859415634194164163”转换为“9.51456E+31”

如何强制它以字符串形式读取?

<?php


exportMysqlToCsv('export_csv.csv');



function exportMysqlToCsv($filename = 'export_csv.csv')
{

$conn = dbConnection();

if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql_query = "SELECT * FROM cadastros";


$result = $conn->query($sql_query);

$f = fopen('php://temp', 'wt');
$first = true;
while ($row = $result->fetch_assoc()) {
if ($first) {
fputcsv($f, array_keys($row));
$first = false;
}
fputcsv($f, $row);
} // end while

$conn->close();

$size = ftell($f);
rewind($f);

header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Length: $size");
header("Content-type: text/x-csv");
header("Content-type: text/csv");
header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=$filename");
fpassthru($f);
exit;

}

// db connection function
function dbConnection(){
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "creche_escolas";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
return $conn;
}

最佳答案

插入值时应确保您的号码是字符串,请尝试:

fputcsv($f, ['12343231743986248756324354595', '123456', 12123437829564329758623456789]);

第一个值将保持不变,而最后一个值将转换为 1.21234378296E+28

因此,您需要将 fputcsv($f, $row); 行替换为转换为字符串(例如 number_format )的函数:

fputcsv($f, array_map(function($v){return number_format($v, 0, '', '');}, $row));

关于php - 如何使用 php/mysql 强制将整数到字符串导出到 Excel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46209090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com