2
在我的一個項目中,我需要從.xls
文件中讀取圖像。對於每一行,都有一列包含我需要讀出的圖像。從.xls文件中讀取圖像及其位置參考
它看起來像我可以一起閱讀所有圖像,但我怎樣才能得到每個圖像的位置,如列和行號,所以我可以將這些圖像與其他數據?
在我的一個項目中,我需要從.xls
文件中讀取圖像。對於每一行,都有一列包含我需要讀出的圖像。從.xls文件中讀取圖像及其位置參考
它看起來像我可以一起閱讀所有圖像,但我怎樣才能得到每個圖像的位置,如列和行號,所以我可以將這些圖像與其他數據?
只要形狀的圖片,下面是可能的:
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.*;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.InputStream;
class GetShapePosition {
public static void main(String[] args) {
try {
InputStream inp = new FileInputStream("workbook.xls");
Workbook wb = WorkbookFactory.create(inp);
HSSFSheet sheet = (HSSFSheet)wb.getSheetAt(0);
HSSFPatriarch dravingPatriarch = sheet.getDrawingPatriarch();
java.util.List<HSSFShape> shapes = dravingPatriarch.getChildren();
for (HSSFShape shape : shapes) {
if (shape instanceof HSSFPicture) {
HSSFPicture hssfPicture = (HSSFPicture)shape;
int picIndex = hssfPicture.getPictureIndex();
String filename = hssfPicture.getFileName();
int row = hssfPicture.getClientAnchor().getRow1();
int col = hssfPicture.getClientAnchor().getCol1();
System.out.println("Picture " + picIndex + " with Filename: " + filename + " is located row: " + row + ", col: " + col);
}
}
} catch (InvalidFormatException ifex) {
} catch (FileNotFoundException fnfex) {
} catch (IOException ioex) {
}
}
}
謝謝..它幫助。但無法按順序獲取圖像。當我調用getPictures()時,它讀取圖像隨機順序 –
什麼是getPictures?你的意思是'HSSFWorkbook.getAllPictures()'?從你用我的方法得到的'HSSFPicture',你也可以用'HSSFPicture.getPictureData()'得到'HSSFPictureData'。請參閱https://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFPicture.html –