» »

Izvoz podatkov iz sql v excel

Izvoz podatkov iz sql v excel

xsenon ::

ojla,

pri izdelavi projekta imam cilj doati funkcijo izvoz cenika, ki bi mi omogočila nrediti .xls (excel) in ga ponudila kot download. Podatke imam shranjene v sql bazi. Programski jezik, ki ga uporabljam je php. ČE obstaja kakšna soap varjanta (že realizirana) bo prav tako vredu.
etpot - Exploit The Power Of Technology

Poldi112 ::

Where all think alike, no one thinks very much.
Walter Lippmann, leta 1922, o predpogoju za demokracijo.

nimbix ::

Obstaja še en izredno preprost način, ob katerem se prvič primeš za glavo.

1. Generiraš HTML file, podatke daš v navadno HTML tabelo
2. Datoteki daš končnico .xls
3. Se nekaj časa čudiš, da Excel in OpenOffice to grozoto oba odpreta in prikažeta kot normalno xls datoteko :D

xsenon ::

hvala obema. Tale druga rešitev je res super :)
etpot - Exploit The Power Of Technology

xsenon ::

sedaj mi je uspelo narediti da zgeneriaram željeni html file, ampak mi ne uspe katero funkcijo naj uporabim da mi bo fajl ponudil kot download/save as. Se pravi ko kliknemo izvozi imenik hočem da mi ponudi zgeneriran file kjer me upraša ali ga želim odpreti oz shraniti.
etpot - Exploit The Power Of Technology

Poldi112 ::

Pri mojem to dela avtomatično - druge opcije kot dl mislim da sploh ni :)
Where all think alike, no one thinks very much.
Walter Lippmann, leta 1922, o predpogoju za demokracijo.

darkolord ::

Content-Disposition header nastavi

xsenon ::

ja samo še prej sem naletel na drugo težavo in sicer. Do zdej sm pršu do tega da mi php zgenerira dokument se pravi ko poženem skripto se mi odpre okno v brskalniku kjer vidm html file vse tabele in podatke v njih. Sedaj pa jaz želim te podatke zapisati v nek file katerega bom kaneje ponudil kot download. Sem poskušal s fopen in file write samo me zanima kako bi to naredil na bolj enostaven način. Se pravi kako naj jaz php skripti ki bere podatke iz baze in v browserju uspešno izpiše podatke rečem naj mi ta html vpiše v file.
etpot - Exploit The Power Of Technology

darkolord ::

Content-Disposition header nastavi, če misliš to, da ti kar isti file ponudi kot download s končnico .xls...

Zgodovina sprememb…

  • spremenilo: darkolord ()

xsenon ::

ja samo Content-Disposition header mi bo prišel prav ko bom že imel zgeneriran file. Jaz pa ga zaenkrat še nimam. Trenutno mi skripta vse lepo izpiše v brskalniku (vidno na sliki). Sedaj pa mene zanima kako to kar mi skripta izpiše v brskalnik shranim v datoteko.

 podatki

podatki

etpot - Exploit The Power Of Technology

darkolord ::

Ja možnosti imaš dve - da shraniš rezultat v ločen fajl in potem tistega "serviraš" ali pa da ti kar iz iste skripte ponudi možnost za download - torej, ko bi šel na ta tvoj test.php, bi ti brskalnik ponudil blabla.xls za download.

xsenon ::

za tole drugo zadevo me zanima kako naj naredim da mi bo ko bom šel na test.php ponudil download fajla.
etpot - Exploit The Power Of Technology

darkolord ::

Content-Disposition header nastavi.

xsenon ::

sm že na dobri poti do uspeha:)

uporabil sem sledečo kodo:
<?php
header('Content-type: application/xls');
header('Content-Disposition: attachment; filename="downloaded.xls"');
readfile('test.html');
?>

če readfile podam file iz diska se pravi enak file kot ga zgenerira moja koda samo da sem ga kot html shranil na disk mi super lepo zgenerira xls. Problem se pojavi če mu kot readfile podam link do moje skripte (localhost/test.php) v tem primeru mi javi napako:
<br />
<b>Warning</b>:  readfile(http://localhost/pregledporabe/test.php) [<a href='function.readfile'>function.readfile</a>]: failed to open stream: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
 in <b>C:\AppServ\www\pregledporabe\test12.php</b> on line <b>9</b><br />

a je možno da je problem ker se skripta predougo izvaja?
etpot - Exploit The Power Of Technology

xsenon ::

tudi to napako mi je uspelo poravit in sicer mojo skripto sem prestavil na drug server (ni več na localhost) in zadeva deluje:).
etpot - Exploit The Power Of Technology

