[PHP] pear Spreadsheet_Excel_Writer

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Beste tweakers,

Al een paar jaar genereer ik excel bestanden met Spreadsheet_Excel_Writer, een pear package.
Nou test ik de excel bestanden zelf met Excel 2003 en openoffice 2.
Echter krijg ik van een klant te horen dat het niet goed werkt met Excel 2007.

Na zelf wat testjes gedaan te hebben heb ik het volgende ondekt:
- Op alle servers wordt er een xls bestand gegenereerd die ik altijd kan openen in Excel 2003 en Open Office 2
- Ik kan het xls bestand wel openen als ik het script op een recente server draai, maar niet op de server van de klant.
- In de broncode van de xls bestanden zie ik kleine verschillen (dit is natuurlijk het probleem)

Om te testen heb ik de pear broncode losgekoppeld en zelf in een map geplaatst en deze wordt geinclude door de scripts. Ik maak dus geen gebruik van de pear installatie op de server, alle servers gebruiken dezelfde pear code.

De server van de klant:
- Apache 2.0 en PHP 5.0.2 (linux)

Servers waar het wel op werkte:
- Apache 2.0 en PHP 5.1.6 (linux)
- Apache 2.0 en PHP 5.2.4 (windows)

Waarschijnlijk wordt het omzetten naar binaire code op de "oude" server anders gedaan dan de "nieuwe" servers. Maar dit is een aanname...

Weet iemand hier meer van?
En vooral: is het mogelijk om op te lossen zonder naar een andere server te verhuizen?

Verwijderd

Verwijderd schreef op woensdag 24 september 2008 @ 11:05:
- Ik kan het xls bestand wel openen als ik het script op een recente server draai, maar niet op de server van de klant.
en waarmee heb je het geopend? Excell 2003 of Excell 2007?

  • Cartman!
  • Registratie: April 2000
  • Niet online
- In de broncode van de xls bestanden zie ik kleine verschillen (dit is natuurlijk het probleem)
Wat voor kleine verschillen dan? Lijkt me dat je het juist in die kleine verschillen moet zoeken ;)

  • Noork
  • Registratie: Juni 2001
  • Niet online
De versies van PHP en Apache lijkt me het verschil eigenlijk niet uit te maken. Zijn de PEAR versies van Spreadsheet_Excel_Writer wel gelijk?

Verwijderd

Noork schreef op woensdag 24 september 2008 @ 14:00:
De versies van PHP en Apache lijkt me het verschil eigenlijk niet uit te maken. Zijn de PEAR versies van Spreadsheet_Excel_Writer wel gelijk?
Ik maak dus geen gebruik van de pear installatie op de server, alle servers gebruiken dezelfde pear code.
als we de man mogen geloven, is dat niet het probleem, want dat heeft hij reeds uitgetest.

  • Cartman!
  • Registratie: April 2000
  • Niet online
Misschien het verkeerde include_path zodat toch de verkeerde versie wordt gebruikt? Is maar een idee...

Verwijderd

Topicstarter
Verwijderd schreef op woensdag 24 september 2008 @ 13:38:
[...]

en waarmee heb je het geopend? Excell 2003 of Excell 2007?
Op de recente servers kan ik het overal in openen.
Op de "oude" (PHP 5.0.2) server kan ik het niet openen in Ecxel 2007 (maar wel ik Excel 2003 en Open Office 2003)
Noork schreef op woensdag 24 september 2008 @ 14:00:
De versies van PHP en Apache lijkt me het verschil eigenlijk niet uit te maken. Zijn de PEAR versies van Spreadsheet_Excel_Writer wel gelijk?
Ja de versies zijn allemaal gelijk.
Ik kan een testcase als zip aanbieden als iemand daar interesse in heeft.
Cartman! schreef op woensdag 24 september 2008 @ 16:04:
Misschien het verkeerde include_path zodat toch de verkeerde versie wordt gebruikt? Is maar een idee...
Nope, ook niet.
Cartman! schreef op woensdag 24 september 2008 @ 13:42:
[...]
Wat voor kleine verschillen dan? Lijkt me dat je het juist in die kleine verschillen moet zoeken ;)
De code is voor ongeveer 99% hetzelfde.
Ik zal wel even een testcase maken die jullie kunnen bekijken.

  • Noork
  • Registratie: Juni 2001
  • Niet online
