As the caller must obviously know the data type, I think I will just provide member functions in my Column class eg:
Code:
public class Column
{
	String _theValue;

	public Int32 Int32Value
	{
		get { return Convert.ToInt32(_theValue); }
	}

	public Boolean BooleanValue
	{
		get { return Convert.ToBoolean(_theValue); }
	}
	// etc
}
These functions will throw a runtime exception if the 'wrong' one is called and I'm only supporting a few data types...