阅读嵌入式excel使用apache poi Java

dsf9zpds  于 2023-11-15  发布在  Java
关注(0)|答案(1)|浏览(150)

有没有一种方法来读取嵌入式Excel文件在Java中,如下图所示


的数据
目前,我使用下面的代码来读取Excel文件

  1. File xlsxFile = new File("test.xlsx");
  2. inputStream = new FileInputStream(xlsxFile);
  3. XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
  4. XSSFSheet sheet = workbook.getSheetAt(4);

字符串

r55awzrz

r55awzrz1#

您的嵌入对象在第5张图纸的图纸图形中的形状中可见。
若要获取对象数据,可以覆盖该绘图的所有形状。如果形状是XSSFObjectData的示例,则它是对象数据形状。如果内容类型是“application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”,则对象数据形状链接到包含Office Open XML格式的Excel电子表格数据的包部件(XSSF)。如果是,那么您可以从该包部分的输入流中获得XSSFWorkbook
示例代码:

  1. import org.apache.poi.ss.usermodel.*;
  2. import org.apache.poi.xssf.usermodel.*;
  3. import java.io.FileInputStream;
  4. class ExcelGetEmbeddedFromShape {
  5. public static void main(String[] args) throws Exception {
  6. String filename = "./ExcelWithEmbedded.xlsx";
  7. Workbook workbook = WorkbookFactory.create(new FileInputStream(filename));
  8. Sheet sheet = workbook.getSheetAt(4);
  9. Drawing drawing = sheet.getDrawingPatriarch();
  10. if (drawing instanceof XSSFDrawing) {
  11. for (XSSFShape shape : ((XSSFDrawing)drawing).getShapes()) {
  12. if (shape instanceof XSSFObjectData) {
  13. XSSFObjectData objectData = (XSSFObjectData)shape;
  14. if ("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet".equals(objectData.getContentType())) {
  15. XSSFWorkbook embeddedWorkbook = (XSSFWorkbook)WorkbookFactory.create(objectData.getObjectPart().getInputStream());
  16. System.out.println(embeddedWorkbook);
  17. //... do something with embeddedWorkbook ...
  18. }
  19. }
  20. }
  21. }
  22. workbook.close();
  23. }
  24. }

字符串

展开查看全部

相关问题