Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как научить PHPExcel правильно считывать строки из цифр с нулями впереди?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
pavel_vz
Отправлено: 14 Марта, 2014 - 12:53:35
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Март 2014  


Помог: 0 раз(а)




Здравствуйте! Не могу решить проблему чтения данных при помощи библиотеки PHPExcel.
В ячейках содержутся строки из цифр с нулями. Нули при считывании исчизают.
Например в файле Excel видим 000388, а при чтении получаем число 388. 1С записывает туда данные в формате Дополнительный Zip Code. Если принудительно поставить для столбца текстовый тип, то нули сохраняются (делать так всегда не могу, файлы получаю от клиентов, которым трудно объяснить, что надо выставлять тип данных текст. Что видят, то и отправляют).
Пробовал из CSV считывать данные, тотже результат, получаем 388 вместо 000388.
Как быть?
 
 Top
IllusionMH
Отправлено: 14 Марта, 2014 - 12:59:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




pavel_vz, как крайнее решение, можно значение этого элемента массива переприсваивать через sprintf (дополнение нулями есть в примерах)
 
 Top
VenZell
Отправлено: 14 Марта, 2014 - 13:55:15
Post Id


Частый гость


Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013  


Помог: 12 раз(а)




IllusionMH, тогда, может, лучше str_pad?
 
 Top
IllusionMH
Отправлено: 14 Марта, 2014 - 14:07:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




VenZell, можно и так. Я просто этой функции не знал или уже забыл.
 
 Top
pavel_vz
Отправлено: 14 Марта, 2014 - 14:21:45
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Март 2014  


Помог: 0 раз(а)




IllusionMH пишет:
pavel_vz, как крайнее решение, можно значение этого элемента массива переприсваивать через sprintf (дополнение нулями есть в примерах)

Все это не годится, т.к. заранее не известно в каком формате пришлют товарный код из 1С. Может там не 5 символов, а 6 или 4 (00111,000111, 0011). Пока попросил клиента присылать свой каталог в CSV.
 
 Top
IllusionMH
Отправлено: 14 Марта, 2014 - 14:44:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




pavel_vz, а если getFormattedValue() ?
 
 Top
VenZell
Отправлено: 14 Марта, 2014 - 15:41:30
Post Id


Частый гость


Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013  


Помог: 12 раз(а)




pavel_vz, а можете показать кусочек кода, как вы считывате данные из excel и из csv?
 
 Top
pavel_vz
Отправлено: 14 Марта, 2014 - 17:15:18
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Март 2014  


Помог: 0 раз(а)




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
 
 Top
IllusionMH
Отправлено: 14 Марта, 2014 - 17:40:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




pavel_vz, c getFormattedValue() пробовали?
 
 Top
cherkas
Отправлено: 29 Февраля, 2020 - 07:31:23
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Дек. 2013  
Откуда: zzzz


Помог: 0 раз(а)




Здравствуйте, у меня та же проблема, есть многостраничный прайс который нужно конвертировать в 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. }


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

Помогите пожалуйста решить
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB