Grafiek PHP > Excel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Barman V

Barman V

15/03/2006 12:28:00
Quote Anchor link
Hej allen,

Wat is de beste manier om een resultatentabel over te halen naar MS Excel en hiervan automatisch een grafiek te maken.
Hieronder vind je een handig scriptje (bron: phpfreaks.com), maar die zet alleen de gegevens over.
Graag wil ik ook een grafiekje maken. Is daar een makkelijke manier voor?

Ik zat zelf te denken aan:
- Template gebruiken waarin de grafiek al staat, maar dat alleen de gegevens nog ingevuld hoeven te worden, zodat Excel de grafiek automatisch bijwerkt
- Uiterste geval (liever niet) met COM(Excel.application) enz

Vraag in het kort
Het onderstaande script genereert een Excel bestand, maar kan ik ook op basis van een bestaande template (met lege grafiek) een Excel bestand genereren.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
define(db_host, "localhost");
define(db_user, "gebruiker");
define(db_pass, "paswoord");
define(db_link, mysql_connect(db_host,db_user,db_pass));
define(db_name, "export2excel");
mysql_select_db(db_name);

$select = "SELECT * FROM user";                
$export = mysql_query($select);
$fields = mysql_num_fields($export);

for ($i = 0; $i < $fields; $i++) {
    $header .= mysql_field_name($export, $i) . "\t";
}


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 = str_replace("\r","",$data);

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


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


Ik hoop dat jullie me kunnen helpen.
Alvast bedankt.
Gewijzigd op 15/03/2006 12:30:00 door Barman V
 
PHP hulp

PHP hulp

28/03/2024 19:07:04
 

15/03/2006 13:33:00
Quote Anchor link
ik heb net ook voor een site een gd code gebruikt voor het trekken van een grafiek uit de database, wacht heel even...
 
- wes  -

- wes -

15/03/2006 13:36:00
Quote Anchor link
http://www.maani.us/charts/index.php

die heb ik zelf in samenwerking met database, werkt prachtig en tis even uitvogelen hoe alles moet ,als je daarvan houdtdt :)
 
Barman V

Barman V

15/03/2006 13:36:00
Quote Anchor link
@Gijs (Armorad)
Heel graag :), ik zal er op wachten.

edit:
@wes
Het is inderdaad even uitvogelen. Ik neem aan dat je de functies goed moet aanroepen. Zou je kunnen uitleggen hoe ik het script moet gebruiken.
Gewijzigd op 15/03/2006 13:49:00 door Barman V
 
- wes  -

- wes -

15/03/2006 13:50:00
Quote Anchor link
het posten van je waardes in een array (meervoudige) is het moeilijk stuk, probeer maar es simpel te beginnen en uit te breiden. ik heb nu mn hele statistiekenmodule erop draaien , zonnetje ^^
 

15/03/2006 14:21:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
61
62
63
64
65
<?php
header("Content-type: image/png");
error_reporting(E_ALL);



$host="localhost";
$username="root";
$password="****";
$database="gijs";

$db=mysql_connect($host, $username, $password) or die ("fout1: ".mysql_error());
mysql_select_db($database, $db) or die ("fout2:".mysql_error());
$query="SELECT * FROM grafiek";
$result=mysql_query($query) or die (mysql_error());

$graphValues = array();

while($rij=mysql_fetch_array($result)){
  if($rij['type']==0){  $graphValues[] = $rij["coordinaat"]; }


}


$imgWidth=400;
$imgHeight=250;



$image=imagecreate($imgWidth+1, $imgHeight+25);

$colorWhite = imagecolorallocate($image, 255, 255, 255); // achtergrond
$colorGrey = imagecolorallocate($image, 0, 0, 0); // kleur van het rooster op de achtergrond
$colorBlue = imagecolorallocate($image, 0, 0, 255); // kleur van de lijn
$colorRed = imagecolorallocate($image, 251, 9, 26); // kleur van de lijn

// rand maken (buitenkant)

imageline ($image, 25, 0, 25, $imgHeight, $colorGrey);
imageline ($image, 25, 0, $imgWidth, 0, $colorGrey);
imageline ($image, $imgWidth, 0, $imgWidth, $imgHeight, $colorGrey);
imageline ($image, 25, $imgHeight, $imgWidth, $imgHeight, $colorGrey);

// kader op bg maken
for ($i = 1; $i < 16; $i++){
  // horizontale nummers en lijnen
  imageline ($image, 25, $i*25, $imgWidth+25, $i*25, $colorGrey);
  $max = 12; //11 + 1
  if ($i < $max)
    imagestring ($image, 15, 0, ($i*25)-30, ($max-$i), $colorGrey);
    
  // verticale nummers en lijnen
  imageline ($image, $i*25, 0, $i*25, $imgHeight, $colorGrey);
  if ($i < 16){
    imagestring ($image, 15, ($i*25)-5, $imgHeight, $i, $colorGrey);
    }
}


for ($i = 0; $i < (count($graphValues)-1); $i++){ // lijn op grafiek tekenen
  imageline ($image, ($i*25)+25, ($imgHeight-$graphValues[$i]), (($i+1)*25)+25, ($imgHeight-$graphValues[$i+1]), $colorBlue);
}



imagepng ($image);
imagedestroy ($image);
?>


Dit gebruik ik, de kleuren kloppen niet helemaal met de variabele namen
 
Barman V

Barman V

15/03/2006 14:40:00
Quote Anchor link
Bedankt voor de reacties.

Heel graag zou ik de grafiek in MS Excel willen laten genereren. Ik wil af van GD. In Excel kan men de grafieken zelf nog bewerken (grootte, type, enz). Het GD is al bij mij bekend, daar heb ik ook al leuke voorbeelden van, maar het blijven plaatjes die moeilijk in grootte aanpasbaar zijn (zodat de assen en legenda's verschalen bij het veranderen van grootte).

Mijn vraag
Kan ik ook op basis van een bestaande template (met lege grafiek) een Excel bestand genereren.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.