if you have multi-dimensional data of unpredictable size I'd really recommend you to use collections, i.e. something like LinkedLists to implement this. That doesn't make it look beautiful but at least you can deal with all kind of 2-dimensional data and you don't waste too much memory which could be the case with a large 2-dimensional array.
If the number of columns is fixed, use a List<String> or List<Object>. If not, a List<List<String>> or List<List<Object>> is the way to go. A fixed array size with a String or Object is bad; you need to be careful of null values and even worse, an array that is too small.