[PHP/COM] Excel template sheet bewerken *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • BlueAce
  • Registratie: November 2002
  • Laatst online: 09-01-2021
Vorige keer dat jullie me hier zagen was ik nog redelijk phpnewb, inmiddels is dat iets beter :P

Ik ben nu bezig met een project voor een Excel-freak. Hij heeft een standaard Excel-sheet gemaakt voor zijn prijsberekeningen. Zodra hij een paar waarden copy|paste in een werkblad, dan krijg hij gelijk alle totaalprijzen, offertes, enz. te zien.

Nu zou het dus mooi zijn als ik met PHP in een Excel-sheet kon schrijven. Dus een template.xls waarin de formules staan, en in de lege velden laat ik PHP de waardes schrijven die uit een db komen.

Ik heb het volgende:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
$WkExcel = fopen("template.xls","wr");
$Data = $WkExcel->Workbooks->add();

//activeer het bestand
$Sheets = $Data->Worksheets(1);

//herbenoem de naam van het actieve werkblad
$Sheets->name = 'naam';
$Cell = $Sheets->Cells(1,1);
$Cell->activate;
$Cell->value= '$naam';

$Sheets->name = 'adres';
$Cell = $Sheets->Cells(1,2);
$Cell->activate;
$Cell->value= '$adres';

// sla het gemaakte bestand op
$Data->SaveAs("C:/test.xls");

// download bestand
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="test.xls"');
readfile('test.xls');

//sluit excel af
$WkExcel->Quit();
unset($WkExcel);
?>


Nou hoef je mij niet te vertellen dat de eerste fopen() fout is, maar hoe moet ik dit anders aanpakken? Het is me gelukt om een Excel-file te maken via een COM, maar om alle formules ook via de manier erin te zetten is erg veel werk, oftewel: TEveel werk. Er moet iets zijn waardoor ik de .xls kan openen, erin schrijven, en opslaan met een andere filename.

Thx alvast ;)

[ Voor 7% gewijzigd door BlueAce op 10-02-2004 15:52 ]


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Je hebt een class nodig die in het excel formaast kan schrijven, anders gaat het nooit lukken. Natuurlijk kan je ook een speciale functie van M daarvoor gebruiken. Voor Word wordt dit ook weleens gebruikt.

Acties:
  • 0 Henk 'm!

  • BlueAce
  • Registratie: November 2002
  • Laatst online: 09-01-2021
Het is zoals je ziet niet zozeer het schrijven, meer het openen van de Excel-file. Tenminste, ik denk dat als je de file kunt openen, je al een stuk verder bent.

offtopic:
Thx voor het editten van de topictitle, was ff verkeerd.

[ Voor 21% gewijzigd door BlueAce op 10-02-2004 16:23 ]


Acties:
  • 0 Henk 'm!

  • Terranca
  • Registratie: April 2000
  • Laatst online: 18-09 18:25
Ik snap eigenlijk niks van je code. Je opent een bestand, hieruit verkrijg je een Resource naar een file, en vervolgens ga je functies aanroepen van die resource? :? Waar heb je de definitie van die classes en functies? En als het al een class is zal je je bestand via die classe moeten openen, of de file resource aan die classe moeten doorgeven, dunkt mij.

Ik zou je willen aanraden om eens hier te gaan kijken. Dit is een PHP class waarmee je in Excel bestanden kunt wegschrijven. Alternatief is COM, of zelf functies of classes gaat schrijven waarmee het lukt, maar dat is nogal een werk ben ik bang :P

[ Voor 12% gewijzigd door Terranca op 10-02-2004 16:46 ]


Acties:
  • 0 Henk 'm!

  • BlueAce
  • Registratie: November 2002
  • Laatst online: 09-01-2021
Zoals ik zei, alleen de eerste fopen() is fout. Ik moet namelijk EERST de Excel-file openen, en er daarna in kunnen schrijven.

Als je op regel 1 dit zou zetten, dan schrijf je dus een nieuwe file:

PHP:
1
$WkExcel = new COM("Excel.application") or Die ("Kan het component niet aanmaken.");


Dat wil ik dus niet, ik wil in een bestaande template kunnen schrijven. :) Ik heb ondertussen de functie com_load gevonden, maar het lukt me nog steeds niet om de file te openen...

[ Voor 16% gewijzigd door BlueAce op 11-02-2004 15:33 ]