Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用POI生成word时参数不正确_Java_Apache_Apache Poi - Fatal编程技术网

Java 使用POI生成word时参数不正确

Java 使用POI生成word时参数不正确,java,apache,apache-poi,Java,Apache,Apache Poi,我正在尝试使用ApachePOI在word文档中绘制jFreeChart,但我无法做到这一点。我在这里所做的我不知道我必须正确使用哪个api请帮助。我在这里所做的我现在所做的 JFreeChart TotalActivityChart = ChartFactory.createBarChart("Total Activities", "Activities", "#Candidate", bar_chart_servlet, PlotOrientation.VERTICAL, fal

我正在尝试使用ApachePOI在word文档中绘制jFreeChart,但我无法做到这一点。我在这里所做的我不知道我必须正确使用哪个api请帮助。我在这里所做的我现在所做的

      JFreeChart TotalActivityChart = ChartFactory.createBarChart("Total Activities", "Activities", "#Candidate", bar_chart_servlet, PlotOrientation.VERTICAL, false, true, false);

        /**---------------------------------- Appearance of chart for Total Activity------------------------------------ */
        // Adjust appearance (optional)
        TotalActivityChart.getTitle().setPaint(Color.BLACK);
        TotalActivityChart.setAntiAlias(true);
        CategoryPlot plot = (CategoryPlot) TotalActivityChart.getPlot();
        plot.setBackgroundPaint(new GradientPaint(0, 0, Color.DARK_GRAY, 0, 100, Color.GRAY));
        // set the range axis to display integers only...
        final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
        final CategoryItemRenderer renderer = new CustomRenderer(new Paint[] { new Color(0x3D59AB), new Color(0x009ACD), new Color(0x104E8B), new Color(0x50A6C2) });
        plot.setRenderer(renderer);
        /**--------------------------------------- End of Appearance of Chart--------------------------------------- */
        int width = 800;
        int height = 240;
        ByteArrayOutputStream chart_out = new ByteArrayOutputStream();
        ChartUtilities.writeChartAsPNG(chart_out, TotalActivityChart, width, height);
        String pictureIdx = document.addPictureData(chart_out.toByteArray(), Workbook.PICTURE_TYPE_PNG);
        chart_out.close();
    int width = 800;
        int height = 240;
        ByteArrayOutputStream chart_out = new ByteArrayOutputStream();

        ChartUtilities.writeChartAsPNG(chart_out, TotalActivityChart, width, height);
        String pictureIdx = document.addPictureData(chart_out.toByteArray(), document.PICTURE_TYPE_PNG);
        //document.createParagraph().createRun().addPicture(chart_out, Document.PICTURE_TYPE_PNG,"my pic", Units.toEMU(200), Units.toEMU(200) );
        chart_out.close();



        run.addPicture(new FileInputStream(pictureIdx), Document.PICTURE_TYPE_PNG, pictureIdx, Units.toEMU(200), Units.toEMU(200));


        // Setup the output
        String contentType="application/msword";
        response.addHeader("Content-Disposition", "attachment; filename=\""+ "reportName" + ".docx\"");
        response.setContentType(contentType);
        ServletOutputStream out = response.getOutputStream();           
        document.write(out);

有人能建议如何在单词doc中添加图片吗..提前谢谢

您的问题是这里的这个块:

ByteArrayOutputStream chart_out = new ByteArrayOutputStream();

ChartUtilities.writeChartAsPNG(chart_out, TotalActivityChart, width, height);
String pictureIdx = document.addPictureData(chart_out.toByteArray(), document.PICTURE_TYPE_PNG);
//document.createParagraph().createRun().addPicture(chart_out, Document.PICTURE_TYPE_PNG,"my pic", Units.toEMU(200), Units.toEMU(200) );
chart_out.close();

run.addPicture(new FileInputStream(pictureIdx), Document.PICTURE_TYPE_PNG, pictureIdx, Units.toEMU(200), Units.toEMU(200));
您正在将图表图片写入一个字节数组,但试图向Word文档中添加一些随机文件,这是行不通的

相反,将图表图片传递到word文档中,这应该很好,类似于:

ByteArrayOutputStream chart_out = new ByteArrayOutputStream();

ChartUtilities.writeChartAsPNG(chart_out, TotalActivityChart, width, height);
String pictureIdx = document.addPictureData(chart_out.toByteArray(), document.PICTURE_TYPE_PNG);
//document.createParagraph().createRun().addPicture(chart_out, Document.PICTURE_TYPE_PNG,"my pic", Units.toEMU(200), Units.toEMU(200) );
chart_out.close();

byte[] chartPicture = chart_out.toByteArray();

run.addPicture(new ByteArrayInputStream(chartPicture), Document.PICTURE_TYPE_PNG, pictureIdx, Units.toEMU(200), Units.toEMU(200));

这里的区别是,在捕获图片的字节后,您将这些相同的字节交给POI添加到文档中。你需要给图片本身,否则它将无法工作

我也面临同样的问题,我已将poi版本从3.9更改为4.0.1
它成功了。

看起来你已经让它生成了PNG图像,是吗?如果是这样的话,为什么不使用Apache POI将其添加到word文档中的正确位置?我如何添加?您能提供帮助吗?我正在获取FileNootFind Exceptions请参见我在上面发布的图片请查看我的Comments您的问题中遗漏了所有有趣的POI位,谁知道呢!以上内容修复了您发布的代码中所有明显的问题。对于其他内容,请尝试发布代码的其余部分,并确保您使用的是Apache POI的最新副本。我已添加了我正在使用的输出。为什么参数不正确?您能帮忙吗??