Задача по экспорту данных в Excel достаточно востребована.
В быту офисных работников зачастую документы представленные в табличном виде хранят именно в формате xls. А потому всю экспортируемую информацию, каких-то статистических данных отчетности необходимо сохранять в виде электронной таблицы.
Опишу пару главных объектов библиотеки jxl, а так же основных методов.
1)Создание файла, объекта книги и листа в данной книги
File myExcelFile = new File("myExcelFile.xls");
WritableWorkbook workbook = Workbook.createWorkbook(myExcelFile);
WritableSheet sheet = workbook.createSheet("export", 0);
2)Форматирование ячейки таблицы
WritableFont fontBig = new WritableFont(WritableFont.ARIAL, 16);
WritableCellFormat cellFormat = new WritableCellFormat(fontBig);
try {
//установка бордера
cellFormat.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
//выравнивание текста внутри ячейки по горизонтали
cellFormat.setAlignment(Alignment.CENTRE);
//выравнивание текста внутри ячейки по вертикали
cellFormat.setVerticalAlignment(VerticalAlignment.CENTRE);
//перенос текста по словам, когда достигнута максимальная длина ячейки.
cellFormat.setWrap(true);
} catch (WriteException e) {
e.printStackTrace();
}
/*отсчет строк и колонок начинается с нуля, как принято в программировании, т.е. координатой ячейки A1 является точка(0,0); */
Label cell = new Label(column, row, "text", cellFormat);
sheet.addCell(cell);
3) Форматирование ЦЕЛИКОМ колонки
Установка размера колонки, 17ть - это количество символов, а 256 это средняя длина одного символа, в результате чего получается нужная нам длина ячейки(колонки в нашем случае).
CellView thisView = new CellView();
thisView.setSize(17*256);
sheet.setColumnView(column, thisView);
4)Слияние ячеек.
sheet.mergeCells(0, 9, 4, 12);
Что бы заполнить текстом ячейку после слияния, координата должна соответствовать координате первой ячейке в слиянии. т.е. в данном случае (0,9).
5)Для переноса текста внутри ячейки можно использовать последовательность "/012".
Label lb = new Label(0, 1, "asdasd" + \012);
sheet.addCell(lb);