Spreadsheet_Excel_Writer数据输出已损坏
我使用Spreadsheet_Excel_Writer来生成.xls文件,它工作正常,直到我必须处理大量的数据。 在某个阶段,它只是写一些无聊的字符,并退出填补某些列。 但是,有些列是字段到最后(通常是数字数据)
我不太清楚xls文档是如何形成的:一行一行,或者一列一列…另外它显然不是一个string中的错误,因为当我删除了一些数据时,错误出现了一点点。
我认为没有必要在我所有的代码
这里有一些必需品
$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();
我有同样的问题,我发现这个解决scheme适用于我:
http://pear.php.net/bugs/bug.php?id=19284&edit=3
[2012-08-08 17:12 UTC] identit(Vincent Dubourg)
解决方法是在Root.php \ line 623中更改:
fwrite($FILE, pack("V", 1));
至
fwrite($FILE, pack("V", $num_sb_blocks));
该文件是pear / OLE / PPS / Root.php包中的OLE 1.0.0RC2(beta)
我知道这是一个旧的post,但我有同样的问题,并解决了它恢复到Spreadsheet_Excel_Writer 0.9.2和OLE-1.0.0RC1。
pear uninstall Spreadsheet_Excel_Writer-0.9.3 pear uninstall OLE-1.0.0RC2 pear install OLE-1.0.0RC1 pear install Spreadsheet_Excel_Writer-0.9.2
希望这有助于未来的人。
Spreadsheet_Excel_Writer接近被PEAR弃用。 我build议你尝试使用phpexcel – http://phpexcel.codeplex.com/ – 。
好! 我发现了什么问题。 我没有提到的是我必须将编码设置为UTF-8并输出具有西里尔字符集的俄文文本。 所以对我来说这些线是必要的
$workbook->setVersion(8); ... $contents->setInputEncoding('UTF-8');
但是带有setVersion(8)的S_E_W生成了错误的BIFF8文件,如果输出超过了一定数量的字节,就会搞乱我所有的xls。 无法在MS Office中打开,并在OO中打开损坏的数据…
我在网上find的可能的解决scheme是改变以下几行
<…> \电子表格\ EXCEL \作家\ Workbook.php
$this->_codepage = 0x04E4
将值更改为0x04E3(Windows-1251的代码页)
<…> \电子表格\ EXCEL \作家\ Format.php
$this->_font_charset = 0
将值改为0xCC(chrset ANSI Cyrillic)。
那些使用西里尔字母的人应该这样做。 我即将试用这个。
而且,这个图书馆已经过时了。 我将转移到http://phpexcel.codeplex.com/感谢您的build议
UPD:上面的解决scheme似乎没有工作= \而且我没有发现networking补丁或解决scheme的任何地方做的伎俩,最新版本(这是0.9.2)不能解决问题。 所以我认为这仍然是一个BUG,这永远不会被修复…