Definitely render the workbook

        :param obj f_buf: A file buffer supporting the write and seek
        methods

def render(self, f_buf=None):
        """
        Definitely render the workbook

        :param obj f_buf: A file buffer supporting the write and seek
        methods
        """
        if f_buf is None:
            f_buf = StringIO.StringIO()
        with odswriter.writer(f_buf) as writer:
            default_sheet = writer.new_sheet(self.title)
            self._render_headers(default_sheet)
            self._render_rows(default_sheet)

            # abstract_sheet require the same attributes as our current writer
            for abstract_sheet in self.sheets:
                sheet = writer.new_sheet(name=abstract_sheet.title)
                abstract_sheet._render_headers(sheet)
                abstract_sheet._render_rows(sheet)
        f_buf.seek(0)
        return f_buf