在列级别的 php excel 中设置数据类型



我正在使用PHPExcel,使用fromArray,我将vales添加到单元格中。现在我想将某些单元格的数据类型设置为字符串。

某些列具有特定类型的值(例如数字、日期或文本)。使用字符串数据类型足以达到此目的,否则长度超过 12 的数字将显示为指数 E,前导零将被截断。

我发现了在单元格中设置值时如何以编程方式设置每个特定单元格的数据类型。但是,如何在最终电子表格的列级别设置数据类型(因此用户在Excel中输入的新值会自动使用该类型,例如字符串,因此前导零不会被截断)。我也想知道在函数中

$objPHPExcel->getActiveSheet()->setCellValueExplicit('A1', '1234567890', PHPExcel_Cell_DataType::TYPE_STRING);

首先使用 fromArray 插入值并稍后在函数中给出单元格 ID 和数据类型后,可以

或者是否有任何方法可以将数据类型设置为字符串,例如我们格式化单元格

$objPHPExcel->getActiveSheet()
->getStyle('A3:A123')
->getNumberFormat()
->setFormatCode('0000');

我试过代码

$worksheet->getCell('A1:A50')->setDataType(PHPExcel_Cell_DataType::TYPE_STRING);

但它不起作用

在设置数据后设置数据类型不会更改数据;它的实际类型是在你首先调用setCellValue()setCellValueExplicit()时定义的。

如果你使用的是setCellValueExplicit(),你明确地告诉 PHPExcel 使用什么数据类型。如果你使用setCellValue(),你就是在告诉 PHPExcel 找出它应该使用什么数据类型。解决这个问题的规则在"值绑定器"中定义。fromArray()方法使用setCellValue(),因此它使用"值绑定器"来标识数据类型,并相应地设置单元格值。这在 PHPExcel 文档的"Excel 数据类型"部分中进行了解释。

除非您另有指定,否则 PHPExcel 使用默认值绑定器中的规则,其中包含一些非常基本和简单的规则。该库还提供了具有更复杂的规则的高级值绑定器,例如将字符串(如5%)转换为浮点值0.05,并为单元格设置格式掩码,以便它仍显示为5%,其方式与MS Excel大致相同。您还可以使用自己的规则创建自己的"值绑定器",并使用该规则代替"默认值绑定程序"。

您可以按如下方式读取数组

$excel = new Spreadsheet();
$columnsNames = array_keys($clientes[0]);
$sheet = $excel->setActiveSheetIndex(0);
$sheet->fromArray($columnsNames, NULL, 'A1'); 
[$startColumn, $startRow] = Coordinate::coordinateFromString('A2');
$NumeroLinha = 1;
foreach ($encodeClientes as $rowData) {
$currentColumn = $startColumn;
foreach ($rowData as $cellValue) {
if ($cellValue !== null) {
switch ($currentColumn) {
case 'A':
$sheet->getCell($currentColumn . $startRow)->setValue($NumeroLinha++);
break;
case 'F':
$sheet->getCell($currentColumn . $startRow)->setValueExplicit($cellValue, PhpOfficePhpSpreadsheetCellDataType::TYPE_STRING);
break;
default:
$sheet->getCell($currentColumn . $startRow)->setValue($cellValue);
}
}
++$currentColumn;
}
++$startRow;
}

最新更新