Импорт электронной таблицы в формате текста с помощью PHPExcel
Как импортировать файл excel, как ячейки в формате TEXT
Код
$file_tmp = $_FILES['arquivo']['tmp_name'];
try {
$FileType = PHPExcel_IOFactory::identify( $file_tmp );
$objReader = PHPExcel_IOFactory::createReader( $FileType );
$objReader->setReadDataOnly( true );
$objPHPExcel = $objReader->load( $file_tmp );
}catch( Exception $e ){
die( $e->getMessage() );
}
$objWorksheet = $objPHPExcel->getActiveSheet();
$fimColuna = $objWorksheet->getHighestColumn();
$numero_de_linhas = $objWorksheet->getHighestRow();
$numero_de_colunas = PHPExcel_Cell::columnIndexFromString( $fimColuna );
for( $row = 0; $row <= $numero_de_linhas; $row++ ){
$data = array();
for( $col = 0; $col < $numero_de_colunas; $col++ ){
$data[] = $objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
}
}
формы, даты в формате 11/12/2014 //MÊS/DIA/ANO
выглядели так: 41984.69211805556
Спасибо заранее за помощь.
3
5 answers
Используйте:
echo PHPExcel_Style_NumberFormat::toFormattedString($objWorksheet->getCellByColumnAndRow($col, $row)->getValue(), 'YYYY-MM-DD hh:mm:ss');
4
Author: Rogerio Coelho, 2014-11-16 16:02:14
, даты, только приходили таким образом 41984.69211805556
бытность 11/12/2014 // MÊS/DIA/ANO
если бы это было 31/10/2014 // DIA/MÊS/ANO
виноградник нормально.
Так что я могу проверить, если переменная имеет размер экстренно
function isDate( $date ){
return strlen(preg_replace('/[^0-9]/', '', current(explode(' ', trim($date))))) == 8 ? true : false;
}
И я добавляю функцию PHPExcel, что это дата planinha
date('d/m/Y', PHPExcel_Shared_Date::ExcelToPHP( $data ) ); // 41984.69211805556 -> 11/12/2014
2
Author: smigol, 2014-12-02 13:02:26
- Это потому, что, когда появляется даты за getValue()
, он возвращает float.
Ножа:
$objWorksheet->getCellByColumnAndRow($col, $row)->getNumberFormat()->getFormatCode();
Кстати, какая версия это с помощью PHPExcel?
0
Author: Rogerio Coelho, 2014-11-13 18:59:24
Попытке это:
$data = trim( $objWorksheet->getCellByColumnAndRow(9, $i)->getValue());
$data = date("Y-m-d", strtotime("01/01/1900 + $data_fatura days - 2 days"));
0
Author: Edvaldo, 2015-05-27 11:38:06
Была эта же проблема, но с ответами сделал несколько тестов, который решил мою проблему, приведен ниже в качестве примера, если вы еще не решены.
$data=$objPHPExcel->getActiveSheet()->getCellByColumnAndRow($coluna, $linha)->getValue(); //como é retornado 41121
echo date('d/m/Y', PHPExcel_Shared_Date::ExcelToPHP( $data ) ); //como fica depois de formatado 30/07/2012
0
Author: Cristiano Miranda, 2015-06-03 17:02:17