XlsxWriter and Python Inheritance

I just started working with XlsxWriter, and I wanted to write my own methods to simplify the writing of excels, since I have all the same formats.

I wanted to make it completely transparent by writing a module that inherits XlsxWriter, and one who does not need my methods using my module is the same as using it directly XlsxWriter, and if at some point one of my methods is needed, they can be used without any code changes or adding more objects working in one file / object.

So, I started writing a module:

import xlsxwriter

class XlsxMaster(xlsxwriter.Workbook):

    def __init__(self, filename):
        super(XlsxMaster, self).__init__(filename)

    def write_results(self):
        print "write results"

Then I can use:

from xlsx_Master import XlsxMaster

workbook = XlsxMaster('./Expenses01.xlsx')
worksheet = workbook.add_worksheet()
worksheet.write_results()

, , xlsxwriter.worksheet, , workbook.write_results(), , . xlsxwriter.worksheet ? , . , , , .

+4
2

- , , xls -.

, xlswriter, Facade, , , xlswriter .

import xlsxwriter

class ExcelWriter(object):

    def getColFormatInfo(self, fieldname):
        #some app-specific stuff...
        f = FieldFormat.factory(self.rdb, fieldname)
        # width = 30
        label = f.SHORTNAME
        width = max(f.LENGTH, len(label)) 
        return width, label

    def __init__(self, rdb, title):
        self.rdb = rdb
        self.fnp = "/tmp/%s.xlsx" % (title)
        wb = self.workbook = xlsxwriter.Workbook(self.fnp)

        #http://xlsxwriter.readthedocs.org/en/latest/format.html#set_bg_color
        self.fmt_title = wb.add_format(dict(bold=True))
        self.fmt_title.set_bg_color("#F5F5F5")
        self.fmt_title.set_border(1)

        self.fmt_colheader = wb.add_format(dict(bold=True))
        self.fmt_colheader.set_bottom(2)


        self.fmt_link = wb.add_format({'color': 'blue', 'underline': 1})

    def add_worksheet(self, wsname):
        return self.workbook.add_worksheet(wsname)

    def write_title(self, ws, row, col, s):
        ws.write(row, col, s, self.fmt_title)

    def write_colheader(self, ws, row, col, s):
        ws.write(row, col, s, self.fmt_colheader)

    def write(self, ws, row, col, s):
        ws.write(row, col, s)

    def write_url(self, ws, row, col, url, s):
        ws.write_url(row, col, url, self.fmt_link, s)

, , xls , write_colheader.

xlswriter .

, , . , , put xyz 1,13. html- - django-tables2 html, .

, , , -, , , ExcelWriter, - , ExcelWriter API.

, , , , , # F5F5F5 Json , ExcelWriter :

- :

self.fmt_title.set_bg_color(
    self.j_config.get("fmt_title",{}).get("bg_color", "F5F5F5")
    )

OPs , defs .

def add_worksheet(self, wsname):
    ws = self.current_ws = self.workbook.add_worksheet(wsname)
    return ws

#you'd also need to have a set_current_ws function

def write_url(self, row, col, url, s, ws=None, fmt=None):
    ws = ws or self.current_ws
    fmt = fmt or self.fmt_link

    ws.write_url(row, col, url, fmt, s)
+3

write_results - , , Worksheet. write_results. , . _ add_sheet

, , , .

+2

All Articles