Получение значения textbox из Excel на Java
У меня есть файл Excel, и мне нужно прочитать значение из текстового поля внутри этого файла Excel.
Я использую org.апаш.библиотека poi и я попытались получить значение следующим образом:
List<HSSFObjectData> obj=workbook.getAllEmbeddedObjects();
for(int i=0;i<obj.size();i++)
{
HSSFTextbox t=(HSSFTextbox)obj.get(i);
}
К сожалению, я не смог привести HSSFTextbox к элементу HSSFObjectData.
Кто-нибудь знает, как это можно сделать?2 ответа:
Может быть, вы можете сделать так:
try { InputStream input = new FileInputStream("qa-textbox.xls"); POIFSFileSystem fs = new POIFSFileSystem(input); HSSFWorkbook wb = new HSSFWorkbook(fs); HSSFSheet sheet = wb.getSheetAt(0); HSSFPatriarch pat = sheet.getDrawingPatriarch(); List children = pat.getChildren(); Iterator it = children.iterator(); while(it.hasNext()) { HSSFShape shape = (HSSFShape)it.next(); if (shape instanceof HSSFTextbox){ HSSFTextbox textbox = (HSSFTextbox)shape; HSSFRichTextString richString = textbox.getString(); String str = richString.getString(); System.out.println("String: " + str); System.out.println("String length: " + str.length()); } } } catch (IOException ex) { ex.printStackTrace(); }
Это поможет прочитать ваш лист excel
HSSFWorkbook workbook = new HSSFWorkbook(fs); for (HSSFObjectData obj : workbook.getAllEmbeddedObjects()) { //the OLE2 Class Name of the object String oleName = obj.getOLE2ClassName(); if (oleName.equals("Worksheet")) { DirectoryNode dn = (DirectoryNode) obj.getDirectory(); HSSFWorkbook embeddedWorkbook = new HSSFWorkbook(dn, fs, false); //System.out.println(entry.getName() + ": " + embeddedWorkbook.getNumberOfSheets()); readSheetElements(embeddedWorkbook); } else if (oleName.equals("Document")) { DirectoryNode dn = (DirectoryNode) obj.getDirectory(); HWPFDocument embeddedWordDocument = new HWPFDocument(dn, fs); //System.out.println(entry.getName() + ": " + embeddedWordDocument.getRange().text()); } else if (oleName.equals("Presentation")) { DirectoryNode dn = (DirectoryNode) obj.getDirectory(); SlideShow embeddedPowerPointDocument = new SlideShow(new HSLFSlideShow(dn, fs)); //System.out.println(entry.getName() + ": " + embeddedPowerPointDocument.getSlides().length); } else { if(obj.hasDirectoryEntry()){ // The DirectoryEntry is a DocumentNode. Examine its entries to find out what it is DirectoryNode dn = (DirectoryNode) obj.getDirectory(); for (Iterator entries = dn.getEntries(); entries.hasNext();) { Entry entry = (Entry) entries.next(); //System.out.println(oleName + "." + entry.getName()); } } else { // There is no DirectoryEntry // Recover the object's data from the HSSFObjectData instance. byte[] objectData = obj.getObjectData(); } } } public void readSheetElements(HSSFWorkbook embeddedWorkbook) { HSSFSheet hSSFSheet = embeddedWorkbook.getSheet(0); java.util.Iterator<Row> rowItr = hSSFSheet .rowIterator() ; while(rowItr .hasNext()) { java.util.Iterator<Cell> cellItr = rowItr.next().cellIterator() ; // read cell value from each cell }