[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Считать данные из .xls (Excel) файла
olgatcpip
Здравствуйте.

Есть таблица в Excel'евской книге (.xls). Надо считать эту таблицу в мои переменные.

Знаю, что можно перевести в csv, но такой вариант мне не интересен.
Пробовала понять как это сделать с помощью СОМ , не поняла как получить хоть строку и, соответствено, значение столбца в этой строке.

Кто-нибудь работал с этим? Скажите как, где найти нужные функции, напишите примерчик, пожалуста.



Спустя 1 час, 2 минуты, 1 секунда (17.05.2009 - 09:21) olgatcpip написал(а):
А я поняла как оно делается. smile.gif
вот эти ссылки мне помогли:

http://www.spravkaweb.ru/php/sovet/excelcom

http://www.spravkaweb.ru/php/sovet/excelcom/open

И вот что получилось:

PHP
$doc "c:\www/4meals/_prs/lnks.xls";
$xls = new COM("Excel.Application"); // Создаем новый COM-объект

$xls->Visible 0;      // Заставляем его не отобразиться. отображение мне не нужно.
$xls->Workbooks->Open($doc);

$i='2';
$rangeValue $xls->Range("C".$i);
while(
$rangeValue){
    if(
$i>1600){echo "В бесконечность..."; break;} // чтоб не ушло туды
//echo "\r\n".'<br />C'.$i.' ='.$rangeValue->Value;

$xls->Range("F".$i)->Value='значение в F'.$i;
$i++;
$rangeValue $xls->Range("C".$i);
}
echo 
"<br />Конец.";

$xls->Workbooks[1]->Save();
$xls->Workbooks[1]->Close(false);
$xls->Quit();
echo 
'end of end.';
$xls null;
unset(
$xls);


biggrin.gif Может кому надо будет smile.gif

Спустя 7 часов, 54 минуты, 2 секунды (17.05.2009 - 17:15) olgatcpip написал(а):
Вот недостаток этого всего придуманого: работает только в Windows. Кто-нить знает как это заставить работать в unixподобной ОС?

Спустя 2 часа, 13 минут, 44 секунды (17.05.2009 - 19:28) kirik написал(а):
Может это поможет..

Спустя 1 день, 22 часа, 19 минут, 38 секунд (19.05.2009 - 17:48) olgatcpip написал(а):
Спасибо, kirik
Вот у этой же задачки продолжение есть. Взять из одного столбца url , и взять у странички с таким url то что в <title>тут</title>
Я это взяла.
Проблема в след-ем если сайт в кодировке utf надо перекодировать.

is_utf8 функцию я нашла - проверяет яв-ся ли сайт в кодировке utf.
не могу найти фенкцию is_koi8r или что-то такое.

И второе вот на этом форуме нашла utf8_win функцию и перевожу ей.
но с этого сайта переводит заголовок таки. Видно is_utf8 признал его утфным.


привожу пример скрипта is_utf8 :
PHP
function is_utf8(&$data, $is_strict = true)
{
    if (is_array($data))
    {
        foreach ($data as $k => &$v) if (! is_utf8($v, $is_strict)) return false;
        return true;
    }
    elseif (is_string($data))
    {
        /*
        Рег. выражения имеют внутренние ограничения на длину повторов шаблонов поиска *, +, {x,y}
        равное 65536, поэтому используем preg_replace() вместо preg_match()
        */
        $result = $is_strict ?
                  preg_replace('/(?>[\x09\x0A\x0D\x20-\x7E]           # ASCII
                                  | [\xC2-\xDF][\x80-\xBF]            # non-overlong 2-byte
                                  |  \xE0[\xA0-\xBF][\x80-\xBF]       # excluding overlongs
                                  | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
                                  |  \xED[\x80-\x9F][\x80-\xBF]       # excluding surrogates
                                  |  \xF0[\x90-\xBF][\x80-\xBF]{2}    # planes 1-3
                                  | [\xF1-\xF3][\x80-\xBF]{3}         # planes 4-15
                                  |  \xF4[\x80-\x8F][\x80-\xBF]{2}    # plane 16
                                 )*
                                /sx'
, '', $data) :
                  #это рег. выражение проверяет более широкий диапазон ASCII [\x00-\x7E]
                  preg_replace('/.*/su', '', $data);
        if (function_exists('preg_last_error'))
        {
            if (preg_last_error() === PREG_NO_ERROR) return strlen($result) === 0;
            if (preg_last_error() === PREG_BAD_UTF8_ERROR) return false;
        }
    }
    elseif (is_scalar($data) || is_null($data)) return true;  #~ null, integer, float, boolean
    #~ object or resource
    trigger_error('Scalar, null or array type expected, ' . gettype($data) . ' given ', E_USER_WARNING);
    return false;
}


Кто-нить знает почему? есть тута ошибка. Я не нахожу.
Если у вас есть функции, которые мне помогут, дайте пожалйста.

Спасибо.

Спустя 2 часа, 48 минут, 53 секунды (19.05.2009 - 20:37) olgatcpip написал(а):
Так вот тут я нашла утишение. И присоединяюсь к выводам.

Для меня тема закрыта. smile.gif


_____________
Ласковое слово и кошке приятно... Плюсик в карму сойдет wink.gif
*smarty дока - новая любовь
Моё рукотворение ругайте, хвалите smile.gif
Веду маленький блог
в этом блоге публикую новые работы
WMR217126627282 wink.gif

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.