POI处理PPT的表格table,XSLFTable样式设置
来源:互联网 发布:jre 8u91 windows x32 编辑:程序博客网 时间:2024/04/28 21:58
POI版本3.14
ppt中插入表格(table),是可以设置表格的样式的:抬头行有背景颜色,抬头行文字默认成白色,数据行分奇数偶数行有间隔背景色,这个样式是附加在表格元素上的,而不是加在行或者格子上,即从XSLFTableRow和XSLFTableCell是读取不到这个样式设置的。
从XSLFTable中找这个设置。查看XSLFTable的方法,发现有个getCTTable(),预览返回值的string内容:
<xml-fragment xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"> <a:tblPr firstRow="1" bandRow="1"> <a:tableStyleId>{21E4AEA4-8DFA-4A89-87EB-49C32662AFE0}</a:tableStyleId> </a:tblPr> <a:tblGrid> <a:gridCol w="2709333"/> <a:gridCol w="2709333"/> <a:gridCol w="2709333"/> </a:tblGrid> <a:tr h="370840"> <a:tc> <a:txBody> <a:bodyPr/> <a:lstStyle/> <a:p> <a:r> <a:rPr lang="en-US" altLang="zh-CN" dirty="0" err="1" smtClean="0"/> <a:t>aa</a:t> </a:r> <a:endParaRPr lang="zh-CN" altLang="en-US" dirty="0"/> </a:p> </a:txBody> <a:tcPr/> </a:tc> <a:tc> <a:txBody> <a:bodyPr/> <a:lstStyle/> <a:p> <a:r> <a:rPr lang="en-US" altLang="zh-CN" dirty="0" smtClean="0"/> <a:t>bb</a:t> </a:r> <a:endParaRPr lang="zh-CN" altLang="en-US" dirty="0"/> </a:p> </a:txBody> <a:tcPr/> </a:tc> <a:tc> <a:txBody> <a:bodyPr/> <a:lstStyle/> <a:p> <a:r> <a:rPr lang="en-US" altLang="zh-CN" dirty="0" smtClean="0"/> <a:t>cc</a:t> </a:r> <a:endParaRPr lang="zh-CN" altLang="en-US" dirty="0"/> </a:p> </a:txBody> <a:tcPr/> </a:tc> </a:tr> <a:tr h="370840"> <a:tc> <a:txBody> <a:bodyPr/> <a:lstStyle/> <a:p> <a:r> <a:rPr lang="en-US" altLang="zh-CN" dirty="0" err="1" smtClean="0"/> <a:t>dd</a:t> </a:r> <a:endParaRPr lang="zh-CN" altLang="en-US" dirty="0"/> </a:p> </a:txBody> <a:tcPr/> </a:tc> <a:tc> <a:txBody> <a:bodyPr/> <a:lstStyle/> <a:p> <a:r> <a:rPr lang="en-US" altLang="zh-CN" dirty="0" err="1" smtClean="0"/> <a:t>ee</a:t> </a:r> <a:endParaRPr lang="zh-CN" altLang="en-US" dirty="0"/> </a:p> </a:txBody> <a:tcPr/> </a:tc> <a:tc> <a:txBody> <a:bodyPr/> <a:lstStyle/> <a:p> <a:r> <a:rPr lang="en-US" altLang="zh-CN" dirty="0" smtClean="0"/> <a:t>ff</a:t> </a:r> <a:endParaRPr lang="zh-CN" altLang="en-US" dirty="0"/> </a:p> </a:txBody> <a:tcPr/> </a:tc> </a:tr></xml-fragment>
这个PPT上有一个2行3列的table,单元格的文本分别是aa、bb、cc、dd、ee、ff。
这里有列表table的信息,也有row和cell的信息,当设置了表格样式的时候会有这个属性:
<a:tableStyleId>{21E4AEA4-8DFA-4A89-87EB-49C32662AFE0}</a:tableStyleId>
不同的表格设置同样的蓝色风格或者红色风格,这个属性值也是相同的。
这个属性的获取方法:
table.getCTTable().getTblPr().getTableStyleId()。
一个完整的例子:
public static void readPpt3() throws Exception {String template = "e:\\table-template3.pptx";XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(template));XSLFSlide slide = ppt.getSlides().get(0);XSLFTable table = null;for(XSLFShape part : slide.getShapes()){if(part instanceof XSLFTable){table = (XSLFTable) part;CTTable ctt = table.getCTTable();CTTableProperties tp = ctt.getTblPr();System.out.println(tp.getTableStyleId());}}}
设置的时候,用
tp.setTableStyleId("21E4AEA4-8DFA-4A89-87EB-49C32662AFE0");
发现并没有生效。对比getCTTable()的xml相关部分,发现区别在于firstRow="1" bandRow="1"属性。
所以,设置样式的方法是:
CTTable ctt = table.getCTTable();CTTableProperties tp = ctt.getTblPr();tp.setFirstRow(true);tp.setBandRow(true);tp.setTableStyleId("21E4AEA4-8DFA-4A89-87EB-49C32662AFE0");
0 0
- POI处理PPT的表格table,XSLFTable样式设置
- table表格简单样式设置
- 【html 表格样式】table 设置
- poi的样式设置
- 2、poi怎么设置表格样式
- CSS设置html table表格边框样式
- POI之PPT文本框生成及样式设置实例
- table的样式设置
- poi操作表格table
- poi操作ppt创建表格
- 四个好看的table表格样式
- CSS设置Table的样式
- bootstrap设置table的样式
- 表格Table宽度样式
- table表格css样式
- table 表格样式
- CSS如何设置html table表格边框样式
- CSS如何设置html table表格边框样式
- 了解WiFi入门
- android一键退出
- 在Eclipse上打包并使用Proguard工具混淆jar包
- Git5--撤销修改
- 自定义注解
- POI处理PPT的表格table,XSLFTable样式设置
- 深入研究z-index
- AbstractQueuedSynchronizer(四)——tryAcquireNanos/doAcquireNanos方法
- 【IOS学习】iOS——Block中 __block、__weak 、typeof、define等词的小解释
- HDU-1166-敌兵布阵(线段树 单点更新)
- javascript中Object使用详解
- Java编程操作XML文件(生成方法四:DOM4J)
- Git6--删除文件
- JNI开发流程