Это старый вопрос, но все же я не мог найти приемлемого ответа для моей ситуации. В принципе, Java не имеет встроенного кодировщика для UTF-16LE с спецификацией. Итак, вам нужно развернуть свою собственную реализацию.
Вот что я получил:
private byte[] encodeUTF16LEWithBOM(final String s) {
ByteBuffer content = Charset.forName("UTF-16LE").encode(s);
byte[] bom = { (byte) 0xff, (byte) 0xfe };
return ByteBuffer.allocate(content.capacity() + bom.length).put(bom).put(content).array();
}
Если вы уже знаете индекс листа, просто позвоните
workbook.setSheetName(sheet-index, "my sheet name");
, где индекс листа - это номер листа (на основе 0)