Импорт электронной таблицы в формате текста с помощью 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

Спасибо заранее за помощь.

Author: smigol, 2014-11-13

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