JExcel API - чтение и запись файла Excel на Java
В этой статье мы обсудим, как читать и записывать файл Excel с помощью JExcel API, простой библиотеки, широко используемой для простых операций, не требующих высокого уровня форматирования и операций на основе сложных формул.
P.S Tested with JExcel API – 2.6.12
1. Скачать JExcel
Пользователь Maven.
pom.xml
net.sourceforge.jexcelapi jxl 2.6.12
Или загрузите прямо наthis location
2. Написать файл Excel
Пример JExcel API, чтобы показать вам, как создать файл Excel и записать в него данные.
ExcelWrite.java
package com.techfou; import jxl.Workbook; import jxl.write.*; import jxl.write.Number; import java.io.File; import java.io.IOException; public class ExcelWrite { private static final String EXCEL_FILE_LOCATION = "C:\\temp\\MyFirstExcel.xls"; public static void main(String[] args) { //1. Create an Excel file WritableWorkbook myFirstWbook = null; try { myFirstWbook = Workbook.createWorkbook(new File(EXCEL_FILE_LOCATION)); // create an Excel sheet WritableSheet excelSheet = myFirstWbook.createSheet("Sheet 1", 0); // add something into the Excel sheet Label label = new Label(0, 0, "Test Count"); excelSheet.addCell(label); Number number = new Number(0, 1, 1); excelSheet.addCell(number); label = new Label(1, 0, "Result"); excelSheet.addCell(label); label = new Label(1, 1, "Passed"); excelSheet.addCell(label); number = new Number(0, 2, 2); excelSheet.addCell(number); label = new Label(1, 2, "Passed 2"); excelSheet.addCell(label); myFirstWbook.write(); } catch (IOException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } finally { if (myFirstWbook != null) { try { myFirstWbook.close(); } catch (IOException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } } } } }
На выходе создается файл Excel со следующим содержимым:
3. Читать файл Excel
Пример для чтения выше файла Excel.
ExcelRead.java
package com.techfou; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import java.io.File; import java.io.IOException; public class ExcelRead { private static final String EXCEL_FILE_LOCATION = "C:\\temp\\MyFirstExcel.xls"; public static void main(String[] args) { Workbook workbook = null; try { workbook = Workbook.getWorkbook(new File(EXCEL_FILE_LOCATION)); Sheet sheet = workbook.getSheet(0); Cell cell1 = sheet.getCell(0, 0); System.out.print(cell1.getContents() + ":"); // Test Count + : Cell cell2 = sheet.getCell(0, 1); System.out.println(cell2.getContents()); // 1 Cell cell3 = sheet.getCell(1, 0); System.out.print(cell3.getContents() + ":"); // Result + : Cell cell4 = sheet.getCell(1, 1); System.out.println(cell4.getContents()); // Passed System.out.print(cell1.getContents() + ":"); // Test Count + : cell2 = sheet.getCell(0, 2); System.out.println(cell2.getContents()); // 2 System.out.print(cell3.getContents() + ":"); // Result + : cell4 = sheet.getCell(1, 2); System.out.println(cell4.getContents()); // Passed 2 } catch (IOException e) { e.printStackTrace(); } catch (BiffException e) { e.printStackTrace(); } finally { if (workbook != null) { workbook.close(); } } } }
Приведенный выше код почти понятен. Каждая ячейка или лист отображается как объект в Java. В приведенном выше коде мы использовали банку JExcel, чтобы записать рабочий лист. Выполнив код, вы получите следующий результат:
Test Count:1 Result:Passed Test Count:2 Result:Passed 2
4. Добавить форматирование в файл Excel
Пример можно дополнительно улучшить, добавив некоторое форматирование. Краткий код для добавления форматирования показан ниже:
ExcelFormat .java
package com.example; import jxl.Workbook; import jxl.write.*; import jxl.write.Number; import java.io.File; import java.io.IOException; public class ExcelFormat { private static final String EXCEL_FILE_LOCATION = "C:\\temp\\MyFormattedExcel.xls"; public static void main(String[] args) { //1. Create an Excel file WritableWorkbook mySecondWbook = null; try { mySecondWbook = Workbook.createWorkbook(new File(EXCEL_FILE_LOCATION)); WritableSheet myFirstSheet = mySecondWbook.createSheet("Sheet 1", 0); WritableCellFormat cFormat = new WritableCellFormat(); WritableFont font = new WritableFont(WritableFont.ARIAL, 16, WritableFont.BOLD); cFormat.setFont(font); Label label = new Label(0, 0, "Test Count", cFormat); myFirstSheet.addCell(label); Number number = new Number(0, 1, 1); myFirstSheet.addCell(number); label = new Label(1, 0, "Result", cFormat); myFirstSheet.addCell(label); label = new Label(1, 1, "Passed"); myFirstSheet.addCell(label); number = new Number(0, 2, 2); myFirstSheet.addCell(number); label = new Label(1, 2, "Passed 2"); myFirstSheet.addCell(label); mySecondWbook.write(); } catch (WriteException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (mySecondWbook != null) { try { mySecondWbook.close(); } catch (IOException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } } } } }
Выход
Код форматирует заголовок в Arial, 16 пикселей, полужирный шрифт. Есть несколько других поддерживаемых шрифтов и размеров, доступных для изучения. В JExcel есть много дополнительных функций, которые можно использовать для создания еще более изысканного и хорошо отформатированного Excel. Эта статья дает вам старт. Чтобы ускорить работу, воспользуйтесь следующими ссылками в справочниках.