- 浏览: 147676 次
- 性别:
- 来自: 北京
最新评论
-
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 1177时间一如即往的快,转眼间又到年未了 ... -
Crack MxGraph 破解
2009-08-23 13:32 8184JGraph是免费的! MxGraph是收费的,官方D ... -
Nice Struts~鸡肋问题解决之道
2009-05-26 10:18 1693前面提出了关于SSH架构中struts的鸡肋问题,大家也给出了 ... -
SSH架构中的Struts似乎很鸡肋
2009-05-24 20:33 2256在基于SSH的架构中,基本的流程是这样的: 1、展现 ... -
struts的多模块配置,真滴很扯淡?
2009-05-24 00:38 984首先声明,struts1的多模块配置很好很强大 ... -
解析java web开发中的困扰(1)
2009-05-23 23:56 923诸如jsp等脚本性质的语法、基于xml的属性配置与属性注入在 ... -
Hibernate的事件和拦截器体系
2008-08-28 14:45 2109持久层框架底层的拦截器机制是对诸如Spring等业务管理 ... -
探索象棋(JAVA版) UCCI引擎
2008-07-28 17:51 1856参见图片,呵呵 -
论权限模型
2008-05-06 09:38 1136权限模型多种多样,包含各种教条和方法论,但在实践中真正 ... -
使用JEdit打造自己的IDE
2008-04-06 11:26 2327见附件的图片.... -
Lucene索引管理器(基于Luke修改而来)
2008-03-29 21:34 1871先看图来...... -
JBPM与SPRING事务整合之深度历险
2008-03-29 20:47 6705------------------此文很早就写了,不知何故在 ... -
实现MHT文件格式的解析和内容抽取
2008-03-29 01:56 10339由于我们的业务系统中有大量的MHT格式的资料,需要对其建立索引 ... -
超轻量的定时器
2007-12-26 20:41 1190项目中一个特殊要求,需要轻量的定时器程序,所以简单实现了一个: ... -
通过jsp标签封装的列表组件
2007-11-27 20:43 1680一套字表查询api,将字典表处理从业务代码(主要是sql关联) ... -
swing界面的屏幕取词
2007-11-27 20:25 2107针对let's swing blog上的方法进行了优化,完善了 ... -
基于Swing的JBPM设计器
2007-07-17 22:10 4376基于JBPM的流程设计器,屏蔽了JBPM的一些复杂功能,适合业 ...
相关推荐
在IT行业中,尤其是在项目管理领域,能够有效地处理和解析微软的Project文件是非常重要的技能。Java作为一种广泛应用的编程语言,提供了多种方法来实现这一目标。本篇文章将深入探讨如何使用Java来导入并读取微软的...
Microsoft Project是一款强大的项目管理软件,由微软公司开发,...通过本教程的学习,你将掌握Microsoft Project的各项核心功能,无论是初学者还是经验丰富的项目经理,都能从中受益,实现项目管理的专业化和精细化。
这些试题旨在帮助用户了解 Microsoft Project 的功能和应用,掌握项目管理的基本概念和技术。 知识点 1:任务相关性 在 Microsoft Project 中,任务相关性是指两个或多个任务之间的逻辑关系。任务相关性可以分为四...
MS Project 文件导入与操作相关知识点 ...了解 MS Project 文件格式、使用 C# 控制 MS Project、导入 MS Project 文件、任务信息抽取、任务信息处理、错误处理和 MS Project 文件导出等知识点对于开发者来说非常重要。
Microsoft Project 2002 是一款由微软公司开发的项目管理软件,它提供了强大的计划、组织、跟踪和控制项目资源的能力。这款软件广泛应用于各种规模的企业和组织,帮助项目经理有效地管理任务、时间、成本以及人力...
"MicrosoftProject基础教程PPT课件.pptx" 本资源是Microsoft Project基础教程PPT课件,...该资源对Microsoft Project的基础知识和操作进行了详细的介绍和解释,旨在帮助用户快速掌握Microsoft Project的使用和应用。
在IT行业中,项目管理软件是不可或缺的工具,Microsoft Project(MS Project)就是其中的一款著名软件,广泛用于规划、跟踪和管理各种项目。然而,不同系统和应用之间有时需要数据交换,这时就需要对MS Project文件...
根据提供的信息,我们可以详细解析与MSProject文件导入导出相关的技术知识点。首先,这段代码主要涉及以下几个方面: ### 一、MSProject文件的基本操作 在.NET框架中,可以通过`Microsoft.Office.Interop.MS...
为了提高团队协作效率,Project 2002支持与Microsoft SharePoint集成,实现任务分配、状态更新和文件共享等功能。团队成员可以直接在SharePoint上查看和更新任务,提高沟通和协作的效率。 七、学习资源 "Microsoft ...
project 2016是旗下的一款项目管理软件,作为office套餐中的一员,这款软件可以帮你简化项目、资源和项目组合管理。集成的规划工具有助于跟踪项目并保持井井有条。project2016拥有熟悉的自动日程安排工具,可以帮助...
**Microsoft Project 2003** 是一款专为项目管理和协作设计的应用程序,它可以帮助用户更好地组织和整合商务计划、项目以及资源。通过提供灵活的报表、丰富的图表展示以及强大的分析功能,Project 2003 成为了项目...
Microsoft Project 0021Microsoft Project 0021Microsoft Project 0021Microsoft Project 0021
【描述】: 本压缩包包含了一份详尽的微软Project2007中文教程,旨在帮助用户掌握这款强大的项目管理软件的基本操作和高级功能。 【标签】: Microsoft 【内容详解】 微软Project 2007是一款广泛使用的项目管理工具...
microsoft project 2010 教程 可以帮助使用者熟练掌握 项目管理软件
Microsoft Project通过提供时间线、甘特图、资源分配和预算跟踪等功能,帮助项目经理实现这些目标。 进入第2章——Microsoft Project管理项目的一般流程,本章将详细讲解如何使用Project 2003或2007来规划和管理...
这个文件里面详细的解释了Microsoft Project导出的xml文件的各种标签的含义,需要使用Microsoft Visual Studio打开。