Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

Simple Export to Excel with PHP

Posted on 2008-06-18
5
639 Views
Last Modified: 2013-12-12
I wrote the following code to export a multi-dimensional array to rows in an excel spreadsheet for the user to download.  But in the fields where the data is "" or Null, it doesn't tab over to a new row so my columns are getting all jumbled.  Attached is a sample file of what I'm getting.  There must be something small that I am missing but I'm not sure what.  Any help would be appreciated, thanks!
<?php
header("Content-type: application/x-msexcel");
header("Content-Disposition: attachment; filename=report.xls");  
header("Pragma: no-cache");
header("Expires: 0"); 
 
for ($x=1; $x<count($resultArray); $x++) {
	for ($y=0; $y<count($resultArray[$x]); $y++) {
		echo $resultArray[$x][$y]."\t";
	}
	echo "\n";
} 
?>

Open in new window

sample.xls
0
Comment
Question by:lghaman123
5 Comments
 
LVL 2

Expert Comment

by:loki23
ID: 21817867
try changing:

echo $resultArray[$x][$y]."\t";

to:

echo $resultArray[$x][$y];
echo "\t";

I'm thinking it might have something to do with trying to append the tab to a null value
0
 
LVL 36

Expert Comment

by:Loganathan Natarajan
ID: 21819103
You will have to create ROWS + Columns through HTML and export to excel .. just try
0
 

Expert Comment

by:cfpdev
ID: 21820931
logudotcom is right.

excel is pretty thick, unless you give it more to work on as a delimiter. so either use |'s or comma's or do the html method.

but not tab's.

not even swearing at excel works.
0
 
LVL 36

Accepted Solution

by:
Loganathan Natarajan earned 500 total points
ID: 21820978
Ok try something like
<?php
header("Content-type: application/x-msexcel");
header("Content-Disposition: attachment; filename=report.xls");  
header("Pragma: no-cache");
header("Expires: 0"); 
 
for ($x=1; $x<count($resultArray); $x++) {
       echo "<tr>";
	    for ($y=0; $y<count($resultArray[$x]); $y++) {
                echo "<td>".$resultArray[$x][$y]."</td>";
        }
        echo "</tr>";
} 
?>

Open in new window

0
 

Author Comment

by:lghaman123
ID: 21823582
Thanks guys, I appreciate the help.  
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

These days socially coordinated efforts have turned into a critical requirement for enterprises.
This article descibes how to create a connection between Excel and SAP and how to move data from Excel to SAP or the other way around.
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …
This Micro Tutorial demonstrates how to create Excel charts: column, area, line, bar, and scatter charts. Formatting tips are provided as well.

790 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question