code: func (s *Sheet) handleMerged() {
  	merged := make(map[string]*Cell)
  
  	for r, row := range s.Rows {
  		for c, cell := range row.Cells {
  			if cell.HMerge > 0 || cell.VMerge > 0 {
  				coord := GetCellIDStringFromCoords(c, r)
  				merged[coord] = cell
  			}
  		}
  	}
  
  	// This loop iterates over all cells that should be merged and applies the correct
  	// borders to them depending on their position. If any cells required by the merge
  	// are missing, they will be allocated by s.Cell().
  	for key, cell := range merged {
  
  		maincol, mainrow, _ := GetCoordsFromCellIDString(key)
  		for rownum := 0; rownum <= cell.VMerge; rownum++ {
  			for colnum := 0; colnum <= cell.HMerge; colnum++ {
  				// make cell
  				s.Cell(mainrow+rownum, maincol+colnum)
  
  			}
  		}
  	}
  }
docs: // When merging cells, the cell may be the 'original' or the 'covered'.
  // First, figure out which cells are merge starting points. Then create
  // the necessary cells underlying the merge area.
  // Then go through all the underlying cells and apply the appropriate
  // border, based on the original cell.