Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Как научить PHPExcel правильно считывать строки из цифр с нулями впереди?

Страниц (1): [1]
 

1. pavel_vz - 14 Марта, 2014 - 12:53:35 - перейти к сообщению
Здравствуйте! Не могу решить проблему чтения данных при помощи библиотеки PHPExcel.
В ячейках содержутся строки из цифр с нулями. Нули при считывании исчизают.
Например в файле Excel видим 000388, а при чтении получаем число 388. 1С записывает туда данные в формате Дополнительный Zip Code. Если принудительно поставить для столбца текстовый тип, то нули сохраняются (делать так всегда не могу, файлы получаю от клиентов, которым трудно объяснить, что надо выставлять тип данных текст. Что видят, то и отправляют).
Пробовал из CSV считывать данные, тотже результат, получаем 388 вместо 000388.
Как быть?
2. IllusionMH - 14 Марта, 2014 - 12:59:09 - перейти к сообщению
pavel_vz, как крайнее решение, можно значение этого элемента массива переприсваивать через sprintf (дополнение нулями есть в примерах)
3. VenZell - 14 Марта, 2014 - 13:55:15 - перейти к сообщению
IllusionMH, тогда, может, лучше str_pad?
4. IllusionMH - 14 Марта, 2014 - 14:07:22 - перейти к сообщению
VenZell, можно и так. Я просто этой функции не знал или уже забыл.
5. pavel_vz - 14 Марта, 2014 - 14:21:45 - перейти к сообщению
IllusionMH пишет:
pavel_vz, как крайнее решение, можно значение этого элемента массива переприсваивать через sprintf (дополнение нулями есть в примерах)

Все это не годится, т.к. заранее не известно в каком формате пришлют товарный код из 1С. Может там не 5 символов, а 6 или 4 (00111,000111, 0011). Пока попросил клиента присылать свой каталог в CSV.
6. IllusionMH - 14 Марта, 2014 - 14:44:40 - перейти к сообщению
pavel_vz, а если getFormattedValue() ?
7. VenZell - 14 Марта, 2014 - 15:41:30 - перейти к сообщению
pavel_vz, а можете показать кусочек кода, как вы считывате данные из excel и из csv?
8. pavel_vz - 14 Марта, 2014 - 17:15:18 - перейти к сообщению
VenZell пишет:
pavel_vz, а можете показать кусочек кода, как вы считывате данные из excel и из csv?
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. function read_Excel($upfile){
  3.  
  4.  
  5. $objPHPExcel = PHPExcel_IOFactory::load($upfile, ReadDataOnly);
  6. //$objPHPExcel->setReadDataOnly(false);
  7. $objPHPExcel->setActiveSheetIndex(0);
  8. $aSheet = $objPHPExcel->getActiveSheet();
  9.  
  10.  
  11. $array = array();
  12.  
  13. $s=0;$i=0;
  14.  
  15. PHPExcel_Settings::setLocale('ru');
  16. foreach($aSheet->getRowIterator() as $row){
  17.  
  18. $cellIterator = $row->getCellIterator();
  19.  
  20. $item = array();$i=0;
  21. foreach($cellIterator as $k=> $cell){
  22.  
  23.  
  24. $ara_sod[$s][$i]=mysql_real_escape_string(iconv('utf-8', 'cp1251', $cell->getValue()));
  25.  
  26. $i++;
  27. }
  28. $s++;
  29. }
  30.  
  31.  
  32.  
  33. return $ara_sod;
  34.  
  35. } //END
9. IllusionMH - 14 Марта, 2014 - 17:40:50 - перейти к сообщению
pavel_vz, c getFormattedValue() пробовали?
10. cherkas - 29 Февраля, 2020 - 07:31:23 - перейти к сообщению
Здравствуйте, у меня та же проблема, есть многостраничный прайс который нужно конвертировать в csv. Есть код
PHP:
скопировать код в буфер обмена
  1. $filename = "w3.xlsx";
  2. $objReader = PHPExcel_IOFactory::createReaderForFile($filename);
  3. $objReader->setReadDataOnly(true);
  4. $objPHPExcel =  $objReader->load($filename);;
  5.  
  6. $sheetsIterator = $objPHPExcel->getWorksheetIterator();
  7. $schet = 0;
  8. $tmpFileName = microtime(true);
  9.  
  10. // Creating CSV writer Object and save data to file
  11. $objWriter = new PHPExcel_Writer_CSV($objPHPExcel);
  12. while( $sheetsIterator->valid()) {
  13.         $objWriter->setSheetIndex($sheetsIterator->key());
  14.         $currentTmpFileName = "{$sheetsIterator->key()}.csv";
  15.         $objWriter->save($currentTmpFileName);
  16.  
  17.     $sheetsIterator->next();
  18.        
  19.         $schet++;
  20. }


но нули в начале пропадают

Помогите пожалуйста решить

 

Powered by ExBB FM 1.0 RC1