[PHP MYSQL EXCEL] export van data MET layout zoals lijnen

Pagina: 1
Acties:
  • 104 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • WPN
  • Registratie: Augustus 2003
  • Laatst online: 24-07 21:14
Ik heb zitten zoeken op google naar een tutor enzow voor het exporteren van data uit mn mysql database naar een excel bestand, maar wel met lijnen om de cellen en de cellen zo breed als de breedste inhoud van een cel.....

Geen succes....

Het enige wat ik vind is het exporteren naar een CSV bestand, dat werkt perfect, maar is niet compleet wat ik wil helaas.....

Er is een tool die schijnt EXCEL bestanden in te kunnen lezen zelfs met kleur opmaak en alles
maar dat toolje is
1) niet gratis
2) gecodeerd als demo te downen

Het probleem is dat ik geen COM of PEAR of extra's kan gebruiken


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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php

define("db_host", "localhost"); 
define("db_user", "jajaja wil je"); 
define("db_pass", "weten he ;)"); 
define("db_link", mysql_connect(db_host,db_user,db_pass)); 
define("db_name", "intranet"); 
mysql_select_db(db_name); 

$header= '';
$data = '';
$select = "SELECT CONCAT_WS(' ', geb_vnaam, geb_tv, geb_anaam), QUOTE(geb_telnr), QUOTE(geb_kamer), CONCAT(geb_email  , '@mijnwerk.nl')
           FROM gebruikers
           ORDER BY geb_anaam ASC";                 
$export = mysql_query($select); 
$fields = mysql_num_fields($export); 

/*
for ($i = 0; $i < $fields; $i++) 
{ 
 $header .= mysql_field_name($export, $i) . "\t"; 
} 
*/
$header .= "Naam\tTelnr\tKamer\tE-mail";

while($row = mysql_fetch_row($export)) 
{ 
 $line = ''; 

 foreach($row as $value) 
 {
  if ((!isset($value)) OR ($value == "")) 
  { 
   $value = "\t"; 
  } 
  else 
  { 
   $value = str_replace('"', '""', $value); 
   $value = '"' . $value . '"' . "\t"; 
  } 
  $line .= $value; 
 } 

 $data .= trim($line)."\n"; //data toekennen voor de file later
} 

$data = str_replace("\r","",$data); 

if ($data == "") 
{ 
 $data = "\n(0) Records Found!\n";                         
} 

header("Content-type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=extraction.xls"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
print "$header\n$data"; 

?>


om nog een beetje layout te houden heb ik in mn SQL statement dus QUOTE gebruikt zodat alles aan 1 kant van de cellen blijft staan....

Ik wil dit dus zelf in de hand nemen door zelf te kunnen bepalen hoe de alignment van een cel is en dat de cellen een randje krijgen zodat het uitgeprint kan worden waarvoor de lijntjes het dus leesbaar maken :)

ja in principe kunnen de gebruikers dit zelf ook (gaat om een telefoonlijst) maar ik weet bijna 100% zeker dat als er geen lijntjes inzitten dat er weer gezeik komt zoals: "oh er zitten geen lijntjes in, das wel lastig lezen hoor" of "oh, moeten we zelf lijntjes erin zetten, das wel extra werk hoor" of "oh die kamers met een letter erin staan niet uitgelijnt met de rest en moet ik dat dan zelf gaan doen???"


dit wil ik dus voorkomen maar ik kan niets goeds vinden
in ASP wil ik het niet maken, omdat ik geen ASP ken en WIL kennen (op dit moment)

misschien dat iemand weet hoe ik dus die uitlijning en lijntjes krijg?

[ Voor 10% gewijzigd door WPN op 08-12-2004 10:41 ]

Als ik denk zoals ik dacht, dan doe ik zoals ik deed, als ik doe zoals ik deed, dan denk ik zoals ik dacht! Cogito Ergo Sum


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Met alle beperkingen die jij aangeeft te hebben zit er niets anders op dan uit te vogelen hoe de binaire layout van een Excel bestand is en hem vervolgens zelf samenstellen. :)

Maar zonder gekheid, zonder COM objecten kun je dus ook het Excel object niet hanteren en dit is voor zover ik weet de enige "gratis" manier om Excel bestanden te maken waarbij je volledige controle hebt over layout en dergelijke.

Succes met je gebruikers kalmeren :+

Acties:
  • 0 Henk 'm!

  • glashio
  • Registratie: Oktober 2001
  • Laatst online: 18-09 10:13

glashio

C64 > AMIGA > PC

Zet eens i.p.v. van CSV output een opgemaakte <TABLE> in je $data ;)

/edit

Resource van Microsoft, zie uitleg in paragraaf "Displaying HTML Documents in Excel"

[ Voor 58% gewijzigd door glashio op 08-12-2004 11:08 . Reden: Resource ]

> Google Certified Searcher
> Make users so committed to Google that it would be painful to leave
> C64 Gospel
> [SjoQ] = SjoQing


Acties:
  • 0 Henk 'm!

  • WPN
  • Registratie: Augustus 2003
  • Laatst online: 24-07 21:14
@bigbeng.... een van die gebruikers is de adjunct directeur..... en wordt toch al vaak zo zenuwachtig van die vent.. (voor de rest wel toffe peer). ;)


@glashio.... many thnx, daar kan ik wel wat mee

Als ik denk zoals ik dacht, dan doe ik zoals ik deed, als ik doe zoals ik deed, dan denk ik zoals ik dacht! Cogito Ergo Sum


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Ik heb een volledige PHP-class voor het schrijven van Excel-bestanden met opmaak. Je kunt zelfs afbeeldingen in cellen plaatsen, of formules op een cel toepassen (B2 = A1 + A2 bijv).

Ik heb me de pleuris gezocht op internet, omdat CSV ook geen bruikbare oplossing was voor mij. Hij heet 'php_writeexcel', en bestaat uit een aantal losse files. Ik meen hem uiteindelijk van Sourceforge afgetorkken te hebben, maar je moet maar even zoeken.
Zal hem ook ff lokaal zoeken en evt. uploaden

Acties:
  • 0 Henk 'm!

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Dit is precies wat je wil denk ik.

edit:
Ik had er overheen gelezen dat je geen PEAR kan gebruiken

[ Voor 50% gewijzigd door chris op 08-12-2004 17:42 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Waarom niet gewoon een goeie class zoeken? Klik en klik. Of zie ik iets over het hoofd in je ts?

Acties:
  • 0 Henk 'm!

  • glashio
  • Registratie: Oktober 2001
  • Laatst online: 18-09 10:13

glashio

C64 > AMIGA > PC

Waarom Server-Sided een .xls file opmaken als excel zelf een prima html-interperter heeft ?

Verder gebruik ik als MIMEheader :
PHP:
1
header("Content-Type: application/vnd.ms-excel");


En kunnen o.a. formules gewoon meegestuurd worden : ( zie Resource )
HTML:
1
2
<TD FORMULA="=SUM(B2:B5)">1500
<TD FORMULA="=AVERAGE(D3:D10)">43.25


* glashio denkt : laat de clients maar zwoegen :9, scheelt weer hoop server load

> Google Certified Searcher
> Make users so committed to Google that it would be painful to leave
> C64 Gospel
> [SjoQ] = SjoQing

Pagina: 1