Php 电子表格\u Excel\u书写器数据输出损坏
我使用电子表格\u Excel\u Writer生成.xls文件,在我必须处理大量数据之前,它工作正常。在某个阶段,它只是在某些栏目里写些废话。但是,有些列的字段一直到最后(通常是数字数据) 我不太清楚xls文档是如何形成的:一行一行,还是一列一列。。。而且,这显然不是字符串中的错误,因为当我剪切一些数据时,错误会显示得更远一些 我认为我所有的代码都没有必要 这里有一些必需品Php 电子表格\u Excel\u书写器数据输出损坏,php,excel,pear,xls,Php,Excel,Pear,Xls,我使用电子表格\u Excel\u Writer生成.xls文件,在我必须处理大量数据之前,它工作正常。在某个阶段,它只是在某些栏目里写些废话。但是,有些列的字段一直到最后(通常是数字数据) 我不太清楚xls文档是如何形成的:一行一行,还是一列一列。。。而且,这显然不是字符串中的错误,因为当我剪切一些数据时,错误会显示得更远一些 我认为我所有的代码都没有必要 这里有一些必需品 $filename = 'file.xls'; $workbook = & new Spreadsheet_Ex
$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();
电子表格(Excel)(Writer)几乎被PEAR否决。我建议您尝试使用phpexcel--而不是。好的!我发现了问题所在。我没有提到的是,我必须将编码设置为UTF-8,并输出具有西里尔字母字符集的俄语文本。所以对我来说,这些线是必要的
$workbook->setVersion(8);
...
$contents->setInputEncoding('UTF-8');
但是带有setVersion(8)的S_E_W生成了坏的BIFF8文件,如果输出超过一定的字节数,就会把我所有的xls都搞乱。它无法在MS Office中打开,并且在Oo中使用损坏的数据打开
我在网上找到的可能的解决方案是改变以下几行
\电子表格\Excel\Writer\Workbook.php
$this->_codepage = 0x04E4
将值更改为0x04E3(Windows-1251的代码页)
\电子表格\Excel\Writer\Format.php
$this->_font_charset = 0
更改值а0xCC(chrset ANSI西里尔字母)
对于那些使用西里尔字母的人来说,这应该是个好办法。我要试试这个
是的,这个图书馆已经过时了。我将转到
谢谢你的建议
UPD:上述解决方案似乎不起作用=\而且我在web修补程序或解决方案中找不到任何地方可以解决这个问题,最新版本(0.9.2)也不能解决这个问题。所以我认为这仍然是一个BUG,永远不会被修复…我也有同样的问题,我找到了适合我的解决方案: [2012-08-08 17:12 UTC]identit(文森特·杜堡) 解决方案是Root.php 623中的更改:
fwrite($FILE, pack("V", 1));
到
文件名为pear/OLE/PPS/Root.php,位于OLE 1.0.0RC2(beta)包中。我知道这是一篇旧文章,但我遇到了同样的问题,并通过恢复到电子表格\u Excel\u 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
希望这对将来的人有所帮助。(可选)您能接受mabi的答案作为“正确答案”吗?它确实解决了问题,这将为其他人省去很多麻烦。为什么生成的文件是只读的?是否可以设置任何选项来避免这种情况?…但请检查PHP是否启用了zip扩展。请注意,PHPExcel需要大量内存…我开始使用PHPExcel,但随后我的脚本必须生成的数据量增加,2Gb的RAM不再足够。电子表格Excel Writer速度更快,占用内存更少,所以如果您计划使用PHPExcel,请记住这一点是的,这很有帮助!非常感谢。到目前为止,这是最简单的解决方案。还修复了0.9.3 Excel Writer版本中的另一个错误,该版本会抛出一个“通过引用传递呼叫时间”的问题big big thansk以获取您的答案
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