'Inserts the given column into the matrix.
Missing rows at the end (bottom) will be filled with the default value.'

def insert(self, j, column, default=None, field=None):

    try:
        column = [v for v in column]
    except:
        raise TypeError('Datasheet.columns.insert(x):    x    must    be    list')
    column = (column + ([default] * (len(self._datasheet) - len(column))))
    if (len(column) > len(self._datasheet)):
        self._datasheet.extend(([[None]] * (len(column) - len(self._datasheet))))
    for (i, row) in enumerate(self._datasheet):
        row.insert(j, column[i])
    self._datasheet.__dict__['_m'] += 1
    if (self._datasheet.fields is not None):
        self._datasheet.fields += ([(None, None)] * ((len(self) - len(self._datasheet.fields)) - 1))
        self._datasheet.fields.insert(j, (field or (None, None)))
