maven 依赖
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.0.0</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.0.0</version> </dependency>
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.poi.ooxml.POIXMLDocumentPart; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.PictureData; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.xssf.usermodel.XSSFClientAnchor; import org.apache.poi.xssf.usermodel.XSSFDrawing; import org.apache.poi.xssf.usermodel.XSSFPicture; import org.apache.poi.xssf.usermodel.XSSFShape; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker; public class MyTest2 { private static final String EXCEL_XLS = "xls"; private static final String EXCEL_XLSX = "xlsx"; private static final String KEY_ID = "id"; private static final String KEY_NAME = "name"; private static final String KEY_EMAIL = "email"; //private static final String KEY_ICON = "icon"; /** * 判断文件是否是excel * * @throws Exception */ public static void checkExcelVaild(File file) throws Exception { if (!file.exists()) { throw new Exception("文件不存在"); } if (!(file.isFile() && (file.getName().endsWith(EXCEL_XLS) || file.getName().endsWith(EXCEL_XLSX)))) { throw new Exception("文件不是Excel"); } } public static void main(String[] args) { try { File excelFile = new File("E:/product2.xlsx"); FileInputStream in = new FileInputStream(excelFile); checkExcelVaild(excelFile); // Workbook workbook = getWorkbok(in, excelFile); Workbook workbook = WorkbookFactory.create(in); int sheetCount = workbook.getNumberOfSheets(); // Sheet的数量 if (sheetCount <= 0) { return; } /** * 设置当前excel中sheet的下标:0开始 */ // Sheet sheet = workbook.getSheetAt(0); // 遍历第一个Sheet // 获取总行数 // System.out.println(sheet.getLastRowNum()); List<Map<String, Object>> userListMap = new ArrayList<>(); List<Map<String,PictureData>> picListMap = new ArrayList<>(); for (int i = 0; i < sheetCount; i++) { // 循环sheet页 Sheet sheet = workbook.getSheetAt(i); //图片详细信息 key excle中的索引,value 图片信息 Map<String, PictureData> sheetPictrues07 = getSheetPictrues07(i, (XSSFSheet)sheet, (XSSFWorkbook)workbook); picListMap.add(sheetPictrues07); int count = 0; for (Row row : sheet) { //循环行 Map<String, Object> map = new HashMap<>(); try { // 跳过第一行的目录 if (count < 1) { count++; continue; } // 如果当前行没有数据,跳出循环 if (row.getCell(0).toString().equals("")) { return; } // 获取总列数(空格的不计算) int columnTotalNum = row.getPhysicalNumberOfCells(); System.out.println("总列数:" + columnTotalNum); System.out.println("最大列数:" + row.getLastCellNum()); int end = row.getLastCellNum(); for (int j = 0; j < end; j++) { // 循环列 Cell cell = row.getCell(j); if (cell == null) { System.out.print("null" + "\t"); continue; } Object obj = getValue(cell); if(j == 0){ String userId = obj.toString(); map.put(KEY_ID, userId); } if(j == 1){ String name = obj.toString(); map.put(KEY_NAME, name); } if(j == 2){ String email = obj.toString(); map.put(KEY_EMAIL, email); } /*if(j == 3){ String icon = obj.toString(); map.put(KEY_ICON, icon); }*/ } } catch (Exception e) { e.printStackTrace(); } userListMap.add(map); } } System.out.println(userListMap.toString()); System.out.println(picListMap.toString()); handlerImage(picListMap); } catch (Exception e) { e.printStackTrace(); } } /** * 处理图片 * @param picListMap excle中图片详细信心, * @throws Exception */ private static void handlerImage(List<Map<String, PictureData>> picListMap) throws Exception { for (Map<String, PictureData> map : picListMap) { Object key[] = map.keySet().toArray(); for (int i = 0; i < map.size(); i++) { // 获取图片流 PictureData pic = map.get(key[i]); // 获取图片索引 String picName = key[i].toString(); // 获取图片格式 String ext = pic.suggestFileExtension(); System.out.println("索引--》"+picName); System.out.println("图片格式--》"+ext); // 写入图片到磁盘 byte[] data = pic.getData(); FileOutputStream out = new FileOutputStream("E:\\testpoi\\pic" + picName + "." + ext); out.write(data); out.close(); } } } /** * 获取Excel2007图片 * @param sheetNum 当前sheet编号 * @param sheet 当前sheet对象 * @param workbook 工作簿对象 * @return Map key:图片单元格索引(0_1_1)String,value:图片流PictureData */ public static Map<String, PictureData> getSheetPictrues07(int sheetNum, XSSFSheet sheet, XSSFWorkbook workbook) { Map<String, PictureData> sheetIndexPicMap = new HashMap<String, PictureData>(); for (POIXMLDocumentPart dr : sheet.getRelations()) { if (dr instanceof XSSFDrawing) { XSSFDrawing drawing = (XSSFDrawing) dr; List<XSSFShape> shapes = drawing.getShapes(); for (XSSFShape shape : shapes) { XSSFPicture pic = (XSSFPicture) shape; XSSFClientAnchor anchor = pic.getPreferredSize(); CTMarker ctMarker = anchor.getFrom(); String picIndex = String.valueOf(sheetNum) + "_" + ctMarker.getRow() + "_" + ctMarker.getCol(); sheetIndexPicMap.put(picIndex, pic.getPictureData()); } } } return sheetIndexPicMap; } @SuppressWarnings("deprecation") private static Object getValue(Cell cell) { Object obj = null; switch (cell.getCellTypeEnum()) { case BOOLEAN: obj = cell.getBooleanCellValue(); break; case ERROR: obj = cell.getErrorCellValue(); break; case NUMERIC: obj = cell.getNumericCellValue(); break; case STRING: obj = cell.getStringCellValue(); break; default: break; } return obj; } }
相关推荐
以下是一个简单的Java代码示例,展示如何使用POI读取Excel文件: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.File; import java.io....
在本文中,我们将深入探讨如何使用Apache POI API来操作Excel文件,以便进行读取、写入和修改等任务。 一、Apache POI简介 Apache POI是一个开源项目,它提供了一系列API,使得开发者可以使用Java处理Microsoft ...
要使用POI读取Excel数据,你需要遵循以下步骤: - **引入依赖**:首先,确保在项目中添加了Apache POI的相关依赖。如果是Maven项目,可以在pom.xml中添加如下依赖: ```xml <groupId>org.apache.poi ...
在使用POI读取Excel文件时,你需要创建一个`Workbook`对象,它是Excel文件的顶级容器。对于.xlsx文件,我们使用`XSSFWorkbook`,而对于.xls文件,我们使用`HSSFWorkbook`。然后,你可以通过`Sheet`对象来访问工作簿...
"poi Excle 导入导出"这个主题主要涉及如何使用Apache POI库在Java中读取和写入Excel文件。以下是对这个主题的详细解释: 1. **Apache POI简介** Apache POI是一个强大的Java API,它允许开发人员创建、修改和显示...
“JSP读取excle文件(poi)_爱题巴_爱技术_小川哥_百度空间.htm”可能是一个详细教程,讲解了如何结合JSP和POI读取Excel文件。 总的来说,Apache POI提供了强大的API来读取Excel数据,而JSP则负责在Web页面上展示...
在Java环境中,POI提供了一套丰富的API,使得开发者可以方便地创建、读取和修改这些文件。本教程将重点讲解如何使用Apache POI来导出Excel文件。 在“POI导出Excel例子”中,我们首先需要了解几个核心类: 1. **...
Apache POI是一个流行的开源库,它允许开发者使用Java来读取、写入和修改Microsoft Office格式的文件,包括Excel(.xlsx和.xls)。本项目"springboot-poi-Excle.zip"是一个基于Spring Boot的示例,展示了如何使用...
在标题“web 读取Excel文件需要的poi jar包”和描述“java开发读取Excel问价需要的三个jar。100%通过。”中,提到的关键知识点是使用Apache POI库来读取Excel文件,并且提到了一个jar文件"exclePOI..jar"。 首先,...
接下来,我们将详细讲解如何使用Apache POI读取大数据量的Excel文件: 1. **创建Workbook对象**:这是处理Excel文件的基础,它代表整个Excel工作簿。你可以通过`XSSFWorkbook`类的构造函数,传入文件的输入流来创建...
3. 使用Apache POI读取Excel:下面的代码展示了如何打开Excel文件并读取数据: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.File; import ...
在Java中,如果你需要读取、写入或修改Excel文件,Java POI库是一个非常实用的工具。本教程将详细介绍如何使用Java POI进行Excel操作。 首先,你需要在你的项目中引入Java POI库。你可以通过Maven或Gradle来添加...
Java如何利用POI读取Excel行数 Java如何利用POI读取Excel行数是Java开发者中一个常见的问题。在Java中,我们可以使用Apache POI库来读取Excel文件中的数据。在本篇文章中,我们将详细介绍如何使用POI库来读取Excel...
Java中的Apache POI库是一个非常强大的工具,它允许开发者读取、写入和修改Microsoft Office格式的文件,尤其是Excel文档。在"java Excel poi简单示例"中,我们将探讨如何利用POI库来处理Excel数据。 Apache POI是...
下面展示如何使用POI读取Excel文件并解析数据。 1. **读取Excel文件** ```java FileInputStream file = new FileInputStream("D://Book1.xls"); Workbook workbook = WorkbookFactory.create(file); Sheet ...
在IT行业中,处理数据是日常任务之一,而Excel表格作为一种广泛使用的数据存储和管理格式,其读取和操作能力对于开发者来说至关重要。本资料合集专注于“读取Excel表相关代码”,将帮助你掌握如何在编程环境中高效地...
在示例代码中,使用了Java POI读取Excel文件,并将其写入到数据库中。首先,需要创建一个Workbook对象,然后使用Workbook对象的getSheet方法获取Excel文件的Sheet对象,最后使用Sheet对象的getRow方法读取Excel文件...
这个库允许开发者读取、写入和修改Excel工作簿,使得在Java应用程序中处理数据变得更加便捷。在本文中,我们将深入探讨如何使用jxl库来读取Excel文件。 首先,你需要在项目中引入jxl库。如果使用Maven,可以在pom....
在Java编程环境中,Apache POI库是一个非常强大的工具,它允许开发者读取、写入和修改Microsoft Office格式的文件,包括Excel(XLS和XLSX)。本教程将深入探讨如何利用Apache POI来创建带有文字水印的Excel文档。 ...
本篇将详细介绍如何使用POI库进行Excel的操作,包括读取和写入数据,尤其适用于处理复杂的表格。 首先,`POI Test.java`和`ExcelUtil.java`这两个文件很可能是实现Excel操作的示例代码。`POITest.java`可能包含了...