PHPExcel schrijven naar XLS probleem

2-02-2010 13:53

PHPExcel schrijven naar XLS probleem

  • Arie van den Bos
  • Arie van den Bos's foto

Beste Forumleden,

Ik weet niet of iemand hier ervaring mee heeft maar ik ga het toch proberen.
Ik heb lopen zoeken naar een script welke een xls bestand opent en daar data uit de database naar toe kan schrijven.

Ik kwam na lang zoeken veel proberen e.d uit bij PHPExcel.
Nu heb ik de volgende code hiervoor:
<?
require_once '../Classes/PHPExcel/IOFactory.php';
include "mysql.php";

$query_actualoutput = "select output from oee WHERE id=(SELECT MAX(id) FROM oee)";
$result = mysql_query($query_actualoutput);
$uitkomst = mysql_fetch_array($result);
$actualoutput = $uitkomst[0];

$objPHPexcel = PHPExcel_IOFactory::load('dagrapportnieuw.xls');

$objWorksheet = $objPHPexcel->getActiveSheet();
$objWorksheet->getCell('e17')->setValue($actualoutput);
$objWorksheet->getCell('e5')->setValue('A2');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPexcel, 'Excel5');
$objWriter->save('write.xls');
?>

Op het moment dat ik dit bestand run, dan duurt het vrij lang voordat ik weer wat op het scherm krijg, bij deze krijg ik foutmeldingen zoals:

Notice: Undefined offset: 6 in C:\wamp\www\dbexcel\Classes\PHPExcel\Reader\Excel5.php on line 4765

Lopend tot offset: 70

De regel waar deze foutmelding naar verwijst is:
<?
case 0x43:
$name = 'tName';
$size = 5;
// offset: 1; size: 2; one-based index to definedname record
$definedNameIndex = $this->_GetInt2d($formulaData, 1) - 1;
// offset: 2; size: 2; not used
$data = $this->_definedname[$definedNameIndex]['name']; ///////Deze regel!!!!!
break;
?>

Ik heb op verschillende fora;s lopen zoeken, ik heb ook een patch gedownload maar niks heeft geholpen.

Ik hoop dat iemand mij hier kan helpen.(of desnoods een andere oplossing heeft voor het schrijven naar een XLS)

Alvast bedankt!

Groeten,

Arie

2-02-2010 14:07

Re: PHPExcel schrijven naar XLS probleem

  • Ivo P.
  • Ivo P.'s foto

waarschijnlijk is dat script ontwikkeld op een omgeving waar dergelijke notices onderdrukt worden.

kennelijk bestaat $this->_definedname[6] etc niet.

---
$data = isset($this->_definedname[$definedNameIndex]['name'])
? this->_definedname[$definedNameIndex]['name']
: ''; ///////Deze regel!!!!!

2-02-2010 14:09

Re: PHPExcel schrijven naar XLS probleem

  • Ed van Andel
  • Ed van Andel's foto

Je kunt ook de makkelijke weg kiezen en proberen te schrijven naar een .csv-bestand. Excel kan daar prima mee overweg.

2-02-2010 14:55

Re: PHPExcel schrijven naar XLS probleem

  • Arie van den Bos
  • Arie van den Bos's foto

Ja ik denk dat ik dat maar doe dan, want ik ben nu nog aan het zoeken maar kan niks vinden.

In ieder geval bedankt voor de hulp!

Groeten,

Arie

2-02-2010 15:02

Re: PHPExcel schrijven naar XLS probleem

  • Arakrys
  •  Arakrys's foto

Alleen jammer dat je in cvs alleen waarden kunt zetten en geen formules, waarden, enz.

Had PEAR niet ooit iets voor Excel?

een @-tje verbergt fouten... maar dan moet je natuurlijk wel zelf testen of de waarde goed is en evt, foutafhandelingen maken.

$data = $this->_definedname[@$definedNameIndex]['name'];

2-02-2010 15:11

Re: PHPExcel schrijven naar XLS probleem

  • Ed van Andel
  • Ed van Andel's foto

Op http://www.phpexcel.net kun je de laatste versie downloaden, inclusief voorbeelden, zelfs voor office2007.

3-02-2010 9:33

Re: PHPExcel schrijven naar XLS probleem

  • Arie van den Bos
  • Arie van den Bos's foto

Ik heb de laatste versie gedownload. Ik moet juist voor office 2000/2003 voorbeelden hebben, ik heb nog niet echt een goed voorbeeld kunnen vinden voor het schrijven naar een bestaand XLS bestand, het enigste wat ik heb gevonden staat hierboven.

Kan je wel naar een csv bestand schrijven en aangeven in welke cel hij moet schrijven?

Bedankt!!

Arie

3-02-2010 13:27

Re: PHPExcel schrijven naar XLS probleem

  • Jasper van Gent
  • Jasper van Gent's foto

Wat je ook kan doen is een xls maken die opgemaakt is met HTML. Hieronder een voorbeeld van hoe ik dit wel eens gebruikt heb. Het voordeel hiervan is dan je colspan, bold e.d. kan gebruiken waardoor je de Excel een opmaak kan geven.

<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=utf-8" />
</head>
<body>
<table x:str border=0 cellpadding=0 cellspacing=0 width=100% style="border-collapse: collapse">
<tr>
<td colspan="6" align="center" style="background-color: #234b87; color: #fff;" nowrap><h1>Header</h1></td>
</tr>
<tr>
<td width="100" style="background-color: #dbdbdb;" nowrap><b>Kolom</b></td>
<td style="background-color: #dbdbdb;" nowrap><b>Kolom</b></td>
<td style="background-color: #dbdbdb;" nowrap><b>Kolom</b></td>
<td width="100" style="background-color: #dbdbdb;" nowrap><b>Kolom</b></td>
<td width="100" style="background-color: #dbdbdb;" nowrap><b>Kolom</b></td>
<td style="background-color: #dbdbdb;" nowrap><b>Kolom</b></td>
</tr>
<tr>
<td nowrap>Tekst</td>
<td nowrap>Tekst</td>
<td nowrap>Tekst</td>
<td nowrap>Tekst</td>
<td nowrap>Tekst</td>
<td>Tekst</td>
</tr>
</table>
</body>
</html>

5-02-2010 13:03

Pear

  • brecht margodt
  • brecht margodt's foto

Op http://pear.php.net/package/Spreadsheet_Excel_Writer kun je de een PEAR package instaleren.

je kunt ook veel informatie vinden op de website van PEAR. (met voorbeelden)

Inloggen wachtwoord vergeten? Aanmelden
ADSL – Telfort Internet – Ziggo Alles in 1