Spreadsheet to Table Plugin

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 .= '<table>';

		foreach($rows as $row){
		$i++;
			$cols = explode("\t",$row);

			if($i==1)
				$table .= '<thead>';

			$table .= '<tr>';

			foreach($cols as $col){
				$table .= '<td>'.$col.'</td>';
			}

			$table .= '</tr>';

			if($i==1){
				$table .= '</thead>';

				$table .= '<tbody>';
			}
		}
			$table .= '</tbody>';

			$table .= '</table>';
			
			return $table;
		}
	}
}

?>