需求:解析Word输出文档中的内容Excel文档。
Word内容包括3-5级项目编号、最后一级项目编号应表名,项目编号下文本对应表结构元数据。如图1所示。

图一
非叶子项目编号对应于表中的类别。根据文件的项目编号结构,最多有4类。具体编码按10类处理。
- 读取Word代码
String[] arrLevel = new String[10]; ///保存当前分析位置各级项目编号的文本
BigInteger level = BigInteger.ZERO; //当前level
level = document.getStyles().getStyle(paragraph.getStyle()).getCTStyle().getPPr().getOutlineLvl().getVal();
arrLevel[level.intValue()] = paragraphText.trim();
Table table = null;
Field field = null;
for (int i = 13/*跳过文档目录*/; i < paragraphs.size(); i ) {
XWPFParagraph paragraph = paragraphs.get(i);
String style = paragraph.getStyle();
if ("90"/*具体文档的值会有所不同,可以debug一下*/.equalsIgnoreCase(style)) {
//设置当前Table为叶子结点 leaf=true
if(table==null || !table.leaf){
table = new Table();
table.leaf = true;
//设置Table的level
}
//分析正文,使用Field对象接收,add到Table中
field = new Field();
...
...
table.addField(field);
}else{
// 用Table对象接收
// 设置Table的level,从全局arrLevel取
table = new Table();
table.leaf = false;
//设置Table的level
}
}
// 定义内部存储Table数据
@Setter
@Getter
public class Table {
boolean leaf = false;
BigInteger level;
String[] levels;
List<Field> fields;
public void addField(Field value){...}
}
// 定义内部存储Field数据
@Getter
@Setter
public class Field {
private String content;
private String metaName;
private String metaValue;
}
- 输出到Excel
//表头,和word读取的metaName一致
String[] title = new String[]{""};
//Excel表头,和metaName可以不一致
String[] showTitle = new String[]{""};
HSSFRow row = sheet.createRow(0);
for (int i = 0; i < title.length; i ) {
HSSFCell cell = row.createCell(i);
cell.setCellValue(showTitle[i]);
}
//遍历Tables,过滤leaf=true,创建HSSFRow
///每次遍历Table的Field,创建HSSFCell
**本论坛部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本论坛仅供提供学习交流和参考,禁止用户用于商业行为,并请于下载后24小时内删除,若喜欢该作品请联系原作者购买正版。如果您发现论坛上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。
158自学网 » poi生成excel文件,poi生成excel文件多表头
158自学网 » poi生成excel文件,poi生成excel文件多表头
关于售后:
(1)、因部分资料含有敏感关键词,百度网盘无法分享链接,请联系客服进行发送;
(2)、所有资料在您未收到之前,都可以联系微信/QQ:406499404,无条件退款
(3)仅支持原渠道退回,微信支付,支付宝退回至您当初选择的付款方式
(4)不用担心不给资料,如果没有及时回复也不用担心,看到了都会发给您的,请放心!
(5)因部份资源来源互联网,本站不担保其完整性,请知悉!
(1)、因部分资料含有敏感关键词,百度网盘无法分享链接,请联系客服进行发送;
(2)、所有资料在您未收到之前,都可以联系微信/QQ:406499404,无条件退款
(3)仅支持原渠道退回,微信支付,支付宝退回至您当初选择的付款方式
(4)不用担心不给资料,如果没有及时回复也不用担心,看到了都会发给您的,请放心!
(5)因部份资源来源互联网,本站不担保其完整性,请知悉!