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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемы с кодировками при конвертации в *.xls, русский шрифт превращяется... 
:(
    Опции темы
shootnix
Дата 3.9.2005, 10:48 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Пиплз! Ай ниид хелп! Короче: задача создать из скрипта таблицу Excel. Для этого скачал модуль Spreadsheet-WriteExcelXML.ppd. Всё бы ничего, да вот проблема: мать его, Excel перекодит все данные в юникод. Епстессно, с английским всё обстоит просто великолепно, а вот русские буквы страдают по причине 8-го бита. Что делать? Мож кто встречался с такой хернёй? Пробовал Lingua::RU::Charset, но что-то не прёт. Всё осложняется тем, что у меня WinPerl от ActiveState 5.8.7.813 ну и Винды ХР соответственно...
  Вверх
Usya
Дата 3.9.2005, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 7.6.2005

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



Думаю Spreadsheet::WriteExcel тебе поможет. Там кажется и пример соответствующий есть smile
--------------------
Я не волшебник, я только учусь...
PM MAIL   Вверх
sharq
Дата 3.9.2005, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

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



shootnix есть метод set_codepage().

К модулю прилагается ряд примеров:
Цитата
   
    Unicode
    =======
    unicode.pl              Simple example of using Unicode UTF16 strings.
    unicode_japan.pl        Write Japanese Unicode strings using UTF16.
    unicode_list.pl        List the chars in a Unicode font.
    unicode_2022_jp.pl      Japanese: ISO-2022-JP to utf8 in perl 5.8.
    unicode_8859_11.pl      Thai:    ISO-8859_11 to utf8 in perl 5.8.
    unicode_8859_7.pl      Greek:    ISO-8859_7  to utf8 in perl 5.8.
    unicode_big5.pl        Chinese:  BIG5        to utf8 in perl 5.8.
    unicode_cp1251.pl      Russian:  CP1251      to utf8 in perl 5.8.
    unicode_cp1256.pl      Arabic:  CP1256      to utf8 in perl 5.8.
    unicode_koi8r.pl        Russian:  KOI8-R      to utf8 in perl 5.8.
    unicode_polish_utf8.pl  Polish :  UTF8        to utf8 in perl 5.8.
    unicode_shift_jis.pl    Japanese: Shift JIS  to utf8 in perl 5.8.


Тебе нужен unicode_cp1251.pl

Если не получится, то можно воспользоваться модулем cyrillic и в ручную переконвертировать данные.

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
shootnix
Дата 3.9.2005, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



sharq
Спасиба, но что-то я не нахожу енти примеры, мож не там ишшу...
PM WWW ICQ   Вверх
sharq
Дата 3.9.2005, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

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



shootnix плохо ищешь! smile

Код

#!/usr/bin/perl -w

##############################################################################
#
# A simple example of converting some Unicode text to an Excel file using
# Spreadsheet::WriteExcelXML and perl 5.8.
#
# This example generates some Russian from a file with CP1251 encoded text.
#
#
# reverse('©'), September 2004, John McNamara, [email protected]
#



# Perl 5.8 or later is required for proper utf8 handling. For older perl
# versions you should use UTF16 and the write_unicode() method.
# See the write_unicode section of the Spreadsheet::WriteExcelXML docs.
#
require 5.008;

use strict;
use Spreadsheet::WriteExcelXML;


my $workbook  = Spreadsheet::WriteExcelXML->new("unicode_cp1251.xls");
my $worksheet = $workbook->add_worksheet();
   $worksheet->set_column('A:A', 50);


my $file = 'unicode_cp1251.txt';

open FH, '<:encoding(cp1251)', $file  or die "Couldn't open $file: $!\n";

my $row = 0;

while (<FH>) {
    next if /^#/; # Ignore the comments in the sample file.
    chomp;
    $worksheet->write($row++, 0,  $_);
}


__END__



smile




--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Usya
Дата 3.9.2005, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 7.6.2005

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



Так и для Spreadsheet::WriteExcel в комплекте даются примеры

Цитата

    Unicode
    =======
    unicode.pl              Simple example of using Unicode UTF16 strings.
    unicode_japan.pl        Write Japanese Unicode strings using UTF16.
    unicode_cyrillic.pl    Write Russian cyrillic strings using UTF8.
    unicode_list.pl        List the chars in a Unicode font.
    unicode_2022_jp.pl      Japanese: ISO-2022-JP to utf8 in perl 5.8.
    unicode_8859_11.pl      Thai:    ISO-8859_11 to utf8 in perl 5.8.
.................


хотя, shootnix, решать тебе!

P.s.
Хотя, честно говоря, не работал ни с тем, ни с другим. smile
Просто была аналогичная проблема, когда парсил *.xls-файлы.
--------------------
Я не волшебник, я только учусь...
PM MAIL   Вверх
shootnix
Дата 4.9.2005, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Thanks All! Примеры нашлись в другом пакадже - этого же модуля, но от ЦПАН. Работает, а ну куда она ещё денется? ;)
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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