Import and export data using PHPExcel

There’s a newer version of this article topic available (2014). Please read on at Performant handling of Excel files in PHP.
A few weeks ago I had to read and write Excel files of the format BIFF8 (Excel 97), because the customer did not accept the workaround of exporting data to CSV. PEAR’s Spreadsheet_Excel_Writer combined with the project Spreadsheet_Excel_Reader on SourceForge was a good helper in the past – but only for BIFF5. BIFF8 support in spreadsheet excel writer has been a problem for a long time, and according to the authors, is still somewhat kludgy in the current version. So I needed an alternative.After a short research I stumbled upon PHPExcel which supports reading and writing of many formats in one API. It is released under the GNU Lesser General Public License which gives you the freedom to use it in commercial applications.
Output and input formats are not limited to Excel files. This article gives you a short overview about what you can do with it and demonstrates the basic usage. Weiterlesen

Accessing Nike+ data with PHP

Nike+ is a feature for the iPod nano which allows to measure time, distance and speed of runnings with a small sensor in running shoes that sends data to a transmitter on the iPod. Those data are sent to a users Nike+ account by iTunes whenever the iPod is synchronized. On the Nike+ website there is a report of runnings, the average speed, total kilometers run etc. The users can also compete with each other in virtual competitions and define goals to run more often, faster or a longer distance. The Nike+ website displays the data graphically with Adobe Flash.

There is no official API that allows you to use the raw data. Nevertheless the data are sent to the Flash via XML so there is a chance to use them. For PHP Rasmus Lerdorf himself has implemented a class to access these data. The class allows to authenticate a user and fetch the running data of a user in a XML-Format. This class can be found under Nike+ PHP API. To use that class you just have to create an object and pass the user credentials and optional caching parameters:

include("nikePlus.php");
$mynike = new NikePlus("user@domain.de", "password");

After the instantiation the object contains a SimpleXML object with all running information of that user that can be processed by any PHP application. The variables $data, $run, $challenges and $goals hold the information of the user account, runnings, ongoing challenges with other users and the personal goals of a user.
A partial output of the $data variable is shown below and contains among other things the total statistics of a user and the last recent run. The other data are represented in a similar way.

object(SimpleXMLElement)#3 (5) {
  ["userTotals"]=>
  object(SimpleXMLElement)#7 (4) {
    ["totalDistance"]=>
    string(8) "106.5635"
    ["totalDuration"]=>
    string(8) "40500702"
    ["totalRuns"]=>
    string(2) "21"
    ["totalCalories"]=>
    string(4) "5195"
  }  
  ["mostRecentRun"]=>
  object(SimpleXMLElement)#9 (4) {
    ["@attributes"]=>
    array(1) {
      ["id"]=>
      string(10) "1155526254"
    }
    ["startTime"]=>
    string(25) "2008-04-20T10:40:54+02:00"
    ["distance"]=>
    string(6) "6.6107"
    ["duration"]=>
    string(7) "2303090"
  }
}

The Nike+ data can be used to display them on a website or to use them for mash up applications. For example there is already a word press plugin to display the data on a Blog System. Also there is another community called Runner+ which displays the data in a way similar to the Nike website.