We hebben geen glazen bol, dus het lijkt me handig dat je de relevante code hier plaatst en daarbij de .xls bestanden (van zowel de nieuwe als oude server). Het blijft anders gissen.

Nog een idee:
Wellicht zitten er fouten in je code en staat b.v. het error-reporting-niveau op de servers anders?

Verwijderd

Topicstarter
Server 1 (waar het fout gaat):
http://www.firstcontactdesign.nl/export_xls/export.php

Error melding die ik krijg in Excel 2007:
Excel found unreadable content in 'test.xls'. Do you want to recover the contents of this workbook? If you trust the source of this workbook, click yes.

Resultaat wat ik krijg met Excel 2007:
http://www.stijlloos.nl/export_xls/server1.jpg

Server 2 (waar het goed gaat):
http://www.stijlloos.nl/export_xls/export.php

Resultaat wat ik krijg met Excel 2007:
http://www.stijlloos.nl/export_xls/server2.jpg

Bron bestanden:
http://www.stijlloos.nl/export_xls/export_xls.zip

Even voor de duidelijkheid: Beide servers draaien precies dezelfde code.

  • remmelt
  • Registratie: Januari 2001
  • Laatst online: 09-04 12:25
Ik neem aan dat je al hebt geprobeerd die 5.0.2 machine over te (laten) zetten naar een recente versie? Eventueel kan je wijzen op kritieke veiligheidsbugs die zijn opgelost. Maar goed, hostend Nederland kennende zal het wel weer niet kunnen dan wel mogen.

Misschien kan je proberen een virtual server op te zetten met php 5.oud, zodat je kan zien waar het aan ligt. Wanneer je dat dichtgetimmerd hebt, kun je de klant vertellen: of upgraden, of waarschuwing blijven zien. Dat werkt meestal wel.

Succes!

Verwijderd

Topicstarter
remmelt schreef op woensdag 24 september 2008 @ 18:14:
Ik neem aan dat je al hebt geprobeerd die 5.0.2 machine over te (laten) zetten naar een recente versie? Eventueel kan je wijzen op kritieke veiligheidsbugs die zijn opgelost. Maar goed, hostend Nederland kennende zal het wel weer niet kunnen dan wel mogen.
Nee, dat zit er inderdaad niet in.
Misschien kan je proberen een virtual server op te zetten met php 5.oud, zodat je kan zien waar het aan ligt. Wanneer je dat dichtgetimmerd hebt, kun je de klant vertellen: of upgraden, of waarschuwing blijven zien. Dat werkt meestal wel.
Misschien is PHP het probleem niet, maar een lib.
Dat gevoel heb ik eerder, omdat alles wel werkt, maar de binaire code kleine verschillen bevat.

  • Bolukan
  • Registratie: Oktober 2002
  • Laatst online: 23-08 23:43
