Java 将图像插入Excel单元格时发生异常

Java 将图像插入Excel单元格时发生异常,java,excel,Java,Excel,我是Java新手,需要在Microsoft Excel单元格中添加注释图像 我的代码返回异常,有人能帮忙吗? 我的Java代码 public static void main(String[] args) throws Exception{ /* Create a Workbook and Worksheet */ HSSFWorkbook my_workbook = new HSSFWorkbook();

我是Java新手,需要在Microsoft Excel单元格中添加注释图像 我的代码返回异常,有人能帮忙吗? 我的Java代码

          public static void main(String[] args) throws Exception{
            /* Create a Workbook and Worksheet */
            HSSFWorkbook my_workbook = new HSSFWorkbook();
            HSSFSheet my_sheet = my_workbook.createSheet("MyBanner");               
            /* Read the input image into InputStream */
            InputStream image = new FileInputStream("C:/Users/Administrator/Desktop/New folder/Excel/Jellyfish.jpg");
            /* Convert Image to byte array */
            byte[] bytes = IOUtils.toByteArray(image);
            /* Add Picture to workbook and get a index for the picture */
            int my_picture_id = my_workbook.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);
            /* Close Input Stream */
            image.close();                
            /* Create the drawing container */
            HSSFPatriarch drawing = my_sheet.createDrawingPatriarch();
            /* Create an anchor point */
            ClientAnchor my_anchor = new HSSFClientAnchor();
            /* Define top left corner, and we can resize picture suitable from there */
            my_anchor.setCol1(2);
            my_anchor.setRow1(1);           
            /* Invoke createPicture and pass the anchor point and ID */
            HSSFPicture  my_picture = drawing.createPicture(my_anchor, my_picture_id);
            /* Call resize method, which resizes the image */
            my_picture.resize();            
            /* Write changes to the workbook */
            FileOutputStream out = new FileOutputStream(new File("C:/Users/Administrator/Desktop/New folder/Excel/Book1.xlsx"));
            my_workbook.write(out);
            out.close();
    }
这是一个例外

线程“main”java.lang.NoClassDefFoundError中出现异常:org/apache/commons/codec/digest/DigestUtils 位于org.apache.poi.hssf.usermodel.HSSFWorkbook.addPicture(HSSFWorkbook.java:1575) 位于app.app.main(app.java:39) 原因:java.lang.ClassNotFoundException:org.apache.commons.codec.digest.DigestUtils 位于java.net.URLClassLoader.findClass(URLClassLoader.java:381) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:424) 位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 还有两个 C:\Users\Administrator\AppData\Local\NetBeans\Cache\8.1\executor snippets\debug.xml:83:Java返回:1 生成失败(总时间:0秒)


如何修复它?

您也可以用这种方法尝试

final FileInputStream stream =
    new FileInputStream( "C:/Users/Administrator/Desktop/New folder/Excel/Jellyfish.jpg" );
final CreationHelper helper = workbook.getCreationHelper();
final Drawing drawing = sheet.createDrawingPatriarch();

final ClientAnchor anchor = helper.createClientAnchor();
anchor.setAnchorType( ClientAnchor.MOVE_AND_RESIZE );


     final int pictureIndex =
    workbook.addPicture( stream, Workbook.PICTURE_TYPE_JPEG );


  anchor.setCol1( 0 );
  anchor.setRow1( LOGO_ROW ); // same row is okay
  anchor.setRow2( LOGO_ROW );
  anchor.setCol2( 1 );
  final Picture pict = drawing.createPicture( anchor, pictureIndex );
  pict.resize();

您应该将依赖项添加到pom文件中的Apache Commons Codec,或者将此库添加到类路径
Commons-Codec-1.10.jar
需要在类路径中。
HSSFWorkbook
没有
addPicture(java.io.InputStream是int格式)
。只有
XSSFWorkbook
具有。