code: func (f *File) ToSlice() (output [][][]string, err error) {
  	output = [][][]string{}
  	for _, sheet := range f.Sheets {
  		s := [][]string{}
  		for _, row := range sheet.Rows {
  			if row == nil {
  				continue
  			}
  			r := []string{}
  			for _, cell := range row.Cells {
  				str, err := cell.FormattedValue()
  				if err != nil {
  					// Recover from strconv.NumError if the value is an empty string,
  					// and insert an empty string in the output.
  					if numErr, ok := err.(*strconv.NumError); ok && numErr.Num == "" {
  						str = ""
  					} else {
  						return output, err
  					}
  				}
  				r = append(r, str)
  			}
  			s = append(s, r)
  		}
  		output = append(output, s)
  	}
  	return output, nil
  }
docs: // Return the raw data contained in the File as three
  // dimensional slice.  The first index represents the sheet number,
  // the second the row number, and the third the cell number.
  //
  // For example:
  //
  //    var mySlice [][][]string
  //    var value string
  //    mySlice = xlsx.FileToSlice("myXLSX.xlsx")
  //    value = mySlice[0][0][0]
  //
  // Here, value would be set to the raw value of the cell A1 in the
  // first sheet in the XLSX file.