Чтение и запись данных в файл Excel с использованием Apache POI
Ранее в этом посте мы представили Apache POI - Java API, полезный для взаимодействия с офисными документами Microsoft.
Теперь посмотрим, как мы можем читать и писать в файл Excel с помощью API.
Написание файла Excel
Написание файла с использованием POI очень просто и включает следующие шаги:
- Создать книгу
- Создать лист в книге
- Создать строку на листе
- Добавить ячейки в лист
- Повторите шаги 3 и 4, чтобы записать больше данных.
// import statements public class POIforgfgWrite { public static void main(String[] args) { // Blank workbook XSSFWorkbook workbook = new XSSFWorkbook(); // Create a blank sheet XSSFSheet sheet = workbook.createSheet( "student Details" ); // This data needs to be written (Object[]) Map<String, Object[]> data = new TreeMap<String, Object[]>(); data.put( "1" , new Object[]{ "ID" , "NAME" , "LASTNAME" }); data.put( "2" , new Object[]{ 1 , "Pankaj" , "Kumar" }); data.put( "3" , new Object[]{ 2 , "Prakashni" , "Yadav" }); data.put( "4" , new Object[]{ 3 , "Ayan" , "Mondal" }); data.put( "5" , new Object[]{ 4 , "Virat" , "kohli" }); // Iterate over data and write to sheet Set<String> keyset = data.keySet(); int rownum = 0 ; for (String key : keyset) { // this creates a new row in the sheet Row row = sheet.createRow(rownum++); Object[] objArr = data.get(key); int cellnum = 0 ; for (Object obj : objArr) { // this line creates a cell in the next column of that row Cell cell = row.createCell(cellnum++); if (obj instanceof String) cell.setCellValue((String)obj); else if (obj instanceof Integer) cell.setCellValue((Integer)obj); } } try { // this Writes the workbook gfgcontribute FileOutputStream out = new FileOutputStream( new File( "gfgcontribute.xlsx" )); workbook.write(out); out.close(); System.out.println( "gfgcontribute.xlsx written successfully on disk." ); } catch (Exception e) { e.printStackTrace(); } } } |
Чтение файла Excel
Чтение файла Excel также очень просто, если мы разделим это на шаги.
- Создать экземпляр книги из листа Excel
- Добраться до нужного листа
- Увеличить номер строки
- перебирать все ячейки подряд
- повторяйте шаги 3 и 4, пока все данные не будут прочитаны
// import statements public class POIforgfgRead { public static void main(String[] args) { try { FileInputStream file = new FileInputStream( new File( "gfgcontribute.xlsx" )); // Create Workbook instance holding reference to .xlsx file XSSFWorkbook workbook = new XSSFWorkbook(file); // Get first/desired sheet from the workbook XSSFSheet sheet = workbook.getSheetAt( 0 ); // Iterate through each rows one by one Iterator<Row> rowIterator = sheet.iterator(); while (rowIterator.hasNext()) { Row row = rowIterator.next(); // For each row, iterate through all the columns Iterator<Cell> cellIterator = row.cellIterator(); while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); // Check the cell type and format accordingly switch (cell.getCellType()) { case Cell.CELL_TYPE_NUMERIC: System.out.print(cell.getNumericCellValue() + "t" ); break ; case Cell.CELL_TYPE_STRING: System.out.print(cell.getStringCellValue() + "t" ); break ; } } System.out.println( "" ); } file.close(); } catch (Exception e) { e.printStackTrace(); } } } |
Выход:
Иногда вам нужно прочитать файл в другом месте: Вот как это сделать:
private static final String FILE_NAME = "C:\Users\pankaj\Desktop\projectOutput\mobilitymodel.xlsx" ; public static void write() throws IOException, InvalidFormatException { InputStream inp = new FileInputStream(FILE_NAME); Workbook wb = WorkbookFactory.create(inp); Sheet sheet = wb.getSheetAt( 0 ); ........ } |
Вы можете добавить в существующий файл, используя следующий код:
private static final String FILE_NAME = "C:\Users\pankaj\Desktop\projectOutput\blo.xlsx" ; public static void write() throws IOException, InvalidFormatException { InputStream inp = new FileInputStream(FILE_NAME); Workbook wb = WorkbookFactory.create(inp); Sheet sheet = wb.getSheetAt( 0 ); int num = sheet.getLastRowNum(); Row row = sheet.createRow(++num); row.createCell( 0 ).setCellValue( "xyz" ); ..... .. // Now this Write the output to a file FileOutputStream fileOut = new FileOutputStream(FILE_NAME); wb.write(fileOut); fileOut.close(); } |
Рекомендации :
https://poi.apache.org/
https://poi.apache.org/spreadsheet/examples.html
https://poi.apache.org/apidocs/
Эта статья предоставлена Панкаджем Кумаром . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.