防止将文本转换为数字?-使用PHP代码的Excel

防止将文本转换为数字?-使用PHP代码的Excel,php,phpexcel,Php,Phpexcel,我正在尝试用PHP代码将DB数据转换为excel格式,但在转换过程中,它将数字(4578569522458945658584598752)更改为4.57857E+25格式。如何避免这种情况?我也遇到了同样的问题(转换为浮点数会导致截断和舍入错误)。我使用fromArray()方法一次粘贴整个数据查询,因此使用其他地方建议的setValueExplicit()方法进行重构太多 我的解决方案是通过提供自定义值绑定器类来强制PHPExcel不转换任何内容。对于某些人来说,这可能会很严厉,因此您可以在此

我正在尝试用PHP代码将DB数据转换为excel格式,但在转换过程中,它将数字(4578569522458945658584598752)更改为4.57857E+25格式。如何避免这种情况?

我也遇到了同样的问题(转换为浮点数会导致截断和舍入错误)。我使用fromArray()方法一次粘贴整个数据查询,因此使用其他地方建议的setValueExplicit()方法进行重构太多

我的解决方案是通过提供自定义值绑定器类来强制PHPExcel不转换任何内容。对于某些人来说,这可能会很严厉,因此您可以在此基础上做一些其他事情(如果您需要布尔值或其他什么):

我是这样使用它的:

$rows = $result->fetchAll(PDO::FETCH_NUM);

PHPExcel_Cell::setValueBinder(new CustomPHPExcelValueBinder());

$excelObj = PHPExcel_IOFactory::load(__DIR__ . self::TEMPLATE_FILE);

$excelObj->setActiveSheetIndex(0);
$excelObj->getActiveSheet()
    ->fromArray($rows, null, 'A2');

单击单元格。。。您在值栏中看到完整的数字了吗?Excel将向您显示这样的值,但基础数据通常很好。它在Excel中仍然需要是数字数据类型吗?您是否将数据从mysql转换为CSV,然后在Excel中打开?如果是,请使用数据>获取外部数据>从文本。在该对话框/向导中,您可以将数字非常大的列设置为文本而不是数字。那么你的数字就不会四舍五入了,你的句子就不能用科学的符号来表示。也。。。您问题中的更多信息,如如何将DB结果转换为Excel,将非常有用。您是否实际使用PHPExcel库?如果是,请显示您的代码我使用的是CSV格式
$rows = $result->fetchAll(PDO::FETCH_NUM);

PHPExcel_Cell::setValueBinder(new CustomPHPExcelValueBinder());

$excelObj = PHPExcel_IOFactory::load(__DIR__ . self::TEMPLATE_FILE);

$excelObj->setActiveSheetIndex(0);
$excelObj->getActiveSheet()
    ->fromArray($rows, null, 'A2');