Вывод данных Spreadsheet_Excel_Writer поврежден

Я использую Spreadsheet_Excel_Writer для генерации .xls файла, и он хорошо работает, пока я не должен иметь дело с большим объемом данных. На определенном этапе это просто пишет некоторые символы ерунды и выходы, заполняющие определенные столбцы. Однако некоторые столбцы являются полем в конец (обычно числовые данные)

Я не совсем уверен, как xls документ формируется: строка строкой или седло седлом... Также это - очевидно, не ошибка в строке, потому что, когда я отключил некоторые данные, ошибка появляется немного далее.

Я думаю, что нет никакой потребности во всем моем коде

вот некоторые основы

$filename = 'file.xls';
$workbook = & new Spreadsheet_Excel_Writer(); 
$workbook->setVersion(8); 
$contents =& $workbook->addWorksheet('Logistics');
$contents->setInputEncoding('UTF-8');

$workbook->send($filename);

//here is the part where I write data down
$contents->write(0, 0, 'Field A');
$contents->write(0, 1, 'Field B');
$contents->write(0, 2, 'Field C');

$ROW=1;
foreach($ordersArr as $key=>$val){
  $contents->write($ROW, 0, $val['a']);
  $contents->write($ROW, 1, $val['b']);
  $contents->write($ROW, 2, $val['c']);

  $ROW++;
}
$workbook->close(); 
8
задан dr3w 20 April 2010 в 14:15
поделиться

2 ответа

Электронная таблица Spreadsheet_Excel_Writer близка к тому, чтобы быть устаревшей со стороны PEAR. Я предлагаю вам вместо этого попробовать использовать phpexcel - http://phpexcel.codeplex.com/ .

1
ответ дан 5 December 2019 в 05:34
поделиться

Хорошо! Я нашел, в чем проблема. О чем я не упомянул, так это о том, что мне пришлось установить кодировку UTF-8 и вывести русский текст с кириллической кодировкой. Так что для меня эти строки были необходимы

  $workbook->setVersion(8);
  ...
  $contents->setInputEncoding('UTF-8');

, но S_E_W с setVersion (8) сгенерировал плохой файл BIFF8, ​​который испортил все мои xls, если вывод превысил определенное количество байтов.Его не удалось открыть в MS Office и открыть с поврежденными данными в Oo ...

Возможное решение, которое я нашел в Интернете, - это изменение следующих строк

<...> \ Spreadsheet \ Excel \ Writer \ Workbook.php

$this->_codepage = 0x04E4

измените значение на 0x04E3 (кодовая страница для Windows-1251)

<...> \ Spreadsheet \ Excel \ Writer \ Format.php

$this->_font_charset = 0

измените значение на 0xCC (chrset ANSI Cyrillic) .

Это должно помочь тем, кто использует кириллические буквы. Я собираюсь попробовать это.

И да, эта библиотека ТАК устарела. Я перейду на http://phpexcel.codeplex.com/ Спасибо за совет

UPD: Решение, приведенное выше, похоже, не работает = \ И я не нашел нигде в веб-патче или решении, которое помогает, а последняя версия (0.9.2) не решает проблему. Так что я полагаю, что это все еще ОШИБКА, которую никогда не исправить ...

2
ответ дан 5 December 2019 в 05:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: