Excel bestand genereren
Ik heb al eerder met php een excel bestand aangemaakt, maar kan het nu helaas niet meer vinden hoe ik het toen had gedaan... Zouden jullie me kunnen helpen, ik heb dus geen bestaande code, ik heb wel de waarde's deze komen vanuit de database... Is het handig om deze eerst in een array te zetten en vanuit daar te exporteren naar excel??? Zo ja, hoe input ik de database output naar een array?
Graag zou ik ook een pdf en een word variant ervan willen maken, is dat mogelijk met php?
is het ook mogelijk om naar word te exporteren? kan zo niks vinden op google
en dit is er ook nog:
http://php.net/manual/en/book.com.php
maar niet altijd toepasbaar
Gewijzigd op 11/05/2011 19:12:45 door Noppes Homeland
wat bedoel je daarmee?
open word en type wat woorden, sla het op als xml en dan heb je een word xml document wat je met php DOM / simplexml enz zelf kan opbouwen
het gaat om een materiaallijst.
http://www.php.net/DOM
http://www.php.net/simplexml
http://www.php.net/xmlwriter
eenzelfde opbouw maken!
maar waarom naar excel/word? Lijkt het je niet handiger om het met http://www.fpdf.org/ een pdf bestand te creeeren.
word omdat we ook bij sommige dingen uitleggen en instructies hebben... maar ook voor de materiaallijst.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
error_reporting(E_ALL);
$host = "localhost"; //mysql locatie
$user = "blabla"; //mysql gebruikersnaam
$pass = "bla"; //mysql wachtwoord
$db = "blabla"; //mysql database
// Connect to the database
$link = mysql_connect($host, $user, $pass);
mysql_select_db($db);
require 'exportcsv.inc.php';
$table="table"; // this is the tablename that you want to export to csv from mysql.
exportMysqlToCsv($table);
?>
error_reporting(E_ALL);
$host = "localhost"; //mysql locatie
$user = "blabla"; //mysql gebruikersnaam
$pass = "bla"; //mysql wachtwoord
$db = "blabla"; //mysql database
// Connect to the database
$link = mysql_connect($host, $user, $pass);
mysql_select_db($db);
require 'exportcsv.inc.php';
$table="table"; // this is the tablename that you want to export to csv from mysql.
exportMysqlToCsv($table);
?>
en dan de volgende exportcsv.inc.php
Code (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
61
62
63
64
65
66
67
68
69
70
71
72
73
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
66
67
68
69
70
71
72
73
<?php
function exportMysqlToCsv($table,$filename = 'export.csv')
{
$csv_terminated = "\n";
$csv_separator = ";";
$csv_enclosed = '"';
$csv_escaped = "\\";
$sql_query = "select * from $table order by achternaam";
// Gets the data from the database
$result = mysql_query($sql_query);
$fields_cnt = mysql_num_fields($result);
$schema_insert = '';
for ($i = 0; $i < $fields_cnt; $i++)
{
$l = $csv_enclosed . str_replace($csv_enclosed, $csv_escaped . $csv_enclosed,
stripslashes(mysql_field_name($result, $i))) . $csv_enclosed;
$schema_insert .= $l;
$schema_insert .= $csv_separator;
} // end for
$out = trim(substr($schema_insert, 0, -1));
$out .= $csv_terminated;
// Format the data
while ($row = mysql_fetch_array($result))
{
$schema_insert = '';
for ($j = 0; $j < $fields_cnt; $j++)
{
if ($row[$j] == '0' || $row[$j] != '')
{
if ($csv_enclosed == '')
{
$schema_insert .= $row[$j];
} else
{
$schema_insert .= $csv_enclosed .
str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, $row[$j]) . $csv_enclosed;
}
} else
{
$schema_insert .= '';
}
if ($j < $fields_cnt - 1)
{
$schema_insert .= $csv_separator;
}
} // end for
$out .= $schema_insert;
$out .= $csv_terminated;
} // end while
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Length: " . strlen($out));
// Output to browser with appropriate mime type, you choose ;)
header("Content-type: text/x-csv");
//header("Content-type: text/csv");
//header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=$filename");
echo $out;
exit;
}
?>
function exportMysqlToCsv($table,$filename = 'export.csv')
{
$csv_terminated = "\n";
$csv_separator = ";";
$csv_enclosed = '"';
$csv_escaped = "\\";
$sql_query = "select * from $table order by achternaam";
// Gets the data from the database
$result = mysql_query($sql_query);
$fields_cnt = mysql_num_fields($result);
$schema_insert = '';
for ($i = 0; $i < $fields_cnt; $i++)
{
$l = $csv_enclosed . str_replace($csv_enclosed, $csv_escaped . $csv_enclosed,
stripslashes(mysql_field_name($result, $i))) . $csv_enclosed;
$schema_insert .= $l;
$schema_insert .= $csv_separator;
} // end for
$out = trim(substr($schema_insert, 0, -1));
$out .= $csv_terminated;
// Format the data
while ($row = mysql_fetch_array($result))
{
$schema_insert = '';
for ($j = 0; $j < $fields_cnt; $j++)
{
if ($row[$j] == '0' || $row[$j] != '')
{
if ($csv_enclosed == '')
{
$schema_insert .= $row[$j];
} else
{
$schema_insert .= $csv_enclosed .
str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, $row[$j]) . $csv_enclosed;
}
} else
{
$schema_insert .= '';
}
if ($j < $fields_cnt - 1)
{
$schema_insert .= $csv_separator;
}
} // end for
$out .= $schema_insert;
$out .= $csv_terminated;
} // end while
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Length: " . strlen($out));
// Output to browser with appropriate mime type, you choose ;)
header("Content-type: text/x-csv");
//header("Content-type: text/csv");
//header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=$filename");
echo $out;
exit;
}
?>
succes...
zal hem vanavond even proberen, alvast bedankt dit ziet er idd ongeveer uit hoe ik hem toen ook had.
Omslachtig, je kan natuurlijk ook gelijk met SQL de csv aanmaken dan heb je geen PHP nodig.
Toevoeging op 12/05/2011 18:03:18:
@bart --> Script werkt perfect super dank je wel!
Nog een vraag: is het mogelijk om maar enkele velden te exporteren en niet alle velden???
of is dit gewoon mogelijk via de select veld1, veld2, veld3 FROM tabel order by Name query?
Vooral niet komen janken dat je opeens het een en ander kwijt bent door toedoen gebuik van deze vloek.
En waarom stel je een vraag over iets wat je zelf kunt onderzoeken!
phpmyadmin zat trowens standaard geinstalleerd, volgens mij kan ik ook niks anders installeren...
Jawel hoor... Dat is wel mogelijk.
aar --> hoe dan en welke raden jullie aan... wat zijn de voordelen t.o.v. phpmyadmin, en wat de nadelen??
Noppes Homeland op 12/05/2011 18:15:59:
Nee, phpmyadmin is een vloek en zeer zeker geen database beheer tool!!
Wat een onzin.
Noppes Homeland op 12/05/2011 18:15:59:
Nee, phpmyadmin is een vloek en zeer zeker geen database beheer tool!!
Vooral niet komen janken dat je opeens het een en ander kwijt bent door toedoen gebuik van deze vloek.
En waarom stel je een vraag over iets wat je zelf kunt onderzoeken!
Vooral niet komen janken dat je opeens het een en ander kwijt bent door toedoen gebuik van deze vloek.
En waarom stel je een vraag over iets wat je zelf kunt onderzoeken!
Pfff, daar gaan we weer. Waarom kom je hier iedere keer weer mee op de proppen. Het draagt niks bij. Als je geen phpMyAdmin wil gebruiken dan doe je dat toch gewoon niet? Maar ga alsjeblieft niet iedere keer weer melden dat je phpMyAdmin niet goed vindt, of start er een aparte topic over waarin je je mening GRONDIG uiteenzet en onderbouwt, zodat mennsen er op kunnen reageren. Maar alsjeblieft hou op met het verstoren van ieder topic dat over phpMyAdmin gaat.
Daarnaast vind ik je hele manier van praten vaak erg negatief en onvriendelijk over komen. Misschien wordt het eens tijd voor een stukje zelfreflectie?
Gewijzigd op 12/05/2011 22:31:59 door Ozzie PHP
Ozzie PHP op 12/05/2011 22:30:55:
Daarnaast vind ik je hele manier van praten vaak erg negatief en onvriendelijk over komen. Misschien wordt het eens tijd voor een stukje zelfreflectie?
Hij begint een beetje op Karl te lijken, alleen kent Karl wel zijn grenzen en zijn zijn reactie's een stuk nuttiger.
Gewijzigd op 12/05/2011 22:49:25 door gerhard l