我正在使用auto p = new (a) A;
*p = b; // ok
创建Excel工作表。由于我们需要良好的优化,因此我避免了最大化的循环。但我不能再优化以下代码了。
PHPExcel
此处$activeSheet->fromArray($excel_rows, null, 'A1');
$activeSheet->getStyle('A2:K'.$index)->getNumberFormat()->setFormatCode( PHPExcel_Style_NumberFormat::FORMAT_TEXT );
$activeSheet->getStyle('L2:L'.$index)->getNumberFormat()->setFormatCode( '@' );
$activeSheet->getStyle('U2:W'.$index)->getNumberFormat()->setFormatCode( PHPExcel_Style_NumberFormat::FORMAT_TEXT );
$in = 2;
foreach($micr_pin as $value){
$activeSheet->getCell('H' . $in)->setValueExplicit($value['pin'], PHPExcel_Cell_DataType::TYPE_STRING);
$activeSheet->getCell('M' . $in)->setValueExplicit($value['microchip'], PHPExcel_Cell_DataType::TYPE_STRING);
$in++;
}
和pin
的值可以包含前面的零。所以我需要让他们保持优秀。到现在为止,我可以通过在循环中添加它们并为每个单元格提供microchip
来实现。
有更好的方法吗(我可以提供一些自定义格式吗?)? datatype
的固定长度为5.但pin
的长度可以不同。
答案 0 :(得分:0)
此编辑后不是100%,所以如果有效,请告诉我。您应该能够使用setFormatCode来保留一些数据上下文,然后按范围设置样式:
$pins_length = count($micr_pin);
// For pin, as we know it's 5 characters already, we can just explicity set that to 5
$activeSheet->getStyle('H1:H' . $pins_length)
->getNumberFormat()
->setFormatCode('00000');
// For microchip we need to introduce a bit of variability
$activeSheet->getStyle('M1:M' . $pins_length)
->getNumberFormat()
->setFormatCode(str_repeat('0', max(array_map('strlen', array_column($micr_pin, 'microchip')))));