Exemplo n.º 1
0
def test_get_chartsheet(Workbook):
    wb = Workbook()
    cs = wb.create_chartsheet()
    assert wb[cs.title] is cs
Exemplo n.º 2
0
def test_del_chartsheet(Workbook):
    wb = Workbook()
    cs = wb.create_chartsheet()
    del wb[cs.title]
    assert wb.chartsheets == []
Exemplo n.º 3
0
class XlWorkBook:
  def __init__(self):
    self.wsByName = {}
    self.wsByPyWs = {}
    self.wsByXlWs = {}

    self.wb = Workbook()
    pyws    = self.wb.active
    name    = pyws.title
    xlws = XlWorkSheet(self.wb,pyws,name)
    self.wsByName[name] = (pyws,xlws)
    self.wsByPyWs[pyws] = (xlws,name)
    self.wsByXlWs[xlws] = (pyws,name)

    self.activeSheet = name

  #--------------------------------------------------------------------
  def Read(self,filename):
    self.wsByName = {}
    self.wsByPyWs = {}
    self.wsByXlWs = {}

    self.wb = load_workbook(filename)

    for item in self.wb.worksheets:
      pyws = item
      name = item.title
      xlws = XlWorkSheet(self.wb,pyws,name)
      self.wsByName[name] = (pyws,xlws)
      self.wsByPyWs[pyws] = (xlws,name)
      self.wsByXlWs[xlws] = (pyws,name)

    self.activeSheet = self.wb.active.title

  #--------------------------------------------------------------------
  def CreateXlWorkSheet(self,name):
    if (name not in self.wsByName):
      self.wb.create_sheet(name)
      pyws = self.wb.get_sheet_by_name(name)
      xlws = XlWorkSheet(self.wb,pyws,name)

      self.wsByName[name] = (pyws,xlws)
      self.wsByPyWs[pyws] = (xlws,name)
      self.wsByXlWs[xlws] = (pyws,name)
    
      return self.wsByName[name][1]

    else:
      logging.error('Attempting to create duplicate name in workbook: ' + name)
      return None

  #--------------------------------------------------------------------
  def CreateXlChrtSheet(self,name):
    if (name not in self.wsByName):
      pycs = self.wb.create_chartsheet(name)
      #pycs = self.wb.get_sheet_by_name(name)
      xlcs = XlChrtSheet(self.wb,pycs,name)

      self.wsByName[name] = (pycs,xlcs)
      #self.wsByPyWs[pycs] = (xlcs,name)
      self.wsByXlWs[xlcs] = (pycs,name)
    
      return self.wsByName[name][1]

    else:
      logging.debug.error('Attempting to create duplicate name in workbook: ' + name)
      return None

  #--------------------------------------------------------------------
#  def CreateSheet(self,name):
#    if (name not in self.wsByName):
#      self.wb.create_sheet(name)
#      pyws = self.wb.get_sheet_by_name(name)
#      xlws = XlWorkSheet(self.wb,pyws,name)
#
#      self.wsByName[name] = (pyws,xlws)
#      self.wsByPyWs[pyws] = (xlws,name)
#      self.wsByXlWs[xlws] = (pyws,name)
#    
#      return self.wsByName[name][1]
#
#    else:
#      debug.error('Attempting to create duplicate name in workbook: ' + name)
#      return None

  #--------------------------------------------------------------------
  def GetActiveSheet(self):
    pyws = self.wb.active
    name = pyws.title
    if (name in self.wsByName):
      if (name == self.activeSheet):
        return self.wsByName[name][1]
      else:
        logging.debug('XlWorkBook data corrupt')
    else:
      logging.debug('XlWorkBook data corrupt')
  
  #--------------------------------------------------------------------
  def SetName(self,ws,name):
    if (name not in self.wsByName):
      xlws = ws
      pyws,orig = self.wsByXlWs[xlws]
      pyws.title = name
      xlws.name  = name

      self.wsByPyWs[pyws] = (xlws,name)
      self.wsByXlWs[xlws] = (pyws,name)

      if (self.activeSheet == orig):
        self.activeSheet = name

      del self.wsByName[orig]
      self.wsByName[name] = (pyws,xlws)

    else:
      debug.error('Attempting to create duplicate name in workbook: ' + name)

    return self.wsByName[name][1]

  #--------------------------------------------------------------------
  def GetSheetByName(self,name):
    return self.wsByName[name][1]

  #--------------------------------------------------------------------
  def RemoveSheetByName(self,name):
    self.wb.remove_sheet(self.wb.get_sheet_by_name(name))
  #--------------------------------------------------------------------
  def Save(self,name):
    self.wb.save(name)