public void convert() throws IOException {
        int numberOfRow = 0;
        writer.write("\n");
        boolean flag = false;
        int fullLength = 0;
        int columnDataSize = columns.get(0).getDataSize();
        for (Column column : columns) {
            if (column.getDataSize() != columnDataSize)
                throw new IndexOutOfBoundsException("Missing data on the csv-table");
            fullLength += column.maxLength();
        }
        writer.writeStartTable(fullLength, columns.size());

        while (numberOfRow < columnDataSize) {
            int i = 0;
            LinkedHashMap<Integer, List<String>> strings = new LinkedHashMap<>();
            for (Column column : columns) {
                if (column.getClass().getSimpleName().equals("StringColumn")) {
                    strings.put(i, StringParser.parsString(column.getData().get(numberOfRow).toString(), " "));

                }
                i++;
            }
            int max = Collections.max(strings.values(), new Comparator<List<String>>() {
                public int compare(List<String> o1, List<String> o2) {
                    return o1.size() - o2.size();
                }
            }).size();
            this.writeRow(numberOfRow, max, strings, flag);
            writer.writeEndRow(columns);
            flag = false;

            numberOfRow++;

        }
    }