Spreadsheet to Table Plugin

April 21, 2007 by aaron

This was an extremely quick project to turn spreadsheet data into an XHTML table. The plugin is quite simple to use, just copy some data from a spreadsheet ( or the visible part of an XHTML table) and paste it into a blog post between the tags [table] and [/table] (make sure that columns are tab separated and rows are on their own line). This is a no frills plugin. The first row is used as the column names and is added to a thead tag. Anything can be added to the [table] tag after “table” and it will become the table’s caption. EX [table “This is an example table”]

So this:

[table "This is an example table"]
gf  sfg sfcx    dfg
asd sd  dsfs
xcv fds     sgdf
dfg     dfg dfg
    dfg dfg dfg
[/table]

Becomes:

“This is an example table”
gf sfg sfcx dfg
asd sd dsfs
xcv fds sgdf
dfg dfg dfg
dfg dfg dfg

Installation:

  1. Copy and Paste the contents of the texbox below into a .php file.
  2. Upload and activate.

    <?php /* Plugin Name: Tabeler Plugin URI: http://anthologyoi.com/plugins/ Description: This plugin allows you to copy data directly from a spreadsheet and paste it into your blog, and will automatically create a table for it. Version: 0.1 Author: Aaron Harun. Author URI: http://anthologyoi.com */

    add_filter('the_content','tabler_find',1); add_filter('the_excerpt','tabler_find',1);

    function tabler_find($content) { return preg_replace_callback('![table([^]])](?:\r\n|\n|\r|)([\S\s]?\t[\S\s]*?)(?:\r\n|\n|\r|)[/table]!ims', 'tabler_callback', $content); }

    function tabler_callback($matches) {

    $pos_table = $matches[2];
    
    if(strpos($pos_table,chr(13)) !== FALSE){
        $rows = explode(chr(13),$pos_table);
    }else{
        $rows = explode("\n",$pos_table);
    }
    
    if(is_array($rows)){
        if($rows > 1){
            $table .= &#039;<table>&#039;;
    
        foreach($rows as $row){
        $i++;
            $cols = explode("\t",$row);
    
            if($i==1)
                $table .= &#039;<thead>&#039;;
    
            $table .= &#039;<tr>&#039;;
    
            foreach($cols as $col){
                $table .= &#039;<td>&#039;.$col.&#039;</td>&#039;;
            }
    
            $table .= &#039;</tr>&#039;;
    
            if($i==1){
                $table .= &#039;</thead>&#039;;
    
                $table .= &#039;<tbody>&#039;;
            }
        }
            $table .= &#039;</tbody>&#039;;
    
            $table .= &#039;</table>&#039;;
    
            return $table;
        }
    }
    

    }

    ?>

Categorized as:
comments powered by Disqus