`
terry0501
  • 浏览: 313751 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java导入Excel

 
阅读更多
写道
public List<String> importFlowprojectData(String filePath) throws BiffException, IOException{
FlowProjectMgr mgr = (FlowProjectMgr) SpringBeanFactory.getBean("flowprojectMgr_new");
FlowProjectDao dao = (FlowProjectDao) SpringBeanFactory.getBean("flowprojectDao_new");
List<String> errList=new ArrayList<String>();
InputStream is = null;
jxl.Workbook rwb =null;
Integer flowProjectId=null;
List list=null;
try {
//1 从Excel文件读取数据表
//Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。
//读取Excel数据表的第一步是创建Workbook(术语:工作薄),下面的代码片段举例说明了应该如何操作:
//(完整代码见ExcelReading.java)
//构建Workbook对象, 只读Workbook对象
//直接从本地文件创建Workbook
//从输入流创建Workbook
//一旦创建了Workbook,我们就可以通过它来访问Excel Sheet(术语:工作表)。参考下面的代码片段:
//获取第一张Sheet表
is = new FileInputStream(filePath);
rwb = Workbook.getWorkbook(is);
Sheet rs = (Sheet) rwb.getSheet(0);

//我们既可能通过Sheet的名称来访问它,也可以通过下标来访问它。如果通过下标来访问的话,
//要注意的一点是下标从0开始,就像数组一样。
//一旦得到了Sheet,我们就可以通过它来访问Excel Cell(术语:单元格)。参考下面的代码片段:
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
FlowProjectBaseinfo info=null;
int rowCount=rs.getRows();
for(int i=3;i<rowCount;i++){
try{
Cell c0 = ((jxl.Sheet) rs).getCell(0, i);
String flowProjectIndex = c0.getContents();
Cell c1 = ((jxl.Sheet) rs).getCell(1, i);
String flowProjectYear = c1.getContents();
if(flowProjectIndex!=null&&flowProjectIndex.length()>0&&flowProjectYear!=null&&flowProjectYear.length()>0){

list= mgr.findByHql("from FlowProjectBaseinfo f where f.flowProjectYear='"+flowProjectYear+"' and f.flowProjectIndex='"+flowProjectIndex+"'");
if(list!=null&&list.size()>0){
info=(FlowProjectBaseinfo) list.get(0);
info.setFlowProjectEffectflag(1);
}else{
info=new FlowProjectBaseinfo();
info.setFlowProjectIndex(flowProjectIndex);//项目索引
info.setFlowProjectYear(flowProjectYear);//项目年度
info.setFlowProjectEffectflag(1);
info.setFlowProjectCreatetime(new Timestamp(new Date().getTime()));
SysUserInfo sysUserInfo=(SysUserInfo) DoradoContext.getContext().getAttribute("sysUserInfo");
if(sysUserInfo!=null){
info.setFlowProjectCreater(sysUserInfo.getSysUserId());
}
}
Cell c2 = ((jxl.Sheet) rs).getCell(2, i);
String flowProjectName = c2.getContents();
info.setFlowProjectName(flowProjectName);

Cell c3 = ((jxl.Sheet) rs).getCell(3, i);
String deptIds = c3.getContents();//主办业务部门
if(deptIds!=null&&deptIds.length()>0){
String [] s= deptIds.split(",");
for(int j=0;j<s.length;j++){
List o=dao.getDeptBaseInfo(" and sysDeptUpid = 2194 and sysDeptActiveflag = 1 and sysDepttypeId = 20 and sysDeptdegreeId = 4 and sysDeptId <> 24 and sysDeptOther3 = 1 and sysDeptName='"+s[j]+"'");
if(o!=null&&o.size()>0){
SysDeptInfo dept=(SysDeptInfo)o.get(0);
info.setSysOrgId(dept.getSysDeptId());
}
}
}
Cell c4 = ((jxl.Sheet) rs).getCell(4, i);
String flowProjectManagerName = c4.getContents();
info.setFlowProjectManagerName(flowProjectManagerName);
Cell c7 = ((jxl.Sheet) rs).getCell(7, i);
String flowProjectAcceptName = c7.getContents();//委托开发中心开发
if(flowProjectAcceptName!=null&&flowProjectAcceptName.length()>0){
Object o= mgr.getIdByName("FlowProjectAcceptMap", "flowProjectAcceptdesc", flowProjectAcceptName);
if(o!=null){
FlowProjectAcceptMap a=(FlowProjectAcceptMap)o;
info.setFlowProjectAcceptid(a.getFlowProjectAcceptid());
}
}
Cell c8 = ((jxl.Sheet) rs).getCell(8, i);
String projectStartData = c8.getContents();//项目启动时间
if(projectStartData!=null&&projectStartData.length()>0){
Date start =sdf.parse(projectStartData);
info.setFlowProjectStartdate(new Timestamp(start.getTime()));
}

Cell c9 = ((jxl.Sheet) rs).getCell(9, i);//需求确定时间
String needTime = c9.getContents();
if(needTime!=null&&needTime.length()>0){
Date flowProjectRequirementdate=sdf.parse(needTime);
info.setFlowProjectRequirementdate(new Timestamp(flowProjectRequirementdate.getTime()));
}

Cell c10 = ((jxl.Sheet) rs).getCell(10, i);//预计投产时间
String useTime = c10.getContents();
if(useTime!=null&&useTime.length()>0){
Date userDate=sdf.parse(useTime);
info.setFlowProjectUsedate(new Timestamp(userDate.getTime()));
}
Cell c11 = ((jxl.Sheet) rs).getCell(11, i);
String range = c11.getContents();
if(range!=null&&range.length()>0){//适用范围
Object rangeMap= mgr.getIdByName("FlowProjectRangeMap","rangeName" , range);
if(rangeMap!=null){
FlowProjectRangeMap r=(FlowProjectRangeMap)rangeMap;
info.setFlowProjectRange(r.getRangId().toString());
}

}

Cell c112 = ((jxl.Sheet) rs).getCell(12, i);
String categoryName = c112.getContents();//项目类别
if(categoryName!=null&&categoryName.length()>0){
Object c=mgr.getIdByName("FlowProjectCategoryMap", "categoryName", categoryName);
if(c!=null){
FlowProjectCategoryMap f=(FlowProjectCategoryMap)c;
info.setFlowProjectCategoryId(f.getCategoryId());
}
}
Cell c13 = ((jxl.Sheet) rs).getCell(13, i);
String sequence = c13.getContents();
if(sequence!=null&&sequence.length()>0){
info.setFlowProjectSequence(Integer.parseInt(sequence));//项目优先级
}
Cell c14 = ((jxl.Sheet) rs).getCell(14, i);
String flowProjectDetail = c14.getContents();
info.setFlowProjectDetail(flowProjectDetail);//项目描述

Cell c15 = ((jxl.Sheet) rs).getCell(15, i);
String flowBenefitMemo = c15.getContents();
info.setFlowBenefitMemo(flowBenefitMemo); //经济效益

Cell c16 = ((jxl.Sheet) rs).getCell(16, i);//社会效益
String flowBenefitSociety = c16.getContents();
info.setFlowBenefitSociety(flowBenefitSociety);

Cell c17 = ((jxl.Sheet) rs).getCell(17, i);//后评估方法描述
String flowProjectAppraise = c17.getContents();
info.setFlowProjectAppraise(flowProjectAppraise);
SysUserInfo sysUserInfo= (SysUserInfo) DoradoContext.getContext().getAttribute("sysUserInfo");
//保存相关表中得数据
if(sysUserInfo!=null){
info.setFlowProjectCreater(sysUserInfo.getSysUserId());
}
info.setFlowStateId(Constant.I_PROJECT_STATE_TEMPORARY);//设置项目状态为暂存
flowProjectId= info.getFlowProjectId();
if(flowProjectId==null||flowProjectId==0){
Object o=dao.save(info);
flowProjectId=Integer.valueOf(o.toString());
}else{
dao.update(info);
}
Cell c5 = ((jxl.Sheet) rs).getCell(5, i);
String assIds = c5.getContents();//协办部门
if(assIds!=null&&assIds.length()>0){
String [] s= assIds.split(",");
for(int j=0;j<s.length;j++){
List o=dao.getDeptBaseInfo(" and sysDeptUpid = 2194 and sysDeptActiveflag = 1 and sysDepttypeId = 20 and sysDeptdegreeId = 4 and sysDeptId <> 24 and sysDeptOther3 = 1 and sysDeptName='"+s[j]+"'");
if(o!=null&&o.size()>0){
SysDeptInfo dept=(SysDeptInfo)o.get(0);
FlowProjectBenefitinfo ab=new FlowProjectBenefitinfo();
List lists= dao.findByHql("from FlowProjectBenefitinfo f where f.sysOrgId='"+dept.getSysDeptId()+"' and f.flowProjectId='"+flowProjectId+"'");
if(lists!=null&&lists.size()>0){
ab=(FlowProjectBenefitinfo) lists.get(0);
ab.setFlowProjectEffectflag(1);
dao.update(ab);
}else{
ab.setFlowProjectId(flowProjectId);
ab.setSysOrgId(dept.getSysDeptId());
ab.setFlowProjectEffectflag(1);
dao.save(ab);
}
}
}
}
Cell c6 = ((jxl.Sheet) rs).getCell(6, i);
String benefitIds = c6.getContents();//受益部门
if(benefitIds!=null&&benefitIds.length()>0){
String [] s= benefitIds.split(",");
for(int j=0;j<s.length;j++){
String name= s[j];
List o=dao.getDeptBaseInfo(" and sysDeptUpid = 2194 and sysDeptActiveflag = 1 and sysDepttypeId = 20 and sysDeptdegreeId = 4 and sysDeptId <> 24 and sysDeptOther3 = 1 and sysDeptName='"+name+"'");
if(o!=null&&o.size()>0){
SysDeptInfo dept=(SysDeptInfo)o.get(0);
FlowProjectAssistinfo fa=new FlowProjectAssistinfo();
fa.setFlowProjectId(flowProjectId);
fa.setFlowProjectEffectflag(1);
fa.setSysOrgId(dept.getSysDeptId());
List lists= dao.findByHql("from FlowProjectAssistinfo f where f.sysOrgId='"+dept.getSysDeptId()+"' and f.flowProjectId='"+flowProjectId+"'");
if(lists!=null&&lists.size()>0){
FlowProjectAssistinfo temp=fa;
fa=(FlowProjectAssistinfo) lists.get(0);
fa.setFlowProjectEffectflag(1);
fa.setFlowProjectId(temp.getFlowProjectId());
fa.setSysOrgId(temp.getSysOrgId());
dao.update(fa);
}else{
Integer sysOrgId= fa.getSysOrgId();//主办部门不能为空
if(sysOrgId!=null&&sysOrgId!=0&&sysOrgId!=-1){
dao.save(fa);
}else{
errList.add("第"+i+"行数据出错了");
}

}
}
}
}
}else{
errList.add("第"+i+"行数据出错了");
}
}catch (Exception e) {
errList.add("第"+i+"行数据出错了");
e.printStackTrace();
// TODO: handle exception
}
}
}catch (BiffException e) {
errList.add("导入出错");
e.printStackTrace();
} catch (IOException e) {
errList.add("导入出错");
e.printStackTrace();
}finally{
rwb.close();
is.close();
}
return errList;
}

 

分享到:
评论

相关推荐

    java 导入Excel 文件,支持xls、xlsx、csv格式

    综上所述,Java导入Excel文件涉及的关键技术包括Apache POI库的使用,对HSSF和XSSF的理解,以及对CSV文件处理的技巧。通过熟练掌握这些知识,你可以编写出高效且健壮的文件导入程序,满足各种需求。

    java导入excel到数据库

    以上就是关于“Java导入Excel到数据库”的详细知识点,涵盖了文件路径配置、合并单元格处理、数据库连接、Excel操作和数据导入等多个方面。这个过程需要对Java、数据库操作以及Excel处理有深入理解,才能有效地完成...

    java导入excel(直接可执行)

    测试环境:java 1.8 + poi 3.17+tomcat jar列表: commons-codec-1.10.jar commons-collections4-4.1.jar commons-fileupload-1.3.1.jar lib/commons-io-2.5.jar commons-lang-2.3.jar poi-3.17.jar poi-ooxml-3.17....

    java导入Excel的数据的同时导入Excel里面的图片-测试demo.zip

    在Java编程中,处理Excel文件是一项常见的任务,特别是在数据导入和导出的场景下。...这个"java导入Excel的同时导入图片-测试demo"应该包含了一个完整的示例,演示了上述步骤,你可以根据这个示例代码进行学习和实践。

    java导入excel

    综上所述,完成“Java导入Excel到SQL Server 2008”的任务涉及到多个Java和数据库技术的结合使用,包括文件I/O、数据处理、数据库连接、事务控制以及用户交互等。在实际开发中,还需要考虑错误处理、日志记录、代码...

    Java导入excel文件的jar包

    在本例中,我们需要关注的焦点是“Java导入excel文件的jar包”,这涉及到Java与Excel交互的核心库——Apache POI。 Apache POI是一个流行的开源项目,它允许Java开发者创建、修改和显示Microsoft Office格式的文件...

    java导入Excel需要的jar包

    "java导入Excel需要的jar包"这个话题,就是关于在Java项目中使用特定的jar包来处理Excel文件。下面将详细介绍相关的知识点。 1. **Apache POI**: Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的...

    Java 使用poi导入excel 并使用xml做数据验证

    在Java开发中,处理Excel数据是一项常见的任务,尤其是在数据导入导出、数据分析或者报表生成等场景。Apache POI是一个流行的库,它允许开发者使用Java来读取、写入和修改Microsoft Office格式的文件,包括Excel(....

    java导入excel工具jar包

    java导入excel工具包2.0。修改了许多BUG,增加了许多功能

    java导入EXCEL

    ### 一、Java导入Excel的基本概念 在IT行业中,数据处理是一项常见的任务。特别是在企业级应用中,经常需要将Excel数据导入到数据库或其他系统中进行进一步处理。Java作为一种广泛使用的编程语言,在处理这种需求时...

    java导入excel表格

    在Java编程中,导入Excel表格是一项常见的任务,特别是在数据处理、数据分析或系统集成等领域。Excel文件通常用于存储结构化数据,而Java作为一种强大的后端语言,提供了多种方式来读取和操作这些数据。本篇文章将...

    java导入excel表

    在文档`java导入excel.docx`中,可能会包含更详细的代码示例和步骤说明,你可以参考这个文档来完善你的程序。总的来说,利用Java和正确的库,你可以轻松地将Excel数据导入到各种数据库系统中,实现高效的数据处理。

    利用java 导入Excel表格数据到mysql数据库里,源码,直接导入eclipse就可以运行

    在Java开发中,将Excel表格数据导入MySQL数据库是一项常见的任务,尤其在数据处理、数据分析以及系统集成等场景中。这个项目提供了一套完整的源码,可以直接在Eclipse环境中运行,帮助开发者快速实现这一功能。下面...

    Java实现Excel导入导出

    Excel源代码,导入导出各种工具类 &lt;groupId&gt;org.apache.poi &lt;artifactId&gt;poi &lt;groupId&gt;org.apache.poi &lt;artifactId&gt;poi-scratchpad 代码实例: String path = ""; byte[] bytes; vo.setCurrentPage(0); vo....

    Java导入excel文件

    在Java编程环境中,导入Excel文件是一项常见的任务,特别是在数据处理、数据分析或自动化测试等领域。本项目提供了一个完整的解决方案,帮助开发者实现这一功能。下面将详细解释这个Java项目中涉及的关键知识点,...

    java 导入及判断的Excel 使用方法

    本文将深入探讨Java中导入和判断Excel的使用方法,结合实例分析,帮助你全面理解这一技术。 首先,Java与Excel的交互通常依赖于第三方库,如Apache POI或JExcelAPI。Apache POI是目前最常用的一个,它提供了丰富的...

    java Excel工具类,导入导出Excel数据

    java Excel工具类,导入导出Excel数据,导入数据对合并表格有判断获取数据,导出数据到Excel,Excel文件不存在会创建。 博客:https://blog.csdn.net/qq_37902949/article/details/81230640

    解决Java导入excel大量数据出现内存溢出的问题

    解决Java导入excel大量数据出现内存溢出的问题 在Java中导入大量Excel数据时,可能会出现内存溢出的问题,这是因为Excel文件中的大量数据会被加载到内存中,从而导致内存溢出。今天,我们将介绍如何解决这个问题。 ...

    最新java实现Excel导入导出

    用Java实现的Excel的导入导出,简洁明了,高质量代码。

Global site tag (gtag.js) - Google Analytics