9

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(); 
4

4 に答える 4

19

私は同じ問題を抱えていました.私のために働くこの解決策を見つけました:

http://pear.php.net/bugs/bug.php?id=19284&edit=3

[2012-08-08 17:12 UTC] identit (Vincent Dubourg)

解決策は、Root.php \ 623 行目を変更することです。

fwrite($FILE, pack("V", 1));

fwrite($FILE, pack("V", $num_sb_blocks));

ファイルは、パッケージ OLE 1.0.0RC2 (ベータ) の pear/OLE/PPS/Root.php です。

于 2012-10-08T14:57:28.180 に答える
2

Ok!私は何が問題なのかを見つけました。私が言及しなかったことは、エンコーディングを UTF-8 に設定し、キリル文字セットを持つロシア語のテキストを出力しなければならなかったことです。だから私にとってこれらの行は必要でした

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

しかし、setVersion(8) を使用した S_E_W は不良な 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:上記の解決策は機能しないようです =\ そして、Web パッチまたはトリックを実行するソリューションのどこにも見つかりませんでした。最新バージョン (0.9.2) は問題を解決しません。したがって、これはまだバグであり、修正されることはないと思います...

于 2010-04-20T13:56:25.693 に答える
1

Spreadsheet_Excel_Writer は、PEAR によって廃止されようとしています。代わりにphpexcel - http://phpexcel.codeplex.com/ - を使用することをお勧めします。

于 2010-04-20T13:14:12.267 に答える