千家信息网

JAVA怎么去掉Excel中的对象

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,本篇内容主要讲解"JAVA怎么去掉Excel中的对象",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"JAVA怎么去掉Excel中的对象"吧!判断是否存在对象
千家信息网最后更新 2025年02月04日JAVA怎么去掉Excel中的对象

本篇内容主要讲解"JAVA怎么去掉Excel中的对象",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"JAVA怎么去掉Excel中的对象"吧!

判断是否存在对象。

先贴一下今天尝试的代码。代码执行后,文件变小了,但文件中的对象还是存在。所以毫无办法。坑爹的office

        //JAVA导入Excel 报错 java.io.IOException: Zip bomb detected!        ZipSecureFile.setMinInflateRatio(-1.0d);        // 创建XSSF的workbook        XSSFWorkbook book = XSSFWorkbookFactory.createWorkbook(file.getInputStream());        // 这一行没什么用,只是为了看里面方法和值        CTWorksheet ctWorksheet = book.getSheetAt(0).getCTWorksheet();        // 获取画图管理器        XSSFDrawing drawingPatriarch = book.getSheetAt(0).getDrawingPatriarch();        // 这一行也没什么用,因为对象依然存在        book.getSheetAt(0).getPackagePart().clear();        // 没什么用        CTShape ctShape = new CTShapeImpl(ctWorksheet.schemaType());        // 获取XSSFShape列表,就是那些该死的对象。        List shapes = drawingPatriarch.getShapes();        // a、b、c、d、flag、shapeNames都没什么用,只是为了代码执行时,能观察数量和对象名称        int a = 0;        int b = 0;        int c = 0;        int d = 0;        boolean flag = false;        List shapeNames = new ArrayList<>();        for (XSSFShape xssfShape:shapes){            shapeNames.add(xssfShape.getShapeName());            xssfShape.setLineStyle(0);            xssfShape.setLineWidth(0);            // 将对象的三围搞到0.            XSSFClientAnchor anchor = (XSSFClientAnchor) xssfShape.getAnchor();            anchor.setCol1(0);            anchor.setCol2(0);            anchor.setDx1(0);            anchor.setDx2(0);            anchor.setDy1(0);            anchor.setDy2(0);            anchor.setRow1(0);            anchor.setRow2(1);            d++;        }        System.out.println("a:"+a);        System.out.println("b:"+b);        System.out.println("c:"+c);        System.out.println("d:"+d);        System.out.println("flag:"+flag);        System.out.println("对象名称:"+ shapeNames.get(0));

改造后

        XSSFWorkbook book = XSSFWorkbookFactory.createWorkbook(file.getInputStream());        XSSFDrawing drawingPatriarch = book.getSheetAt(0).getDrawingPatriarch();        if (drawingPatriarch != null && drawingPatriarch.getShapes().size()>0){            return ApiResult.error("文件中存在隐藏对象,请重新整理。粘贴时,只粘贴文字");        }

到此,相信大家对"JAVA怎么去掉Excel中的对象"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0