当前位置: 代码迷 >> 综合 >> JAVA 通过poi 读取 本地excel(.xls,.xlsx)文件,文件中 包含图片
  详细解决方案

JAVA 通过poi 读取 本地excel(.xls,.xlsx)文件,文件中 包含图片

热度:22   发布时间:2023-12-13 21:48:23.0

以下代码亲测可以使用。以下代码可以直接运行查看效果。

jar 下载地址:http://download.csdn.net/detail/qw0907/9741548

用的jar如下:

poi-3.8-20120326.jar

poi-ooxml-3.8-20120326.jar

poi-ooxml-schemas-3.8-20120326.jar

poi-scratchpad-3.8-20120326.jar



 读取.xls

import java.io.File;
import java.io.FileInputStream;
import java.util.List;import org.apache.poi.hssf.usermodel.HSSFPicture;
import org.apache.poi.hssf.usermodel.HSSFPictureData;
import org.apache.poi.hssf.usermodel.HSSFShape;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;public final class TestImportExcel {public static void main(String[] args) throws Exception  {File excelFile = new File("F:\\B5204645.xls");HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(excelFile));HSSFSheet sheet = wb.getSheetAt(0);for (Row row : sheet) {for (Cell cell : row) {switch (cell.getCellType()) {case Cell.CELL_TYPE_STRING:System.out.print(cell.getRichStringCellValue().getString());System.out.print("|");break;case Cell.CELL_TYPE_NUMERIC:if (DateUtil.isCellDateFormatted(cell)) {System.out.print(String.valueOf(cell.getDateCellValue()));} else {System.out.print(cell.getNumericCellValue());}System.out.print("|");break;case Cell.CELL_TYPE_BOOLEAN:System.out.print(cell.getBooleanCellValue());System.out.print("|");break;default:}}System.out.println();}//读取图片List<HSSFPictureData> pictures = wb.getAllPictures();  for (HSSFShape shape : sheet.getDrawingPatriarch().getChildren()) {  if (shape instanceof HSSFPicture) {HSSFPicture pic = (HSSFPicture) shape;  int pictureIndex = pic.getPictureIndex()-1;  HSSFPictureData picData = pictures.get(pictureIndex);System.out.println("image-size:" + picData.getData().length);}  }  System.out.println(wb.getSheetName(0));}
}

 读取.xlsx

package com.sae.ecds.ct.excel;import java.io.File;
import java.io.FileInputStream;
import java.util.List;import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFPictureData;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;public final class TestImportXlsx {public static void main(String[] args) throws Exception  {File excelFile = new File("F:\\B52046450056.xlsx");XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(excelFile));XSSFSheet sheet = wb.getSheetAt(0);for (Row row : sheet) {for (Cell cell : row) {switch (cell.getCellType()) {case Cell.CELL_TYPE_STRING:System.out.print(cell.getRichStringCellValue().getString());System.out.print("|");break;case Cell.CELL_TYPE_NUMERIC:if (DateUtil.isCellDateFormatted(cell)) {System.out.print(String.valueOf(cell.getDateCellValue()));} else {System.out.print(cell.getNumericCellValue());}System.out.print("|");break;case Cell.CELL_TYPE_BOOLEAN:System.out.print(cell.getBooleanCellValue());System.out.print("|");break;default:}}System.out.println();}//读取图片List<XSSFPictureData> pictures = wb.getAllPictures();  for (int i = 0; i < pictures.size(); i++) {XSSFPictureData pictureData = pictures.get(i);byte[] picData = pictureData.getData();System.out.println("image-size:" + picData.length);}System.out.println(wb.getSheetName(0));}
}


  相关解决方案