Spreadsheet_Excel_Writer veri çıkışı hasarlı

4 Cevap php

Ben. Xls dosyası oluşturmak için Spreadsheet_Excel_Writer kullanmak ve veri büyük miktarda ile uğraşmak zorunda kadar iyi çalışıyor. Bazı sahnede sadece bazı saçma karakter yazar ve bazı sütunlar doldurma sonlandırılıyor. Ancak bazı sütunlar kadar sonuna kadar alan vardır (genellikle sayısal veriler)

Ben xls belgesi nasıl oluştuğunu pek emin değilim: ben bazı verileri kestiğinde, hata biraz daha görünür, çünkü col ile satır veya col tarafından satır ... Ayrıca, belli bir dize bir hata değildir .

Benim kod tüm gerek olduğunu düşünüyorum

Burada bazı şartları vardır

$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 Cevap

Tamam! Ben sorunun ne olduğunu buldum. Ben söz vermedi şey i UTF-8 ve Kiril charset var çıkış rusça metin kodlamasını ayarlamak zorunda olduğunu. Bu yüzden benim için bu satırları gerekliydi

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

ama setVersion ile S_E_W (8) çıkış bayt belirli bir miktar aşıldığında bütün xls berbat kötü BIFF8 dosyası oluşturulur. MS Office açıldı ve Oo bozuk veri ile açılamadı ...

Ben web buldum olası çözüm aşağıdaki satırları değişiyor

<...> Elektronik Tablo \ \ Excel \ Writer \ Workbook.php

$this->_codepage = 0x04E4

0x04E3 için değişim değeri (Windows-1251 için kod sayfası)

<...> Elektronik Tablo \ \ Excel \ Writer \ Format.php

$this->_font_charset = 0

değişim değeri на 0xCC (chrset ANSI Kiril).

Bu Kiril harfleri kullanmak isteyenler için hile yapmak gerekir. Ben bu denemek üzereyim.

And, yes, this library is SO outdated. I'll be transferring to http://phpexcel.codeplex.com/ Thanks for advice

UPD: Yukarıdaki çözüm = \ çalışmak için görünmüyor Ve ben hile yapar web yama veya çözüm üzerinde herhangi bir yerde bulunan sığınak ve (0.9.2 olan) son sürümü sorunu çözmüyor. Yani ben bu hala sabit asla bir BUG olduğunu tahmin ...

Ben aynı sorunu vardı, ben benim için çalışıyor bu çözüm bulundu:

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

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

Çözelti Root.php \ hattında 623 değişimdir:

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

karşı

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

Dosya armut / OLE / PPS / Root.php paketi OLE 1.0.0RC2 in (beta) olduğunu

Spreadsheet_Excel_Writer PEAR tarafından onaylanmaz yakındır. Yerine - http://phpexcel.codeplex.com/ - Seni phpexcel kullanmayı deneyin öneririm.

Ben eski bir yazı olduğunu biliyorum ama ben aynı sorunu vardı ve Spreadsheet_Excel_Writer 0.9.2 ve OLE-1.0.0RC1 geri dönmeyi bunu çözdü.

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

Bu gelecekte birisi yardımcı olur umarım.