写这个的思路是:将.mpp文件中的内容读取出来,我只需要他的一级和二级目录,一级目录、二级目录各一张表,二级目录表存一级目录的主键id,这点和网上其他的方法不太一样,大多数都是一张表就完事的,因为表不是我设计的,所以只能这么去做,下面开始码代码:

首先是pom.xml文件,这里用到了mpxj 包

这里要注意的是,比4.5.0低的版本,如果你读取的是2010以上版本的.mpp文件会报错

net.sourceforge

mpxj

4.5.0-rc1

然后是后台代码

public FileUploadModel9 getFileUploadModel() {//这个方法框架的方法,主要看下面这么获取文件

if (fileUploadModel == null) {

AttachHandler9 handler = new AttachHandler9(){

private static final long serialVersionUID = 1L;

@Override

public boolean beforeSaveAttachToDB(Object attach) {

FrameAttachStorage attach2 = (FrameAttachStorage)attach;

byte[] content = FileManagerUtil.getContentFromInputStream(attach2.getContent());

//字节转InputStream

InputStream sbs = new ByteArrayInputStream(content);

4000

MPPReader reader = new MPPReader();

ProjectFile projectFile;

try {

projectFile = reader.read(sbs);

//读本地的.mpp文件,用于测试

//projectFile = reader.read("C:/Users/pls/Desktop/test.mpp");

List list = projectFile.getAllTasks();

Task t = (Task) list.get(0);

for(int i=1 ; i

Task task = list.get(i);

if(task.getParentTask() != null){

if(task.getParentTask().getUniqueID() == t.getUniqueID()){

String rowguid = UUID.randomUUID().toString();

Projectclass pc = new Projectclass();

pc.setRowguid(rowguid);

pc.setGcjssj(task.getFinish());

pc.setGcmc(task.getName());

pc.setGckssj(task.getStart());

pc.setProjectguid(projectguid);//TODO 选择项目id

service.insert(pc);//保存一级目录

for (int j = 0; j < task.getChildTasks().size(); j++) {

List tasklist = task.getChildTasks();

Task task2 = tasklist.get(j);

if(task2.getParentTask().getUniqueID() == task.getUniqueID()){

Projectschedule psc = new Projectschedule();

psc.setRowguid(UUID.randomUUID().toString());

psc.setOperatedate(new Date());

psc.setJhkssj(task2.getStart());

psc.setJhjssj(task2.getFinish());

psc.setProjectClassguid(rowguid);

psc.setJdmc(task2.getName());

psc.setMilestone("0");

service.insert(psc);//保存二级目录

}

}

}

}

}

}

catch (MPXJException e) {

e.printStackTrace();

}

return true;

}

@Override

public void afterSaveAttachToDB(Object arg0) {

}

};

fileUploadModel = new FileUploadModel9(new DefaultFileUploadHandlerImpl9(null, null, null,

handler, userSession.getUserGuid(), userSession.getDisplayName()));

}

return fileUploadModel;

}

这样,就完成了读取,入库的操作,只要在页面上刷新下,就可以读出数据了

java 读取project_java 导入读取.mpp project文件(甘特图)相关推荐

  1. java生成XML格式文件,导入MS Project生成甘特图

    公司需求需要生成如如下图所示的project甘特图,开发语言是java,网上找了很久也没有找到可以利用java生成这种甘特图的方案.退而求其次,改变需求生成可以导入project的xml文件. 首先用 ...

  2. Java使用mpxj导入.mpp格式的Project文件(甘特图)

    最近换工作了,主要的项目都是企业内部为支撑的管理平台,刚入入职没多久,遇到了一个需求,就是导入微软的Project文件,踩过不少坑,所以记录一下,后续还有从数据库导出Project引导文件,也就是xm ...

  3. java:重新导入依赖maven

    java:重新导入依赖maven pom文件修改没有触发自动重写载入,需要手动更新下pom文件(避免代码飘红): 1 .手动去依赖jar包的仓库地址,将该依赖删除 一般如C盘下用户目录中的.m2文件夹 ...

  4. Java实现pdf转tex_使用Free Spire.PDF在Java程序中创建和转换PDF文件

    在这篇文章中,我将举例说明如何创建一个包含标题,段落,图像,编号列表和表格的简单的PDF文件,以及如何使用Free Spire.PDF将PDF转换为其他文件格式. 概述 Free Spire.PDF ...

  5. 在Java程序中创建和转换PDF文件

    点击上方关注 "终端研发部" 设为"星标",和你一起掌握更多数据库知识 作者: Codingqi123 来源: jianshu.com/p/db15232987 ...

  6. 甘特图(Gantt Chart)画法1.Excel;2.Edraw Project

    建议使用Edraw Project画甘特图,缺点是收费软件. 一.Excel画甘特图 1.在excel中建数据: 任务 开始时间 结束时间 耗时(h) 需求评审 2019/11/1 2019/11/5 ...

  7. Project甘特图_批量修改条形图样式

    MS Project制作甘特图时,发现右侧界面,甘特图的进度条样式无法批量修改,只能选择到单个进度条,右键点击-修改条形图格式.花了一小时,才把甘特图相关操作弄清. 无法批量修改条形图样式,发现有人回 ...

  8. JAVA实现微软project文件导入

    JAVA实现微软project文件导入 前言 一.pom.xml引用jar包 二.实现代码 1.实体类(对应自己的数据库表字段) 2.业务服务类(读取project文件并存表) 2.1 上传方法(ad ...

  9. java读取空格_java 读取文件路径空格和中文的处理

    应用部署时,发生文件读取错误,发现是部署路径中含有空格的文件夹名,然后把应用服务器位置迁移了. 从网上找到如下方案: 1, TestURL().class.getResource("&quo ...

最新文章

  1. 通过System.Management获取操作系统信息
  2. 又一年度热销爆款,OPPO R11上市一个月勇夺线下销量第一
  3. mxnet cannot import name 'nd'
  4. 自学python之路(day2)
  5. 这哥们到底是应聘的还是来收购公司的?| 今日趣图
  6. 权限组件(6):权限分配的角色管理
  7. mysql半连接_MySQL优化案例:半连接(semi join)优化方式导致的查询性能低下(转载)...
  8. js 快速集成开发:easyui 时间控件格式化
  9. 发电机机房设计规范_民用建筑变电所等机房设置的几点建议
  10. caffe-SSD源码解析——生成数据列表及数据集
  11. css 宋体_6.CSS字体属性
  12. python—PIL使用
  13. python转exe遇到的坑及解决方案
  14. 影响计算机启动硬件,电脑开机速度跟哪些硬件有关。
  15. JDK安装 Java环境配置
  16. 微信支付商户平台,企业付款,企业向个人付款接口总结
  17. ET5.0 简单了解
  18. html炫酷在线,10款基于HTML5/CSS3的炫酷动画
  19. linux profile文件,全面解析Linux profile文件
  20. win10 系统亮度无法调节

热门文章

  1. 计算机专业论文系统设计与实现,计算机专业毕业论文-个人博客系统的设计与实现.doc...
  2. TeraTerm下载
  3. 国仁猫哥:抖音Feed流与Dou+有什么投放区别;抖音直播如何最大化投放Feed流?
  4. Dou学网-抖音带货Dou+投放技巧
  5. mplayer播放器,没有声音.
  6. 老毛桃PE修改方法(屏蔽更改主页,屏蔽加装的绿色浏览器)
  7. IT公司全国排行榜 (2006-6-21更新)
  8. Zencart的首页php 301,zencart网店系统301重定向
  9. 洛谷P1365 WJMZBMR打osu 题解
  10. truncate table oec_meoney 1