проблема при работе со Spreadsheet Excel Writer

rettler

Новичок
проблема при работе со Spreadsheet Excel Writer

Работаю с этой библиотекой и столкнулся со следующей проблемой: текстовые данные, размером больше 256 символов, обрезаются при вставке в ячейку. Кто-нибудь сможет подсказать, как это обойти?
 

Sander

Новичок
Решение может быть следующим (лично для меня данный вариант поставил больше вопросов, чем дал ответов).

Если применить следующий метод
$workbook->setVersion(8);
то записывать длынные строки можно будет с помощью $worksheet->writeString()

Но только после этого у меня начались проблемы с кодировками русских символов... которые я пока не решил. При попытке перекодировки или установки $worksheet->setInputEncoding(), типичная для меня картина сейчас - это "файл был поврежден настолько серьезно, что его восстановление невозможно".

Если у кого-то появятся какие-то соображения на этот счет, был бы очень плагодарен.

-~{}~ 19.12.06 19:14:

Т.е. проблема аналогичная той, которая описана здесь http://pear.php.net/bugs/bug.php?id=1805.

Вот только варианты ее решения не работают...
 

Nick_K

Новичок
В общем то частично проблема решена.
Во первых надо подключить библиотеку php_iconv.dll в разделе Extensions файла php.ini.
В принципе мне этого хватило, но на всякий случай нашел еще один способ:

1. $workbook->setVersion(8);

2. $worksheet->setInputEncoding('CP1251');

3. в Spreadsheet/Excel/Writer.php после строчки 67 (метод send())
дописываем
header("Content-Encoding: windows-1251");

4. Spreadsheet/Excel/Writer/Workbook.php:200 поправить
$this->_codepage = 1200 // FIXME: should change for BIFF8

5. Spreadsheet/Excel/Writer/Workbook.php:1445 поправить
$encoding = 1; // assume there are no Unicode strings

Но! Размер файла теперь может быть не больше < ~8224кб
Может есть у кого средство получше?

Пример работы:
PHP:
include_once('d:/PHP/includes/Spreadsheet/Excel/Writer.php'); 

$workbook = new Spreadsheet_Excel_Writer();
$workbook->setVersion(8);
$workbook->send('zvit2.xls');
$worksheet =& $workbook->addWorksheet('Звіт 2');
$worksheet->setInputEncoding('CP1251');

$worksheet->write(1, 0, 'русский');
$workbook->close();
-~{}~ 15.03.07 14:17:

Вот окончательное решение всех проблем
http://pear.php.net/bugs/bug.php?id=1572
 
Сверху