mySQL table into excel file

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
netpumber
Δημοσιεύσεις: 103
Εγγραφή: 08 Μαρ 2009 19:06

mySQL table into excel file

Δημοσίευση από netpumber » 15 Δεκ 2010 12:22

Καλημέρα σας.

Έχω κατεβάσει αυτό το scriptaki απο εδώ το οποίο σηκώνει εναν πίνακα απο τη βάση δεδομένων και τον περνάει σε ενα excel file.

http://fundisom.com/phparadise/php/data ... _excel#130

Το έχω τροποποιήσει για να τεριάζει σε αυτό που θέλω να κάνω και χρειάζομαι λίγο τα φώτα σας για κάτι τελευταίο.

Εδώ είναι ο κώδικας που μας ενδιαφέρει και έχω αλλάξει.

Κώδικας: Επιλογή όλων

	//define separator (defines columns in excel & tabs in word)
	$sep = "\t"; //tabbed character
	print("\t");
	print("\t");
	//start of printing column names as names of MySQL fields
	
		echo "Όνομα Χρήστη \t";
		echo "Ημερομηνία Σχολίου\t";	
		echo "Σχόλιο \t";
	
	print("\n");
	print("\n");
	
	//end of printing column names

	//start while loop to get data
	$query = "SELECT id,user_name,last_name FROM users WHERE tmima_id='$tmima_id'";
	$result = @mysql_query($query);

	
	while($row = mysql_fetch_row($result))
	{
		print("\n"); 
		print("\t");
		print("\t"); //Pigainei ena tab pio pera
		
		
		$schema_insert = "";
		for&#40;$j=1; $j<mysql_num_fields&#40;$result&#41;;$j = $j + 2&#41;
		&#123;
			$y = $j+1;
			$x = $j-1;
			$user_id = $row&#91;$x&#93;;
			
			//Tupwnei to onomatepwnimo tou kathe xristi
			if&#40;!isset&#40;$row&#91;$j&#93;&#41;&#41;
				$schema_insert .= "NULL".$sep;
			elseif &#40;$row&#91;$j&#93; != ""&#41;
				$schema_insert .= "$row&#91;$j&#93;"." $row&#91;$y&#93;";
			else
				$schema_insert .= "".$sep;
				
			$query1 = "SELECT date,comments FROM emp_licences WHERE tmima_id ='$tmima_id' AND user_id='$user_id'"; 
			$result1 = @mysql_query&#40;$query1&#41;;
			
			while&#40;$row1 = mysql_fetch_row&#40;$result1&#41;&#41;
			&#123;	
				
				for&#40;$k=0; $k<mysql_num_fields&#40;$result1&#41;;$k++&#41;
				&#123;
					
					//Tupwnei ta stixeia tou kathe xristi
					if&#40;!isset&#40;$row1&#91;$k&#93;&#41;&#41;
						$schema_insert .= "NULL".$sep;
					elseif &#40;$row1&#91;$k&#93; != ""&#41;
						$schema_insert .= "\t"."$row1&#91;$k&#93;";
					else
						$schema_insert .= "".$sep;
						
						
					
				&#125;
			&#125;	
			
		&#125;
Λοιπόν... αυτό που θέλω να εμφανίζεται στο excel file είναι το εξής:

Όνομα Χρήστη-----Ημερομηνία Σχολίου-----Σχόλιο

Χρήστης1-----------12.12.2010---------------Σχόλιο1
----------------------13.12.2010---------------Σχόλιο2

Χρήστης2-----------1.12.2010---------------Σχόλιο1
----------------------3.12.2010---------------Σχόλιο2
Το παραπάνω σκρίπτ τα τυπώνει όπως εδώ (κάτω) Δλδ στην ίδια σειρά.
Πώς θα το κάνω να αλλάζει σειρά για κάθε σχόλιο;


Όνομα Χρήστη-----Ημερομηνία Σχολίου-----Σχόλιο

Χρήστης1-----------12.12.2010---------------Σχόλιο1--------13.12.2010---------------Σχόλιο2

Χρήστης2-----------1.12.2010---------------Σχόλιο1-----------3.12.2010---------------Σχόλιο2

Σας ευχαριστώ πολύ!

netpumber
Δημοσιεύσεις: 103
Εγγραφή: 08 Μαρ 2009 19:06

mySQL table into excel file

Δημοσίευση από netpumber » 15 Δεκ 2010 19:24

Καμιά ιδέα;

Άβαταρ μέλους
dimsis
Reporter
Δημοσιεύσεις: 7994
Εγγραφή: 25 Ιούλ 2001 03:00

mySQL table into excel file

Δημοσίευση από dimsis » 15 Δεκ 2010 19:32

Το "\n" είναι το line break οπότε αυτό πρόσθεσε στο τέλος του string σου

netpumber
Δημοσιεύσεις: 103
Εγγραφή: 08 Μαρ 2009 19:06

mySQL table into excel file

Δημοσίευση από netpumber » 15 Δεκ 2010 21:36

Αυτό εννοείς ή κάτι άλλο;

$schema_insert .= "\t"."$row1[$k]"."\n";

Αν ναι, τότε δεν κάνει τπτ αυτό.. Δεν αλλάζει γραμμή αυτό που θέλουμε.. :-?

Άβαταρ μέλους
dimsis
Reporter
Δημοσιεύσεις: 7994
Εγγραφή: 25 Ιούλ 2001 03:00

mySQL table into excel file

Δημοσίευση από dimsis » 15 Δεκ 2010 22:07

Ναι αυτό εννοώ. Δηλαδή το \t σου δουλεύει κανονικά και αφήνει tab (αλλάζει κελί στο excel) ενώ το \n δεν σου αλλάζει γραμμή όταν το κάνεις export στο excel;

Στο αρχείο που δημιουργείς (φαντάζομαι με header Content-Type ...) πρέπει να δεις αν αλλάζει γραμμή, όχι στην html σου. To xls που παράγεις δες.

netpumber
Δημοσιεύσεις: 103
Εγγραφή: 08 Μαρ 2009 19:06

mySQL table into excel file

Δημοσίευση από netpumber » 15 Δεκ 2010 22:30

Έτσι δημιουργείται το αρχείο

Κώδικας: Επιλογή όλων

	$file_type = "vnd.ms-excel";
	$file_ending = "xls";

//header info for browser&#58; determines file type &#40;'.doc' or '.xls'&#41;
header&#40;"Content-Type&#58; application/$file_type"&#41;;
header&#40;"Content-Disposition&#58; attachment; filename=database_dump.$file_ending"&#41;;
header&#40;"Pragma&#58; no-cache"&#41;;
header&#40;"Expires&#58; 0"&#41;;
Ναι και εγώ για το αρχείο μιλάω.. Αλλα δεν κάνει αυτό που περιμένουμε.. Κάνει ότι να ΄ναι..

Πονοκεφαλιάζω δυο μέρες τώρα για να καταλάβω το ΓΙΑΤΙ..

Άβαταρ μέλους
viktoras
Δημοσιεύσεις: 963
Εγγραφή: 05 Απρ 2001 03:00
Τοποθεσία: Γαλάτσι, Αθήνα
Επικοινωνία:

mySQL table into excel file

Δημοσίευση από viktoras » 16 Δεκ 2010 02:35

Γιατί δεν δοκιμάζεις την PHPExcel library;

Η εμπειρία μου πρόσφατα με δημιουργία DSV/CSV αρχείων για χρήση στο Excel δεν ήταν και η καλύτερη. Μέσω PHPExcel ήταν πιο εύκολα τα πράγματα.
<?="Hello Freestuff";?>
Quality hosting by Cityhost

Άβαταρ μέλους
dimsis
Reporter
Δημοσιεύσεις: 7994
Εγγραφή: 25 Ιούλ 2001 03:00

mySQL table into excel file

Δημοσίευση από dimsis » 16 Δεκ 2010 11:03

Έκανα μια δοκιμή στα γρήγορα και εγώ και όντως μου τα 'βαζε όλα στο ίδιο κελί ... αλλά βρήκα μια λύση. Αν φτιάξεις table με κελιά, τότε δουλεύει κανονικά.

π.χ. δοκίμασε αυτό:

Κώδικας: Επιλογή όλων

<?php
$file="test.xls";
$test="<table><tr><td>freestuff 1</td><td>freestuff 2</td></tr><tr><td>dimsis 1</td><td>dimsis 2</td></tr></table>";
header&#40;"Content-type&#58; application/vnd.ms-excel"&#41;;
header&#40;"Content-Disposition&#58; attachment; filename=$file"&#41;;
echo $test;
?>
αν στο table βάλεις και border=1 θα σου βγάλει τα κελιά και με περιθώριο αν σε ενδιαφέρει.

netpumber
Δημοσιεύσεις: 103
Εγγραφή: 08 Μαρ 2009 19:06

mySQL table into excel file

Δημοσίευση από netpumber » 16 Δεκ 2010 12:37

Ευχαριστώ πολύ. Θα το δοκιμάσω και θα ενημερώσω..


Χμμμ Έτρεξα αρχικά αυτό που έδωσες, αλλά μου το τυπώνει στο αρχείο έτσι όπως του το δίνω

Κώδικας: Επιλογή όλων

<table><tr><td>freestuff 1</td><td>freestuff 2</td></tr><tr><td>dimsis 1</td><td>dimsis 2</td></tr></table>
Μήπως φταίει το οτι έχω το openOffice? Αλλά δεν νομίζω..

Άβαταρ μέλους
dimsis
Reporter
Δημοσιεύσεις: 7994
Εγγραφή: 25 Ιούλ 2001 03:00

mySQL table into excel file

Δημοσίευση από dimsis » 16 Δεκ 2010 12:54

Δεν ξέρω τι παίζει με το openoffice, στο ms excel 2007 το ανοίγει κανονικά πάντως το παράδειγμα που σου έγραψα παραπάνω.

netpumber
Δημοσιεύσεις: 103
Εγγραφή: 08 Μαρ 2009 19:06

mySQL table into excel file

Δημοσίευση από netpumber » 16 Δεκ 2010 13:23

Έχεις δίκιο.. Με το ms excel 2007 παίζει...ενώ με το openoffice όχι..
Θα ρίξω και μια ματιά στο PHPExcel library και βλέπουμε..

Ευχαριστώ πολύ!

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης