Выгрузка данных в Excel

180
23 декабря 2017, 05:10

Запросом получаю данные в ResultSet. Как полученные данные выгрузить в Excel и сразу же открыть полученный Excel файл?

Answer 1

Это две отдельные задачи.

Формирование Excel файла

Для этого есть множество библиотек. Самые популярные из них Apache POI и Jasper Reports.

Пример с использованием Apache POI:

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class ApachePOIExcelWrite {
    private static final String FILE_NAME = "/tmp/MyFirstExcel.xlsx";
    public static void main(String[] args) {
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = workbook.createSheet("Datatypes in Java");
        Object[][] datatypes = {
                {"Datatype", "Type", "Size(in bytes)"},
                {"int", "Primitive", 2},
                {"float", "Primitive", 4},
                {"double", "Primitive", 8},
                {"char", "Primitive", 1},
                {"String", "Non-Primitive", "No fixed size"}
        };
        int rowNum = 0;
        System.out.println("Creating excel");
        for (Object[] datatype : datatypes) {
            Row row = sheet.createRow(rowNum++);
            int colNum = 0;
            for (Object field : datatype) {
                Cell cell = row.createCell(colNum++);
                if (field instanceof String) {
                    cell.setCellValue((String) field);
                } else if (field instanceof Integer) {
                    cell.setCellValue((Integer) field);
                }
            }
        }
        try {
            FileOutputStream outputStream = new FileOutputStream(FILE_NAME);
            workbook.write(outputStream);
            workbook.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("Done");
    }
}

Запуск Excel с передачей ему результирующего файла

Так же можно решить разными способами. Один из них - передача сигнала системе о том, что нужно открыть файл просмотрщиком по умолчанию.

Desktop.getDesktop().open(new File("/tmp/MyFirstExcel.xlsx"));

В таком случае либо запустится Excel, либо появится системный диалог выбора программы для открытия файла.

READ ALSO
Как вынести метод в другой класс?

Как вынести метод в другой класс?

Есть проект с классом MainActivity и соответствующим layout/activity_main

154
Java: Специальные символы

Java: Специальные символы

Как с помощью методаreplaceAll("\[", "") можно заменить [ на специальный символ \u00A7 (означает символ &)?

229
Клик на элементе TreeItem

Клик на элементе TreeItem

Есть дерево с 5-ю элементамиКак реализовать клик мышкой на item1 и item2?

173
fancybox 3 баг в ios

fancybox 3 баг в ios

Есть попап(fancybox 3) авторизации, в iphone если открыть его и начать вводить текст то курсор уезжает внизКак пофиксить посмотреть баг можно тут...

159