Поиск на php только по excel

I’m wondering, how it’s possible to help with such issue.
Let’s say, I have an excel with such info in it (it could be much more info):

**Country**            **Currency**
Germany                 EUR    
USA                     USD    
Russia                  RUB

and I’m entering in input form «USA», and I want to see the result USD from excel.
Is there some kind of function in PHP, which allows to search for a value in excel?

Or at least, if there existing such function, which returns in which cell (e.g. B2) such value exists?

asked Jan 20, 2015 at 12:07

Yuriy T.'s user avatar

Yuriy T.Yuriy T.

1952 gold badges4 silver badges12 bronze badges

There’s nothing built-in to PHPExcel to do a search, but it’s pretty straightforward to write something yourself based around the iterators…. take a look at 28iterator.php in /Examples

$foundInCells = array();
$searchValue = 'USA';
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
    $ws = $worksheet->getTitle();
    foreach ($worksheet->getRowIterator() as $row) {
        $cellIterator = $row->getCellIterator();
        $cellIterator->setIterateOnlyExistingCells(true);
        foreach ($cellIterator as $cell) {
            if ($cell->getValue() == $searchValue) {
                $foundInCells[] = $ws . '!' . $cell->getCoordinate();
            }
        }
    }
}
var_dump($foundInCells);

Of course, if you’re only wanting to search a specific column in a specific worksheet, you can simplify this a great deal, e.g. using rangeToArray() and then searching the array using standard PHP array functions.

answered Jan 20, 2015 at 12:47

Mark Baker's user avatar

Mark BakerMark Baker

208k31 gold badges340 silver badges383 bronze badges

1

As there a re many different Excel Formats (2003, 2010 quirks, ooxml, etc.) you will have to look for a third party library to read excel files.

Find some examples in this question or in this question.

Edit: added a more current question.

Community's user avatar

answered Jan 20, 2015 at 12:12

Kai Brummund's user avatar

Kai BrummundKai Brummund

3,5283 gold badges27 silver badges33 bronze badges

4

Рекурсивный акроним словосочетания «PHP: Hypertext Preprocessor»
Добро пожаловать на форум PHP программистов!

Главная
Документация
Новости
Форум

За последние 24 часа нас посетили 12847 программистов и 927 роботов. Сейчас ищут 242 программиста …

Поиск по .xls файлу

Тема в разделе «Решения, алгоритмы», создана пользователем elik_asad, 22 сен 2015.


  1. elik_asad

    elik_asad
    Новичок

    С нами с:
    22 сен 2015
    Сообщения:
    2
    Симпатии:
    0

    Друзья я новичок в php и поэтому прощу помочь. Должен создать поисковик по .xls файлу, в файле имеется два столбца, поискать нужно по первому, а получить как результат всю строку. в файле строк больше 10 000, какая функция подойдет для решения?

    #1


    elik_asad,

    22 сен 2015


  2. mr.akv

    mr.akv
    Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206

    php не умеет работать с экселевскими файлами сам. Есть библиотека php Excel, кажется. Почитайте про неё.

    #2


    mr.akv,

    22 сен 2015


  3. elik_asad

    elik_asad
    Новичок

    С нами с:
    22 сен 2015
    Сообщения:
    2
    Симпатии:
    0

    Спасибо, я прогуглил только что, но народ жалуется на time limit и out of memory при использовании PHPExcel на больших количествах строк в файле. А что если перенести хлс в тхт и создать массив на файл, не знаете ли будет ли поиск осуществляться замедленным?

    #3


    elik_asad,

    22 сен 2015


  4. zahermaher

    zahermaher
    Новичок

    С нами с:
    27 сен 2014
    Сообщения:
    170
    Симпатии:
    14

    лучше тогда импортировать содержимое файла в базу данных .

    #4


    zahermaher,

    22 сен 2015

(Вы должны войти или зарегистрироваться, чтобы разместить сообщение.)

Показать игнорируемое содержимое

Ваше имя или e-mail:
У Вас уже есть учётная запись?
  • Нет, зарегистрироваться сейчас.
  • Да, мой пароль:
  • Забыли пароль?

Запомнить меня

код в модуле джумла 2,5

Добавлено через 1 минуту
<?php

defined(‘_JEXEC’) or die;

