Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SpreadSheet-ParseExcel, кодировка и едрёны грабли. Вечная проблема, как я посмотрю 
:(
    Опции темы
shootnix
Дата 7.6.2006, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 3.9.2005
Где: Казахстан

Репутация: 2
Всего: 2



Здравствуйте, товарисчи. Опять вопрос на тему парсинга Excel.. К сожалению, сколько не обсматривал тем на форуме здесь, так ничего конкретного не нашёл. Проблема банальная, я беру файлик .xls, пишут там типа прайса что-то, потом просто используя стандартный пример из доку по модулю его пробую парсить. Вот что получается. (там где всякие квадратики и прочая смурь - русский текст)

Код

use strict;
use encoding "ru_RU.CP1251";
use Spreadsheet::ParseExcel;
my $oBook = Spreadsheet::ParseExcel::Workbook->Parse('price.xls');
my($iR, $iC, $oWkS, $oWkC);
foreach my $oWkS (@{$oBook->{Worksheet}}) {
    print "--------- SHEET:", $oWkS->{Name}, "\n";
    for(my $iR = $oWkS->{MinRow} ; defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow} ; $iR++) {
        for(my $iC = $oWkS->{MinCol} ; defined $oWkS->{MaxCol} && $iC <= $oWkS->{MaxCol} ; $iC++) {
            $oWkC = $oWkS->{Cells}[$iR][$iC];
            print "( $iR , $iC ) =>", $oWkC->Value, "\n" if($oWkC);
        }
    }
}

вот, что на выходе:
Код

--------- SHEET:8AB1
( 0 , 0 ) =>?82> "0@O"
( 0 , 1 ) =>100
( 1 , 0 ) =>2>1;0 "'CE>=L"
( 1 , 1 ) =>300
( 2 , 0 ) =>2>4:0 " B0, :>B@0O 0?>A;O ?820"
( 2 , 1 ) =>200
( 3 , 0 ) =>A5;Q4:0 ":50=8G5A:0O"
( 3 , 1 ) =>130
( 4 , 0 ) =>hello from english
( 4 , 1 ) =>450
--------- SHEET:8AB2
--------- SHEET:8AB3


Товарисчи, прошу очень, хелпми! Юзать пытался и encode и что ещё... Может просто не так юзал? Просто покажите, где поправить надо. 
PM WWW ICQ   Вверх
nitr
Дата 8.6.2006, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



Были данные темы на форуме... внимательней товагищи (с)
Используй модуль Encode. Можешь в поиск форума ввести Encode

Добавлено @ 16:44 
+ специальные примеры в комплекте с модулем smile
Если всё же будешь использовать модуль Encode, то меняй декодируй $oWkC->Value.
Ещё не забудь, что если у тя командная строка в Windows - кодировка cp866 (вывод)
*nix - koi8-r (стандартно)

Добавлено @ 16:47 
Код

use Encode qw(decode);
....
print "( $iR , $iC ) =>", decode('cp1251', $oWkC->Value), "\n" if($oWkC); #в твоём примере 14 строка


Добавлено @ 16:50 
Вот кстати ещё пример http://forum.vingrad.ru/index.php?showtopi...st&p=646970 


--------------------
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0413 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.