将单元格的数据类型显式设置为数字值的文本

mok*_*hal 6 php mysql phpexcel

我想显式地将 cell\xe2\x80\x99s 数据类型设置为数字值的文本。

\n\n

我正在从 MySQL 数据库获取数据并使用 PHPExcel 库导出到 Excel 文件。我有大约 20 位长的数字,我想将其导出到 Excel 单元格(整列的每个单元格将有不同的数字)。

\n\n

我发现您可以通过 PHPExcel 文档 4.6.7 中提到的代码来完成此操作。

\n\n
$i=0;\nforeach($dd as $d) {\n    $objPHPExcel\n        ->setActiveSheetIndex(0)\n       ->getcell(\'A\'.$i)\n       ->setValueExplicit($d[\'serial_no\'], PHPExcel_Cell_DataType::TYPE_STRING);\n    $i++;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

$d[\'serial_no\']-来自数据库的不同序列,例如“9876543211234567890”。

\n\n

我已经实现了这段代码,它工作正常。但是,当我打开该 Excel 工作表并尝试修改该单元格然后单击其他任何位置时,它会再次转换为数字格式(客户的要求:它应该保留为文本)。

\n\n

即使我在其中进行编辑,我也想将该单元格保留为文本。

\n

Mar*_*ker 6

我还没有测试过它,但可能将单元格设置为“quotePrefix”可能会阻止 MS Excel 在使用 MS Excel 编辑数据时尝试转换数据类型

$objPHPExcel->getActiveSheet()
    ->getStyle('A2:O128')
    ->setQuotePrefix(true);
Run Code Online (Sandbox Code Playgroud)

仅限 Excel2007


One*_*aut 6

$objPHPExcel->getActiveSheet()
->getStyle('A'.$i)
->getNumberFormat()
->setFormatCode(
    PHPExcel_Style_NumberFormat::FORMAT_TEXT
);
Run Code Online (Sandbox Code Playgroud)