function getMounth($time)
{
if (date(‘M’,$time)==’Jan’) {$month=’января’;}
if (date(‘M’,$time)==’Feb’) {$month=’февраля’;}
if (date(‘M’,$time)==’Mar’) {$month=’марта’;}
if (date(‘M’,$time)==’Apr’) {$month=’апреля’;}
if (date(‘M’,$time)==’May’) {$month=’мая’;}
if (date(‘M’,$time)==’Jun’) {$month=’июня’;}
if (date(‘M’,$time)==’Jul’) {$month=’июля’;}
if (date(‘M’,$time)==’Aug’) {$month=’августа’;}
if (date(‘M’,$time)==’Sep’) {$month=’сентября’;}
if (date(‘M’,$time)==’Oct’) {$month=’октября’;}
if (date(‘M’,$time)==’Nov’) {$month=’ноября’;}
if (date(‘M’,$time)==’Dec’) {$month=’декабря’;}
return $month;
}

function getWeek($time)
{
if (date(‘D’,$time)==’Wed’) {$wday=’ср’;}
if (date(‘D’,$time)==’Mon’) {$wday=’пн’;}
if (date(‘D’,$time)==’Sun’) {$wday=’вс’;}
if (date(‘D’,$time)==’Tue’) {$wday=’вт’;}
if (date(‘D’,$time)==’Fri’) {$wday=’пт’;}
if (date(‘D’,$time)==’Sat’) {$wday=’сб’;}
if (date(‘D’,$time)==’Thu’) {$wday=’чт’;}
return $month;
}

?>

<div id=»timetable_data» style=»clear: both;»>
<section class=»timetable_all»>
<table style=»width:100%; background-color:#FFFFFF;border: 3px solid #093f6f;font-size: 14px;»>
<tbody>
<tr class=»tptimetable»>
<?php
if (date(‘Y-m-d’,strtotime(«0 day»)) == date(‘Y-m-d’,strtotime(«Monday»))) :
$lm = strtotime(«Monday»);
else :
$lm = strtotime(«Last Monday»);
endif;
// echo date(«Y-m-d H:i:00»,$lm);
$month1 = getMounth($lm);
$month = getMounth(strtotime(«6 day»,$lm));
if ($month1 <> $month) :
//echo ‘<th class=»timetable_date»>’.date(‘j’,$lm).’ ‘.$month1.'<br />’.date(‘j’,strtotime(«6 day»,$lm)).’ ‘.$month.'</th>’;
else :
//echo ‘<th class=»timetable_date»>’.date(‘j’,$lm).’-‘.date(‘j’,strtotime(«6 day»,$lm)).’ ‘.$month.'</th>’;
endif;
for ($q=’0′; $q<7; $q++)
{
$wday = getWeek(strtotime(«$q day»,$lm));
$month = getMounth(strtotime(«$q day»,$lm));

$wdd=date(‘j’,strtotime(«$q day»,$lm));
$wdm=$month;
if(isset($_GET[«date»])){
if (date(‘Y-m-d’,strtotime(«$q day»,$lm)) == date(‘Y-m-d’,strtotime($_GET[«date»].» day»,$lm)) && date(«H:i:00»,strtotime(«$q day»,$lm)) < date(«H:i:00»,strtotime($_GET[«date»].» day 05:00:00″,$lm))) :
echo ‘<th class=»dn active»>’;
else :
echo ‘<th class=»dn»>’;
endif;
} else {
if (date(‘Y-m-d’,strtotime(«$q day»,$lm)) == date(«Y-m-d») && date(«H:i:00»,strtotime(«$q day»,$lm)) < date(«H:i:00», «05:00:00»)) :
echo ‘<th class=»dn active»>’;
else :
echo ‘<th class=»dn»>’;
endif;
}
echo ‘<a class=»getTimeTable» href=»‘.JURI::getInstance()->toString(array(‘scheme’, ‘user’, ‘pass’, ‘host’, ‘port’, ‘path’, ‘fragment’)).’?date=’.$q.'» data-date=»‘.date(‘Y-m-d’,strtotime(«$q day»,$lm)).'»>’.$wday.'<div class=»select_date»>’.$wdd.’ ‘.$wdm.'</div></a>’;
echo ‘</th>’;
} ?>
</tr>

