gpt4 book ai didi

java - 以 openxmlformats 更改图表的轴颜色和字体

转载 作者:行者123 更新时间:2023-12-02 11:07:05 27 4
gpt4 key购买 nike

使用 apache POI 和 openxmlformats,我正在构建一个带有条形图的 Excel。一切正常,但现在我想更改轴的颜色和主要网格线以及字体大小,但我找不到执行此操作的方法。

我怎样才能做到这些?

谢谢

最佳答案

如何获取有关 org.openxmlformats.schemas.drawingml.x2006 对象的信息:

所有 Office Open XML 文件(*.xlsx*.docx*.pptx)都是 ZIP 存档。所以我们可以解压缩它们并查看内部结构。

因此,创建一个包含条形图的 *.xlsx 文件,并对轴和网格线进行着色,并对轴字体进行格式化。然后解压 *.xlsx 文件并查看 xl/charts/chart1.xml。在那里你会发现类似的东西:

<c:valAx>
...
<c:majorGridlines>
<c:spPr>
<a:ln>
<a:solidFill>
<a:srgbClr val="FF0000"/>
</a:solidFill>
</a:ln>
</c:spPr>
</c:majorGridlines>
...
<c:spPr>
<a:ln>
<a:solidFill>
<a:srgbClr val="FF0000"/>
</a:solidFill>
</a:ln>
</c:spPr>
...
<c:txPr>
<a:bodyPr/>
<a:p>
<a:pPr>
<a:defRPr sz="1200">
<a:solidFill>
<a:srgbClr val="FF0000"/>
</a:solidFill>
</a:defRPr>
</a:pPr>
</a:p>
</c:txPr>
...
</c:valAx>

现在我们需要 org.openxmlformats.schemas.drawingml.x2006 的 API 文档。由于 grepcode.com 似乎不再可用,我为此找到了 http://www.atetric.com/atetric/javadoc/org.apache.poi/ooxml-schemas/1.3/ 。从 Interface CTValAx 开始。

因此,根据 Create Bar Chart in Excel with Apache POI 中的代码,值轴的格式可以如下所示:

...
//val axis
CTValAx ctValAx = ctPlotArea.addNewValAx();
ctValAx.addNewAxId().setVal(123457); //id of the val axis
ctScaling = ctValAx.addNewScaling();
ctScaling.addNewOrientation().setVal(STOrientation.MIN_MAX);
ctValAx.addNewDelete().setVal(false);
ctValAx.addNewAxPos().setVal(STAxPos.L);
ctValAx.addNewCrossAx().setVal(123456); //id of the cat axis
ctValAx.addNewTickLblPos().setVal(STTickLblPos.NEXT_TO);

//colored major gridlines
ctValAx.addNewMajorGridlines().addNewSpPr().addNewLn().addNewSolidFill().addNewSrgbClr().setVal(new byte[]{(byte)255,0,0});

//colored axis line
ctValAx.addNewSpPr().addNewLn().addNewSolidFill().addNewSrgbClr().setVal(new byte[]{(byte)255,0,0});

//axis font
org.openxmlformats.schemas.drawingml.x2006.main.CTTextBody ctTextBody
= ctValAx.addNewTxPr(); //text body properties
ctTextBody.addNewBodyPr(); //body properties
org.openxmlformats.schemas.drawingml.x2006.main.CTTextCharacterProperties ctTextCharacterProperties
= ctTextBody.addNewP().addNewPPr().addNewDefRPr(); //character properties
ctTextCharacterProperties.setSz(12*100); //size in 100th of a point
ctTextCharacterProperties.addNewSolidFill().addNewSrgbClr().setVal(new byte[]{(byte)255,0,0}); //color
...

关于java - 以 openxmlformats 更改图表的轴颜色和字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50873700/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com