PHP, Snippets

Export into excel with formula in PHP

In PHP, exporting data into an excel file (.csv) can be achieved very easily by sending a raw HTTP header. And having a formula in cells is no brainier either (and I only found that out after searching through google and not finding any solution – hehe).

The following is a rough example of how you do it. What I am trying to do here as an example is have an excel formula in Age column to calculate the person’s age automatically.

        header('Content-Type: application/csv');
        header('Content-Disposition: inline; filename="report.csv"');  

        // print column titles
        echo 'Name,Year born,Age' . "\n";  

        // a full numeric representation of a year, 4 digits; eg: 2007
        $year = date('Y'); 

        // $count starts from 2 because the first row is reserved for column titles
        $count = 2;  

	while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
 	    echo $row['name'] . ',';
            echo $row['year'] . ',';
            // formula = Current year - Bx(Year born)  B is the column position
            echo '=' . $year . '-B' . $count; 
            echo "\\n"; 
            // increment $count by 1 (same as $count = $count + 1)
            $count++; 
        }
        exit;

[tags]php, programming, csv, snippet[/tags]

Career Guide for Software Developers