从Java中获取Excel中的文本框值

我有一个Excel文件,我需要从Excel文件内的文本框中读取值。

我正在使用org.apache.poi库,我试图通过以下方式获取值:

List<HSSFObjectData> obj=workbook.getAllEmbeddedObjects(); for(int i=0;i<obj.size();i++) { HSSFTextbox t=(HSSFTextbox)obj.get(i); } 

不幸的是,我无法将HSSFTextbox转换为HSSFObjectData元素。

有谁知道这是怎么做到的?

也许你可以这样做:

  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 } 
Interesting Posts