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

Explicitly set a cell’s datatype as text for number values

我想明确地将单元格的数据类型设置为数字值的文本。

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

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

$i=0;
foreach($dd as $d) {
    $objPHPExcel
        ->setActiveSheetIndex(0)
       ->getcell('A'.$i)
       ->setValueExplicit($d['serial_no'], PHPExcel_Cell_DataType::TYPE_STRING);
    $i++;
}

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

我已经实现了这段代码,它运行良好。但是当我打开 excel sheet 并尝试修改该单元格然后单击其他任何地方时,它再次转换为数字格式(客户的要求:它应该保留为文本)。

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

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

$objPHPExcel->getActiveSheet()
    ->getStyle('A2:O128')
    ->setQuotePrefix(true);

Excel仅限 2007 年

$objPHPExcel->getActiveSheet()
->getStyle('A'.$i)
->getNumberFormat()
->setFormatCode(
    PHPExcel_Style_NumberFormat::FORMAT_TEXT
);