从Excel(xlsx)读取文本框值的JAVA POI代码

从Excel(xlsx)读取文本框值的JAVA POI代码,java,excel-2010,Java,Excel 2010,我可以通过POI库读取excel单元格值,但excel文件包含带有值的新文本框(形状)。 一些大的文本,如描述等被放在一个文本框(形状),我坚持阅读它们 有人能帮我用java代码从excel文件(xlsx格式)中读取形状文本吗?感谢并感谢您的帮助。谢谢大家。我找到了解决方案,它适用于xls,而不适用于xlsx。我能够从文本框(形状)中读取文本 使用这个 XSSFDrawing pat = sheet.getDrawingPatriarch(); // @SuppressW


我可以通过POI库读取excel单元格值,但excel文件包含带有值的新文本框(形状)。 一些大的文本,如描述等被放在一个文本框(形状),我坚持阅读它们

有人能帮我用java代码从excel文件(xlsx格式)中读取形状文本吗?感谢并感谢您的帮助。

谢谢大家。我找到了解决方案,它适用于xls,而不适用于xlsx。我能够从文本框(形状)中读取文本

使用这个

XSSFDrawing pat = sheet.getDrawingPatriarch();
            // @SuppressWarnings("rawtypes")
            if (pat != null){

                List<XSSFShape> children = pat.getShapes();

                Iterator<XSSFShape> it = children.iterator(); 

             while(it.hasNext()) {           
                 XSSFShape shape = (XSSFShape)it.next();
                 if (shape instanceof XSSFSimpleShape){
                     XSSFSimpleShape textbox = (XSSFSimpleShape)shape;
                   String str = textbox.getText();
                   System.out.println("String: " + str);
                   System.out.println("String length: " + str.length());
                 };
             }
            }
XSSFDrawing pat=sheet.getdrawing家长();
//@SuppressWarnings(“rawtypes”)
如果(pat!=null){
List children=pat.getShapes();
Iterator it=children.Iterator();
而(it.hasNext()){
XSSFShape=(XSSFShape)it.next();
if(XSSFSimpleShape的形状实例){
XSSFSimpleShape文本框=(XSSFSimpleShape)形状;
String str=textbox.getText();
System.out.println(“字符串:+str”);
System.out.println(“字符串长度:+str.length());
};
}
}

您可以将代码粘贴到这里,并告诉我们您遇到了什么错误。您可以“阅读excel”。怎样当我们不知道您使用的是什么库(如果有的话)时,您希望我们如何帮助您?请粘贴您的poi代码以读取文件,我可以建议您使用jxl。它比poi简单得多。限制是您必须使用97-2003 xls工作表。但是,如果您有xlsx图纸,您可以使用vbs将其转换为xls以使其正常工作
XSSFDrawing pat = sheet.getDrawingPatriarch();
            // @SuppressWarnings("rawtypes")
            if (pat != null){

                List<XSSFShape> children = pat.getShapes();

                Iterator<XSSFShape> it = children.iterator(); 

             while(it.hasNext()) {           
                 XSSFShape shape = (XSSFShape)it.next();
                 if (shape instanceof XSSFSimpleShape){
                     XSSFSimpleShape textbox = (XSSFSimpleShape)shape;
                   String str = textbox.getText();
                   System.out.println("String: " + str);
                   System.out.println("String length: " + str.length());
                 };
             }
            }