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.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 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.
answered Jan 20, 2015 at 12:12
Kai BrummundKai Brummund
3,5283 gold badges27 silver badges33 bronze badges
4
За последние 24 часа нас посетили 12847 программистов и 927 роботов. Сейчас ищут 242 программиста …
Поиск по .xls файлу
Тема в разделе «Решения, алгоритмы», создана пользователем elik_asad, 22 сен 2015.
-
elik_asad
Новичок- С нами с:
- 22 сен 2015
- Сообщения:
- 2
- Симпатии:
- 0
Друзья я новичок в php и поэтому прощу помочь. Должен создать поисковик по .xls файлу, в файле имеется два столбца, поискать нужно по первому, а получить как результат всю строку. в файле строк больше 10 000, какая функция подойдет для решения?
#1
elik_asad,22 сен 2015
-
mr.akv
Активный пользователь- С нами с:
- 31 мар 2015
- Сообщения:
- 1.604
- Симпатии:
- 206
php не умеет работать с экселевскими файлами сам. Есть библиотека php Excel, кажется. Почитайте про неё.
#2
mr.akv,22 сен 2015
-
elik_asad
Новичок- С нами с:
- 22 сен 2015
- Сообщения:
- 2
- Симпатии:
- 0
Спасибо, я прогуглил только что, но народ жалуется на time limit и out of memory при использовании PHPExcel на больших количествах строк в файле. А что если перенести хлс в тхт и создать массив на файл, не знаете ли будет ли поиск осуществляться замедленным?
#3
elik_asad,22 сен 2015
-
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 руб./за проект