среда, 10 апреля 2013 г.

Экспорт данных в Excel(библиотека jxl)


Задача по экспорту данных в 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);




Комментариев нет:

Отправить комментарий