我正在尝试弄清楚如何使用自定义单元格格式或创建输入掩码,以便用户可以输入数据(32°12'13.44“,32°12'13.4”或32°12'13“)和不允许其他格式,这是为了避免错误,因为处理信息的应用程序需要符号(°,',“)来区分GPS坐标的每个位。
我看了this并试了一下:
#NumberFormat.php
const FORMAT_GPS = '##°##\'##.##\"';
控制器:
$phpExcelObject->setActiveSheetIndex(0)
->setCellValue('A1', '32° 12\' 13.44"')
->setCellValue('B1', '32° 12\' 13.4"')
->setCellValue('C1', '32° 12\' 13"');
$phpExcelObject->getActiveSheet()->getStyle('A1:C2')->getNumberFormat()->applyFromArray(
array(
'code' => \PHPExcel_Style_NumberFormat::FORMAT_GPS
)
);
注意:我不认为这是正确的......
然而,虽然单击“格式化单元格”时确实显示格式,但当用户输入与格式不匹配的值时,它不会执行任何操作。
我怎样才能做到这一点?有可能吗?
答案 0 :(得分:1)
在MS Excel中,我可以使用类似的掩码:
##0"°"00"'"00\"
也许像
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Masked')
->setCellValue('B1', 'Degrees')
->setCellValue('C1', 'Minutes')
->setCellValue('D1', 'Seconds')
->setCellValue('E1', 'Decimal');
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A2', 532128.8864)
->setCellValue('B2', '=FLOOR(A2/10000,SIGN(A2))')
->setCellValue('C2', '=MOD(FLOOR(ABS(A2)/100,1),100)')
->setCellValue('D2', '=MOD(ABS(A2),100)')
->setCellValue('E2', '=(ABS(B2)+C2/60+D2/3600)*SIGN(A2)')
->setCellValue('F2', 'Latitude');
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A3', -21625.3338)
->setCellValue('B3', '=FLOOR(A3/10000,SIGN(A3))')
->setCellValue('C3', '=MOD(FLOOR(ABS(A3)/100,1),100)')
->setCellValue('D3', '=MOD(ABS(A3),100)')
->setCellValue('E3', '=(ABS(B3)+C3/60+D3/3600)*SIGN(A3)')
->setCellValue('F3', 'Longitude');
$objPHPExcel->getActiveSheet()
->getStyle('A2:A3')
->getNumberFormat()
->setFormatCode('##0"°"00"\'"00\"');
(在曼彻斯特机场等候时测试)