2013-11-18 3 views
0

У меня есть номер отклика ячеек XLS. это как выглядят мои клеткиКак получить значение формата файла XLS с помощью PHPExcel

Cells of the XLS file

  • E8: Дата отформатирована ячейки
  • E9: Номер отформатированные ячейки
  • E10: Общие отформатированные ячейки
  • E11: Процент отформатированные ячейки
  • E12 : Фракция, отформатированная ячейка

Я хочу прочитать эти данные ячеек без каких-либо изменений (пятница, 10 мая 2013 г., 41404.00, drfsdf, 1/2) я использую ниже метод для этого, но я не добился успеха каждый следующий метод возврата для текстового значения ячеек

$objReader = new PHPExcel_Reader_Excel5(); 
$objReader->setReadDataOnly(true); 
$objPHPExcel = $objReader->load($file_path); 
$rowIterator = $objPHPExcel->getActiveSheet()->getRowIterator(); 

$array_data = array(); 
foreach ($rowIterator as $row) { 
    $cellIterator = $row->getCellIterator(); 
    $cellIterator->setIterateOnlyExistingCells(false); 
    $rowIndex = $row->getRowIndex(); 
    $array_data[$rowIndex] = array('A' => '', 'B' => ''); 
    foreach ($cellIterator as $cell) { 
    if ('A' == $cell->getColumn()) { 
     $array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue(); 
     } else if ('B' == $cell->getColumn()) { 
     $array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue(); 
     } 
    } 
} 

, пожалуйста, помогите, чтобы получить вид значение файла XLS как Friday, May 10, 2013 , 41404.00, drfsdf, 1/2 в к $ array_data с использованием PHPExcel.

+1

Вы также можете использовать метод toArray() рабочего листа, чтобы устранить необходимость в циклах итератора строк и ячеек. –

ответ

2

Избавиться от

$objReader->setReadDataOnly(true); 

иначе PHPExcel не имеют никакого способа узнать, является ли отформатирована ячейка в качестве даты или не

setReadDataOnly (правда) говорит PHPExcel для загрузки только исходных данных из каждой ячейки. Единственным способом, с помощью которого MS Excel отличать дату/время от поплавка, является маска формата номера (а не из необработанных данных), и вы говорите PHPExcel, что не читаете маски с числовым форматом, PHPExcel не может сказать разницу, поэтому все поплавки просто обрабатываются как float

+0

я удалил 'setReadDataOnly (true);' и прочитал данные как $ cell-> GetFormattedValue() ;. это нормально с каждой ячейкой, отформатированной по дате, кроме 5/10/2013, которая читается как 05-10-13 – Duleep

+1

Если ячейка с форматированием даты, содержащая 5/10/2013, использует маску формата локали, тогда PHPExcel может отображать ее только как общая дата с использованием маски даты по умолчанию, потому что она не поддерживается локалью ... но вы все равно получаете значение, преобразованное в формат даты. –

+0

Возможно ли переписать макет даты по умолчанию и получить реальное значение из ячейки (что означает читать 5/10/2013 без каких-либо изменений)? – Duleep

Смежные вопросы