def write_url(*args)
      # Check for a cell reference in A1 notation and substitute row and column
      row, col, url, xf, str, tip = row_col_notation(args)
      xf, str = str, xf if str.respond_to?(:xf_index) || !xf.respond_to?(:xf_index)
      raise WriteXLSXInsufficientArgumentError if [row, col, url].include?(nil)

      # Check that row and col are valid and store max and min values
      check_dimensions(row, col)
      store_row_col_max_min_values(row, col)

      hyperlink = Hyperlink.factory(url, str, tip)
      store_hyperlink(row, col, hyperlink)

      if hyperlinks_count > 65_530
        raise "URL '#{url}' added but number of URLS is over Excel's limit of 65,530 URLS per worksheet."
      end

      # Write the hyperlink string.
      write_string(row, col, hyperlink.str, xf)
    end
def write_url(*args)
      # Check for a cell reference in A1 notation and substitute row and column
      row, col, url, xf, str, tip = row_col_notation(args)
      xf, str = str, xf if str.respond_to?(:xf_index) || !xf.respond_to?(:xf_index)
      raise WriteXLSXInsufficientArgumentError if [row, col, url].include?(nil)

      # Check that row and col are valid and store max and min values
      check_dimensions(row, col)
      store_row_col_max_min_values(row, col)

      hyperlink = Hyperlink.factory(url, str, tip)
      store_hyperlink(row, col, hyperlink)

      if hyperlinks_count > 65_530
        raise "URL '#{url}' added but number of URLS is over Excel's limit of 65,530 URLS per worksheet."
      end

      # Write the hyperlink string.
      write_string(row, col, hyperlink.str, xf)
    end
:call-seq:
   write_url(row, column, url [ , format, label, tip ] )

 Write a hyperlink to a URL in the cell specified by +row+ and +column+.
 The hyperlink is comprised of two elements: the visible label and
 the invisible link. The visible label is the same as the link unless
 an alternative label is specified. The label parameter is optional.
 The label is written using the {#write()}[#method-i-write] method. Therefore it is
 possible to write strings, numbers or formulas as labels.

 The +format+ parameter is also optional, however, without a format
 the link won't look like a format.

 The suggested format is:

     format = workbook.add_format(:color => 'blue', :underline => 1)

 Note, this behaviour is different from writeexcel gem which
 provides a default hyperlink format if one isn't specified
 by the user.

 There are four web style URI's supported:
 http://, https://, ftp:// and mailto::

     worksheet.write_url(0, 0, 'ftp://www.ruby-lang.org/',  format)
     worksheet.write_url('A3', 'http://www.ruby-lang.org/', format)
     worksheet.write_url('A4', 'mailto:foo@bar.com', format)

 You can display an alternative string using the +label+ parameter:

     worksheet.write_url(1, 0, 'http://www.ruby-lang.org/', format, 'Ruby')

 If you wish to have some other cell data such as a number or a formula
 you can overwrite the cell using another call to write_*():

     worksheet.write_url('A1', 'http://www.ruby-lang.org/')

     # Overwrite the URL string with a formula. The cell is still a link.
     worksheet.write_formula('A1', '=1+1', format)

 There are two local URIs supported: internal: and external:.
 These are used for hyperlinks to internal worksheet references or
 external workbook and worksheet references:

     worksheet.write_url('A6',  'internal:Sheet2!A1',              format)
     worksheet.write_url('A7',  'internal:Sheet2!A1',              format)
     worksheet.write_url('A8',  'internal:Sheet2!A1:B2',           format)
     worksheet.write_url('A9',  %q{internal:'Sales Data'!A1},      format)
     worksheet.write_url('A10', 'external:c:\temp\foo.xlsx',       format)
     worksheet.write_url('A11', 'external:c:\foo.xlsx#Sheet2!A1',  format)
     worksheet.write_url('A12', 'external:..\foo.xlsx',            format)
     worksheet.write_url('A13', 'external:..\foo.xlsx#Sheet2!A1',  format)
     worksheet.write_url('A13', 'external:\\\\NET\share\foo.xlsx', format)

 All of the these URI types are recognised by the {#write()}[#method-i-write] method, see above.

 Worksheet references are typically of the form Sheet1!A1. You can
 also refer to a worksheet range using the standard Excel notation:
 +Sheet1!A1:B2+.

 In external links the workbook and worksheet name must be separated
 by the # character: +external:Workbook.xlsx#Sheet1!A1+.

 You can also link to a named range in the target worksheet. For
 example say you have a named range called +my_name+ in the workbook
 +c:\temp\foo.xlsx+ you could link to it as follows:

     worksheet.write_url('A14', 'external:c:\temp\foo.xlsx#my_name')

 Excel requires that worksheet names containing spaces or non
 alphanumeric characters are single quoted as follows +'Sales Data'!A1+.

 Note: WriteXLSX will escape the following characters in URLs as required
 by Excel: \s " < > \ [ ] ` ^ { } unless the URL already contains +%xx+
 style escapes. In which case it is assumed that the URL was escaped
 correctly by the user and will by passed directly to Excel.

 See also, the note about {"Cell notation"}[#label-Cell+notation].