darkolord ::

Zakaj pa čisto enostavno v test.php ne bi dodal tega headerja?

xsenon ::

u to bi blo super če se da naredit tako da lahko header dodam kar v test.php. Sem dodal ampak narobe ker zadeva ne deluje in sicer:
		while ($row = mysql_fetch_array($result2, MYSQL_ASSOC)) {
									$var1=$row['phone1'];
									echo '<tr> 
											<td>'.substr_replace($var1, 'XXX', 7, 10).'</td>
										<td>'.$row['phone2'].'</td>
										<td>'.$row['datum'].'</td> 
										<td>'.round($row['duration'],2).'</td> 
										<td>'.round($row['price'],2).'</td> 
										<td>'.round($row['priceDDV'],2).'</td> 
										<td>'.$row['destination'].'</td> 
										
									</tr>
									';
								}
								echo '
									</tbody> 
									</table>
								';
									}
					
					}
					$db->close();
					}
					
					header('Content-type: application/xls');

					
					header('Content-Disposition: attachment; filename="downloaded.xls"');

					
					readfile('http://localhost/test.php');
					?>


napaka ki mi jo javi ob:

Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\pregledporabe\test.php:2) in C:\AppServ\www\pregledporabe\test.php on line 484

Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\pregledporabe\test.php:2) in C:\AppServ\www\pregledporabe\test.php on line 487

Warning: readfile(http://localhost/test.php) [function.readfile]: failed to open stream: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. in C:\AppServ\www\pregledporabe\test.php on line 490
etpot - Exploit The Power Of Technology

DavidJ ::

> Cannot modify header information - headers already sent

Prestavi spodnje vrstice nad zanko.

header('Content-type: application/xls');
header('Content-Disposition: attachment; filename="downloaded.xls"');
"Do, or do not. There is no 'try'. "
- Yoda ('The Empire Strikes Back')

xsenon ::

sem probal vendar se vedno ista napaka. Imam na sumu da je problem ko podam tale readfile in sicer ali je tole podajanje read fajla sploh ok ker v mojem primerju je read file skripta kliče sama sebe.
etpot - Exploit The Power Of Technology

DavidJ ::

Težko rečt, kaj je narobe, ker ne vidim vsega. Ampak, headerje moraš nastavit preden pošlješ kakršno koli informacijo odjemalcu -- vsak echo, print, tudi če daš navaden presledek pred začetek <?php ?> ne bo delalo. <?php mora biti prva stvar v datoteki.
"Do, or do not. There is no 'try'. "
- Yoda ('The Empire Strikes Back')

Zgodovina sprememb…

  • spremenil: DavidJ ()

xsenon ::

Hvala vsem za pomoč. Sedajmi je uspelo in vse deluje BP:)

Rešitev za ostale, ki se bodo srečali s podobno težavo

na prvo mesto pred vso ostalo kodo vpiši (pomembno je da prej ni nobene druge kode niti presledka!)

<?php
header('Content-type: application/xls');
header('Content-Disposition: attachment; filename="downloaded.xls"');
?>


readfile ni potrebno dodati (ker kot source vzame skripto).

to je vsa umetnost:)

Hvala vsem za pomoč
etpot - Exploit The Power Of Technology

Zgodovina sprememb…

  • spremenil: xsenon ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Download vsebine strani s JS

Oddelek: Izdelava spletišč
472548 (1846) MrBrdo
»

PHP + MySQL excel export pomoč?

Oddelek: Izdelava spletišč
121479 (1326) sumoborac
»

Jasper subreport

Oddelek: Programiranje
131626 (1375) nightrage
»

[JAVA] problem z linkom na download datoteke (v spletni aplikaciji)

Oddelek: Programiranje
61006 (944) Fizikalko
»

PHP autentikacija - problem

Oddelek: Izdelava spletišč
61581 (1386) krho

Več podobnih tem