Er zit een verschil in de ROOTENTRY (Positie Hx0a44 en Hx0a48). Dit betreft een 4 bytes DirID, die hier -1 moet zijn. Bij de foute xls is het Hx7FFFFFFF ipv HxFFFFFFFF.
Verschillen op positie Hx0a64 (2x8 bytes) is logisch (time stamp).
Probleem dat een LONG foutief op Hx7FFFFFFF staat, doet zich ook voor op Hx0ac4, Hx0ac8 en Hx0acc. (DirID's van Book).
En tenslotte nog een keer op Hx01c4, hier springt de -3 (SAT SecID) HxFFFFFFFD op Hx7FFFFFFF.

Lijkt dus iets van een variabele kwestie (Assigned Long vs unassigned long).

Verwijderd

Topicstarter
[b][message=30789532,noline]
Lijkt dus iets van een variabele kwestie (Assigned Long vs unassigned long).
Wat kan hier de oorzaak van zijn?
Dat het een andere PHP versie is die variabelen op een andere manier verwerkt?

Iemand enig idee of ik dit kan oplossen en hoe?

Ik kom er net achter dat ik nog een variabele vergeten was weg te halen bij het opschonen van het script ( "$l_aRow["site"]" in regel 34 ). Probleem blijft, er staat nu een nieuwe versie online.

[ Voor 26% gewijzigd door Verwijderd op 25-09-2008 08:33 ]


  • Noork
  • Registratie: Juni 2001
  • Niet online
Ik heb het script zojuist getest, en zie op zich geen rare dingen. Lijkt me dat het niet zozeer aan de code ligt.

Zou het geen verschil kunnen zijn in encoding van de pagina (wellicht UTF-8 vs. ISO....)? Kun je testen of daar verschillen in zijn tussen de 2 configuraties?

Je geeft het include pad hard aan, maar wellicht gaat PHP dan gekke dingen doen omdat het include pad anders is. Probeer eens alleen je eigen map toe te voegen aan het bestaande pad. zoiets:
PHP:
1
2
3
4
//set pear path
$path = getcwd();
$path = $path . "\PEAR";
ini_set('include_path',ini_get('include_path'). ';' .$path. ';');

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Noork schreef op donderdag 25 september 2008 @ 09:12:
Ik heb het script zojuist getest, en zie op zich geen rare dingen. Lijkt me dat het niet zozeer aan de code ligt.

Zou het geen verschil kunnen zijn in encoding van de pagina (wellicht UTF-8 vs. ISO....)? Kun je testen of daar verschillen in zijn tussen de 2 configuraties?

Je geeft het include pad hard aan, maar wellicht gaat PHP dan gekke dingen doen omdat het include pad anders is. Probeer eens alleen je eigen map toe te voegen aan het bestaande pad. zoiets:
PHP:
1
2
3
4
//set pear path
$path = getcwd();
$path = $path . "\PEAR";
ini_set('include_path',ini_get('include_path'). ';' .$path. ';');
Helaas, werkt dit ook niet:
http://www.firstcontactdesign.nl/export_xls/export.php

Hier worden de Classes geimporteerd zoals jij aangegeven hebt en is de encoding UTF-8.

Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Ik weet geen opties meer voor je, behalve dan updaten naar een nieuwere PHP versie of wellicht deze te gebruiken: http://www.codeplex.com/PHPExcel/

Ik zou sowieso Pear Excel_Writer niet meer gebruiken. De laatste update is van 2006, ondersteund alleen het BIFF5 formaat (Excel 5.0) en heeft 66 openstaande (gerapporteerde) bugs.

[ Voor 38% gewijzigd door Noork op 26-09-2008 13:33 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Noork schreef op vrijdag 26 september 2008 @ 13:27:
Ik weet geen opties meer voor je, behalve dan updaten naar een nieuwere PHP versie of wellicht deze te gebruiken: http://www.codeplex.com/PHPExcel/

Ik zou sowieso Pear Excel_Writer niet meer gebruiken. De laatste update is van 2006, ondersteund alleen het BIFF5 formaat (Excel 5.0) en heeft 66 openstaande (gerapporteerde) bugs.
Ik heb die PHPExcel ook gevonden.
Het werkt netjes, alleen zijn de minimale eissen PHP 5.2.5 en die heb ik nog nergens draaien...

Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Verwijderd schreef op vrijdag 26 september 2008 @ 13:48:
[...]
Ik heb die PHPExcel ook gevonden.
Het werkt netjes, alleen zijn de minimale eissen PHP 5.2.5 en die heb ik nog nergens draaien...
Dat is toch meer hun probleem dan jouw probleem. Op deze manier kun je gewoonweg geen goede Excel bestanden genereren. Je zou b.v. gewoon plain CSV, of HTML tabellen met een excel header kunnen aanmaken. Verder gewoon de bal bij de klant neerleggen.

Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 16-09 13:49

Patriot

Fulltime #whatpulsert

Verwijderd schreef op vrijdag 26 september 2008 @ 13:48:
[...]


Ik heb die PHPExcel ook gevonden.
Het werkt netjes, alleen zijn de minimale eissen PHP 5.2.5 en die heb ik nog nergens draaien...
Niet helemaal waar hoor. PHPExcel werkt voor alle 5.2.x versies. Dat staat ook zo in de documentatie:
The following software is required to develop using PHPExcel:
» PHP version 5.2 or newer
» PHP extension php_zip enabled
Het wordt op mijn werk ook gebruikt, en daar draaien we 5.2.3.

[ Voor 5% gewijzigd door Patriot op 26-09-2008 15:37 . Reden: fixje ]


Verwijderd

Topicstarter
Patriot schreef op vrijdag 26 september 2008 @ 15:36:
[...]


Niet helemaal waar hoor. PHPExcel werkt voor alle 5.2.x versies. Dat staat ook zo in de documentatie:


[...]


Het wordt op mijn werk ook gebruikt, en daar draaien we 5.2.3.
Ok, dat zou kunnen, maar op PHP 5.0.2 werkt het sowieso niet...
Pagina: 1