<tr class=»row»>
<td style=»padding-top:10px;» class=»timetable_title beforeNow» colspan=»8″>
<?php
$time = date(«H:i:00», «05:00:00»);
foreach ($list as $item) :
if (date(«H:i:00») < $item->time & date(«H:i:00») > $time) :
break;
endif;
$time = $item->time;
endforeach;
foreach ($list as $item) :
if ($item->time == $time and (!$_GET[«date»])) :
echo ‘<div class=»tt-active»><span class=»time»>’.date(‘H:i’, strtotime($item->time)).'</span><span class=»titletime»>’.$item->title.'</span></div>’;
else :
echo ‘<span class=»time»>’.date(‘H:i’, strtotime($item->time)).'</span><span class=»titletime»>’.$item->title.'</span><br/>’;
endif;
endforeach; ?>
</td>
</tr>
</tbody>
</table>
</section>
</div>



0



Мне интересно, как можно помочь с таким вопросом.
Допустим, у меня есть Excel с такой информацией (это может быть гораздо больше информации):

**Country**            **Currency**
Germany                 EUR
USA                     USD
Russia                  RUB

и я вхожу в форму ввода «США», и я хочу видеть результат в долларах США от Excel.
Есть ли какая-то функция в PHP, которая позволяет искать значение в Excel?

Или, по крайней мере, если существует такая функция, которая возвращает в какую ячейку (например, B2) такое значение?

4

Решение

В PHPExcel нет ничего встроенного для выполнения поиска, но довольно просто написать что-то самостоятельно на основе итераторов … взгляните на 28iterator.php в /Examples

$foundInCells = array();
$searchValue = 'USA';
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
$ws = $worksheet->getTitle();
foreach ($worksheet->getRowIterator() as $row) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(true);
foreach ($cellIterator as $cell) {
if ($cell->getValue() == $searchValue) {
$foundInCells[] = $ws . '!' . $cell->getCoordinate();
}
}
}
}
var_dump($foundInCells);

Конечно, если вы хотите выполнять поиск только в определенном столбце в определенной рабочей таблице, вы можете значительно упростить это, например, с помощью rangeToArray() и затем поиск в массиве с использованием стандартных функций массива PHP.

11

Другие решения

Поскольку существует множество различных форматов Excel (причуды 2003, 2010, ooxml и т. Д.), Вам придется искать стороннюю библиотеку для чтения файлов Excel.

Найдите несколько примеров в этом вопросе или же в этом вопросе.

Изменить: добавлен более актуальный вопрос.

1

Здравствуйте, необходимо реализовать форму поиска из текстового файла в формате .txt или .excel
Т.З следующее
Пользователь в форму вводит значения ( Имя Фамилия Отчество) , если эти значение имеется в удаленном файле который находится по адрессу www.my-website.ru/user.excel(txt)
То выводит соотвествующий резульат ( Да или Нет)
Как это реализовать? Есть на подобии примеры.
Спсибо.

P.S в данном файле не только ФИО , эти значения рассположены не упорядочно.


  • Вопрос задан

    более трёх лет назад

  • 168 просмотров

Самый простой вариант, с условием сохранения последовательности ФИО в файле user.txt

function sendForm(){
	$.ajax({
		url: 'form.php',
		type: 'POST',
		data: {
			fio: $('form input').val();
		},
		success: function(response) {
			$('#result').html(response);
		}
	});	
}
// form.php
$data = file('user.txt', FILE_IGNORE_NEW_LINES);
if (in_array($_POST['fio'], $data)){
    echo 'Yes';
}

else {
    echo 'No';
}
// user.txt
Лердорф Расмус 
Эйх Брендан
Тим Бернерс-Ли
Хокон Виум Ли

Пригласить эксперта


  • Показать ещё
    Загружается…

16 апр. 2023, в 18:46

1 руб./за проект

16 апр. 2023, в 16:39

80000 руб./за проект

16 апр. 2023, в 14:44

4500 руб./за проект

Минуточку внимания

Like this post? Please share to your friends:
  • Поиск минимума функции excel
  • Поиск минимальной даты excel
  • Поиск минимального значения при условии в excel
  • Поиск массива в массиве vba excel
  • Поиск максимума в таблице excel