function write_ws_xml_datavalidation(validations) {
var o = '<dataValidations>';
  for(var i=0; i < validations.length; i++) {
    var validation = validations[i];
    o += '<dataValidation type="list" allowBlank="1" sqref="' + validation.sqref + '">';
    o += '<formula1>&quot;' + validation.values + '&quot;</formula1>';
    o += '</dataValidation>';
  }
  o += '</dataValidations>';
  return o;
}

// modify the function in xlsx.js
function write_ws_xml(idx, opts, wb, rels) {
  // ...
  if(ws['!merges'] != null && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merges']));
  if(ws['!dataValidation']) o[o.length] = write_ws_xml_datavalidation(ws['!dataValidation']);
  // ...
}
/*
* ==================== example ====================
*/
var wb = {
  Sheets: {
    Sheet1: {
      '$ref': 'A1:Z99',
      '!dataValidation': [
        {sqref: 'A1:A99', values: ['foo', 'bar', 'baz']},
        {sqref: 'B1:B99', values: ['Africa', 'Asia', 'Europe', 'America', 'Australia']},
      ]
    }
  },
  SheetNames: ['Sheet1']
}

var buff = xlsx.write(wb, {type: 'buffer'});