- 浏览: 150379 次
- 性别:
- 来自: 北京
-
最新评论
-
cherishlive:
charlth.li@hotmail.com 同求 谢谢
通过jsp标签封装的列表组件 -
xiaoll880214:
您好!利用你贴的decodeQuotedPrintable方法 ...
实现MHT文件格式的解析和内容抽取 -
zhenrs:
可以把ApplicationContext贴出来不
JBPM与SPRING事务整合之深度历险 -
cllstudy:
您好,急需lucene对mht解析的parse,能发源代码给我 ...
实现MHT文件格式的解析和内容抽取 -
terryisme:
terryisme@126.com多谢.
通过jsp标签封装的列表组件
- 文本内容提取: 使用net.sf.mpxj 的工具提取文本内容;
package com.koders.se.parser; import com.koders.se.search.WikiDOC; import net.sf.mpxj.ProjectFile; import net.sf.mpxj.Resource; import net.sf.mpxj.ResourceAssignment; import net.sf.mpxj.Task; import net.sf.mpxj.mpp.MPPReader; import net.sf.mpxj.mpx.MPXReader; import net.sf.mpxj.mspdi.MSPDIReader; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; /** * Microsoft project 解析器 */ public class MppDocHandler implements DocumentHandler { public Document getDocument(InputStream is) throws DocumentHandlerException { ProjectFile mpx = readProject(is); String bodyText = dumpText(mpx); if (bodyText != null) { Document doc = new Document(); doc.add(new Field(WikiDOC.DOC_TITLE, dumpTitle(mpx), Field.Store.YES, Field.Index.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS)); doc.add(new Field(WikiDOC.DOC_CONTENT, bodyText, Field.Store.COMPRESS, Field.Index.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS)); return doc; } return null; } public static ProjectFile readProject(InputStream is) throws DocumentHandlerException { is = new BufferedInputStream(is); is.mark(0);//下面需要重复使用输入流,所以重新包装并设置重置标记 ProjectFile mpx = null; try { mpx = new MPXReader().read(is); } catch (Exception ex) { try { is.reset();//重置 } catch (IOException e) { e.printStackTrace(); } } if (mpx == null) { try { mpx = new MPPReader().read(is); } catch (Exception ex) { try { is.reset(); } catch (IOException e) { e.printStackTrace(); } } } if (mpx == null) { try { mpx = new MSPDIReader().read(is); } catch (Exception ex) { } } if (mpx == null) { throw new DocumentHandlerException("Failed to read file"); } return mpx; } private final static SimpleDateFormat f = new SimpleDateFormat("yyyy年M月d日"); private final static String IndentString = " "; private List idList = new ArrayList(); private List nameList = new ArrayList(); private List resList = new ArrayList(); private List startList = new ArrayList(); private List endList = new ArrayList(); public String dumpTitle(ProjectFile file) { String title = ""; List childTasks = file.getChildTasks(); for (int i = 0; i < childTasks.size(); i++) { Task task = (Task) childTasks.get(i); title += task.getName() + " "; } return title; } public String dumpText(ProjectFile file) { idList.add("【编号】"); nameList.add("【任务名】"); resList.add("【资源】"); startList.add("【开始时间】"); endList.add("【结束时间】"); List childTasks = file.getChildTasks(); for (int i = 0; i < childTasks.size(); i++) { Task task = (Task) childTasks.get(i); idList.add(" " + task.getID().toString()); nameList.add(task.getName()); resList.add(listTaskRes(task)); startList.add(f.format(task.getStart())); endList.add(f.format(task.getFinish())); listHierarchy(task, IndentString); } idList = fixLength(idList); nameList = fixLength(nameList); resList = fixLength(resList); startList = fixLength(startList); endList = fixLength(endList); StringBuffer buf = new StringBuffer(); for (int i = 0, size = nameList.size(); i < size; i++) { buf.append(idList.get(i)) .append(nameList.get(i)) .append(IndentString) .append(resList.get(i)) .append(IndentString) .append(startList.get(i)) .append(IndentString) .append(endList.get(i)) .append("\n"); } idList.clear(); nameList.clear(); startList.clear(); endList.clear(); resList.clear(); return buf.toString(); } private List fixLength(List data) { int max = 0; for (int ii = 0; ii < data.size(); ii++) { String str = (String) data.get(ii); int tmp = str.getBytes().length; max = (max < tmp ? tmp : max); } List ret = new ArrayList(); for (int ii = 0; ii < data.size(); ii++) { String str = (String) data.get(ii); int tmp = max - str.getBytes().length; for (int i = 0; i < tmp; i++) { str = str.concat(" "); } ret.add(str); } return ret; } private void listHierarchy(Task task, String indent) { List childTasks = task.getChildTasks(); for (int i = 0; i < childTasks.size(); i++) { Task child = (Task) childTasks.get(i); idList.add(" " + child.getID().toString()); nameList.add(indent + child.getName()); resList.add(listTaskRes(child)); startList.add(f.format(child.getStart())); endList.add(f.format(child.getFinish())); listHierarchy(child, indent + IndentString); } } private String listTaskRes(Task task) { StringBuffer buf = new StringBuffer(); List assignments = task.getResourceAssignments(); for (int i = 0; i < assignments.size(); i++) { ResourceAssignment assignment = (ResourceAssignment) assignments.get(i); Resource resource = assignment.getResource(); if (resource != null) { buf.append(resource.getName()).append(" "); } } return buf.toString(); } public static void main(String[] args) throws Exception { MppDocHandler mppDocHandler = new MppDocHandler(); ProjectFile projectFile = MppDocHandler.readProject(new FileInputStream("项目实施计划.mpp")); String s = mppDocHandler.dumpText(projectFile); System.out.println(s); } }
- 输出格式:
【编号】【任务名】 【资源】 【开始时间】 【结束时间】 0 **扩建项目实施计划_0903 2008年4月1日 2008年7月1日 1 项目启动 2008年4月1日 2008年4月8日 2 组建项目组、制订项目计划 2008年4月1日 2008年4月8日 3 项目启动会 2008年4月1日 2008年4月1日 60 综合业务管理子系统需求分析 张四季 黄纬 笋素爱 李海涛 李贤宇 2008年4月1日 2008年5月4日 61 业务管理 张四季 黄纬 笋素爱 李海涛 2008年4月1日 2008年4月15日 62 提交调研提纲文档 张四季 黄纬 笋素爱 2008年4月1日 2008年4月1日 63 需求内容调研 张四季 黄纬 笋素爱 2008年4月2日 2008年4月3日 64 业务种类设置 张四季 黄纬 笋素爱 2008年4月2日 2008年4月3日 65 增值业务支撑 张四季 黄纬 笋素爱 2008年4月2日 2008年4月3日 66 监控策略设置 张四季 黄纬 笋素爱 2008年4月2日 2008年4月3日 67 封堵策略设置 张四季 黄纬 笋素爱 2008年4月2日 2008年4月3日 68 广告策略设置 张四季 黄纬 笋素爱 2008年4月2日 2008年4月3日 69 需求分析 张四季 黄纬 笋素爱 2008年4月7日 2008年4月7日 70 整理调研文档 2008年4月7日 2008年4月7日 71 编写需求说明书-业务管理部分 2008年4月7日 2008年4月7日 72 页面原型设计 张四季 黄纬 笋素爱 2008年4月8日 2008年4月14日 73 业务管理需求与页面原型确认 张四季 黄纬 笋素爱 2008年4月15日 2008年4月15日 74 资料管理 笋素爱 2008年4月16日 2008年4月23日 75 提交调研提纲文档 2008年4月16日 2008年4月16日 76 需求内容调研 2008年4月17日 2008年4月17日 77 客户资料管理 2008年4月17日 2008年4月17日 78 黑名单管理 2008年4月17日 2008年4月17日 79 白名单管理 2008年4月17日 2008年4月17日 80 ADSL帐号管理 2008年4月17日 2008年4月17日 81 IP地址管理 2008年4月17日 2008年4月17日 82 需求分析 2008年4月18日 2008年4月18日 83 整理调研文档 2008年4月18日 2008年4月18日 84 编写需求说明书-资料管理部分 2008年4月18日 2008年4月18日 85 页面原型设计 2008年4月21日 2008年4月22日 86 资料管理需求与页面原型确认 2008年4月23日 2008年4月23日 87 数据管理 张四季 黄纬 2008年4月16日 2008年4月23日 88 提交调研提纲文档 2008年4月16日 2008年4月16日 89 需求内容调研 2008年4月17日 2008年4月17日 90 数据采集 2008年4月17日 2008年4月17日 91 数据转换 2008年4月17日 2008年4月17日 92 数据导出 2008年4月17日 2008年4月17日 93 需求分析 2008年4月18日 2008年4月18日 94 整理调研文档 2008年4月18日 2008年4月18日 95 编写需求说明书数据管理部分 2008年4月18日 2008年4月18日 96 页面原型设计 2008年4月21日 2008年4月22日 97 数据管理需求与页面原型确认 2008年4月23日 2008年4月23日 98 综合查询 笋素爱 2008年4月24日 2008年5月4日 99 提交调研提纲文档 2008年4月24日 2008年4月24日 100 需求内容调研 2008年4月25日 2008年4月25日 101 客户基本信息查询 2008年4月25日 2008年4月25日 102 ADSL帐号查询 2008年4月25日 2008年4月25日 103 专线IP查询 2008年4月25日 2008年4月25日 104 业务策略查询 2008年4月25日 2008年4月25日 105 流量数据查询 2008年4月25日 2008年4月25日 106 需求分析 2008年4月28日 2008年4月28日 107 整理调研文档 2008年4月28日 2008年4月28日 108 编写需求说明书-综合查询部分 2008年4月28日 2008年4月28日 109 页面原型设计 2008年4月29日 2008年4月30日 110 综合查询需求与页面原型确认 2008年5月4日 2008年5月4日 208 提交第一版需求说明书 全体需求人员 2008年5月5日 2008年5月5日 |
评论
3 楼
chkang
2008-06-23
我需要把数据库中的数据导出生成mpp文件,用mpxj,请问怎么实现啊
邮箱chenhui_19850710@sina.com.cn
邮箱chenhui_19850710@sina.com.cn
2 楼
kelefa
2008-06-04
<div class='quote_title'>这样就可以了: </div>
<div class='quote_title'>MPXWriter writer = new MPXWriter(); </div>
<div class='quote_title'>writer.setLocale(Locale.CHINESE);</div>
<div class='quote_title'>MPXWriter writer = new MPXWriter(); </div>
<div class='quote_title'>writer.setLocale(Locale.CHINESE);</div>
1 楼
kelefa
2008-06-04
我需要用mpxj生成mpx文件, 但是中文是???之类 的乱码, 你知道如何解决吗?
我加上这个也不行:
file.getFileCreationRecord().setCodePage(CodePage.ZH);
我加上这个也不行:
file.getFileCreationRecord().setCodePage(CodePage.ZH);
发表评论
-
回望之一:是时侯了
2009-12-13 23:18 1247时间一如即往的快,转眼间又到年未了 ... -
Crack MxGraph 破解
2009-08-23 13:32 8257JGraph是免费的! MxGraph是收费的,官方D ... -
Nice Struts~鸡肋问题解决之道
2009-05-26 10:18 1722前面提出了关于SSH架构中struts的鸡肋问题,大家也给出了 ... -
SSH架构中的Struts似乎很鸡肋
2009-05-24 20:33 2290在基于SSH的架构中,基本的流程是这样的: 1、展现 ... -
struts的多模块配置,真滴很扯淡?
2009-05-24 00:38 997首先声明,struts1的多模块配置很好很强大 ... -
解析java web开发中的困扰(1)
2009-05-23 23:56 941诸如jsp等脚本性质的语法、基于xml的属性配置与属性注入在 ... -
Hibernate的事件和拦截器体系
2008-08-28 14:45 2165持久层框架底层的拦截器机制是对诸如Spring等业务管理 ... -
探索象棋(JAVA版) UCCI引擎
2008-07-28 17:51 1892参见图片,呵呵 -
论权限模型
2008-05-06 09:38 1167权限模型多种多样,包含各种教条和方法论,但在实践中真正 ... -
使用JEdit打造自己的IDE
2008-04-06 11:26 2360见附件的图片.... -
Lucene索引管理器(基于Luke修改而来)
2008-03-29 21:34 1895先看图来...... -
JBPM与SPRING事务整合之深度历险
2008-03-29 20:47 6781------------------此文很早就写了,不知何故在 ... -
实现MHT文件格式的解析和内容抽取
2008-03-29 01:56 10385由于我们的业务系统中有大量的MHT格式的资料,需要对其建立索引 ... -
超轻量的定时器
2007-12-26 20:41 1217项目中一个特殊要求,需要轻量的定时器程序,所以简单实现了一个: ... -
通过jsp标签封装的列表组件
2007-11-27 20:43 1746一套字表查询api,将字典表处理从业务代码(主要是sql关联) ... -
swing界面的屏幕取词
2007-11-27 20:25 2129针对let's swing blog上的方法进行了优化,完善了 ... -
基于Swing的JBPM设计器
2007-07-17 22:10 4431基于JBPM的流程设计器,屏蔽了JBPM的一些复杂功能,适合业 ...
相关推荐
【C#在线考试系统VS2008+SQL2005】是一个基于Web的考试管理系统,使用了Microsoft的Visual Studio 2008(VS2008)开发环境和C#编程语言,结合ASP.NET 3.5框架进行构建。系统后端数据库采用的是SQL Server 2005,提供...
根据提供的文件内容,虽然信息显得混乱且存在OCR技术导致的识别错误,但我们可以尝试从中抽取和解读一些关键的知识点,尤其是关于项目时间管理的作业。以下为详细知识点的解析: 1. **项目时间管理概述**:项目时间...
使用项目管理软件如Microsoft Project可以有效地管理整个工程项目的进度、成本和资源分配等问题,确保项目按计划顺利进行。 综上所述,《水利水电工程初设计报告编程》不仅涉及到了水利工程领域的专业知识,还涵盖...
除了以上主要内容外,文档还附录了一些其他相关信息,比如如何将 ODI 与 Microsoft SQL Server 2005 集成,以及当前版本存在的问题列表等。 总结而言,Derek.Jaa 的这份 ODI 学习笔记全面地覆盖了从概念理解到实际...
为了实现高效的多维数据集,还需要考虑数据的分区和聚合策略,以减少查询时的计算量和提高响应速度。同时,安全性设置必须妥善管理,防止未授权访问敏感数据。 总结起来,"多维数据集项目"可能涵盖了数据仓库设计、...