Часто ли вам приходилось на живую работать с Excel? Думаю, что несколько раз приходилось. Так вот, на днях у меня для собственного проекта появилась необходимость распарсить Excel файл.
Как известно то формат Excel файла *.xsl, но после выхода Microsoft Office 2007 появился новый формат Excel файла *.xlsx, так вот для того, чтобы иметь возможность парсить Excel я использую библиотеку Apache POI все мои пожелания по поводу Excel файла она удовлетворила.
Шаг 1
Для начало создадим Maven проект и добавим следующую зависимость:
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version> </dependency>
Шаг 2
Теперь создадим Excel файл и добавим в него несколько записей.
Файл прикреплен к исходнику.
Шаг 3
Теперь попробуем распарсить файл testfile.xls, для этого напишем парсер.
Создаем класс Parser.java и в нем создадим статический метод parse(String name);
package com.devcolibri.excel; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; public class Parser { public static String parse(String name) { String result = ""; InputStream in = null; HSSFWorkbook wb = null; try { in = new FileInputStream(name); wb = new HSSFWorkbook(in); } catch (IOException e) { e.printStackTrace(); } Sheet sheet = wb.getSheetAt(0); Iterator<Row> it = sheet.iterator(); while (it.hasNext()) { Row row = it.next(); Iterator<Cell> cells = row.iterator(); while (cells.hasNext()) { Cell cell = cells.next(); int cellType = cell.getCellType(); switch (cellType) { case Cell.CELL_TYPE_STRING: result += cell.getStringCellValue() + "="; break; case Cell.CELL_TYPE_NUMERIC: result += "[" + cell.getNumericCellValue() + "]"; break; case Cell.CELL_TYPE_FORMULA: result += "[" + cell.getNumericCellValue() + "]"; break; default: result += "|"; break; } } result += "\n"; } return result; } }
Шаг 4
Теперь давайте проверим все это, создаем класс Main.java со следующим содержимым:
package com.devcolibri; import com.devcolibri.excel.Parser; public class Main { public static void main(String... args){ System.out.println(Parser.parse("testfile.xls")); } }
Шаг 5
Запускаем все это дело, и получаем следующий результат:
Александр Барчук=[5000.0] Виктор Пупкин=[10000.0] Дмитрий Федкин=[1500.0] Максим Панков=[300.0] Данил Муев=[8000.0] Анастасия Валяева=[8900.0] Екатерина Максимова=[7000.0] Company=[40700.0]
ПОХОЖИЕ ПУБЛИКАЦИИ
- None Found
9 комментариев к статье "Как работать с Excel файлами в Java?"
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.
Зачем создавать maven-project? Обычный проект java SE прекрасно справится с задачей.
Чтобы либы самому в интернете не искать, мавен автоматически скачает то что нужно
Здравствуйте, подскажите пожалуйста, как дописать строку в xls файл, именно дописать, у меня врое размер файла растёт, но после открытия его, он обратно видит только последнюю запись. Использую следующий код:
FileOutputStream fos = new FileOutputStream(path, true);
workbook.write(fos);
fos.close();
Спасибо за пример! Ради бога смените String result = “”; на StringBuilder.
Объясните, как указывается путь к файлу… запускаю ваш скаченный пример с таким результатом java.io.FileNotFoundException: testfile.xls (Не удается найти указанный файл)
А как передать эти данные в таблицу ORACLE?