Source code for pyDEA.core.data_processing.xlsx_workbook

''' This module contains classes responsible for wrapping openpyxl functionality
    for creating xlsx files.
'''
from openpyxl import Workbook


[docs]class XlsxSheet(object): ''' This class wraps openpyxl work sheet so that it can be used by xls writer class. Attributes: name (str): work sheet name. worksheet (openpyxl work sheet): worksheet to wrap. Args: worksheet (openpyxl work sheet): worksheet to wrap. ''' def __init__(self, worksheet): self.worksheet = worksheet @property def name(self): return self.worksheet.title @name.setter def name(self, value): self.worksheet.title = value
[docs] def write(self, row, col, value): ''' Writes given value to a cell with specified row and column. Args: row (int): row index. col (int): column index. value (object): value to write. ''' # +1 because openpyxl needs rows and cols to start from 1, not from 0 cell = self.worksheet.cell(row=row+1, column=col+1) cell.value = value
[docs]class XlsxWorkbook(object): ''' This class wraps openpyxl workbook so it can be used by xls writer class. Attributes: workbook (openpyxl workbook): workbook. nb_sheets (int): number of added work sheets. ''' def __init__(self): self.workbook = Workbook() self.nb_sheets = 0
[docs] def add_sheet(self, sheet_name): ''' Adds one sheet to the workbook. Args: sheet_name (str): name of the work sheet. Returns: XlsxSheet: created work sheet. ''' self.nb_sheets += 1 if self.nb_sheets == 1: worksheet = self.workbook.active else: worksheet = self.workbook.create_sheet() worksheet.title = sheet_name return XlsxSheet(worksheet)
[docs] def save(self, file_name): ''' Saves workbook to a given file. Args: file_name (str): name of the file where workbook should be saved. ''' self.workbook.save(file_name)