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

来源:互联网 发布:动漫设计软件 编辑:程序博客网 时间:2024/05/16 03:31

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

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));    }}


1 0