MVC模式数据导入成Excel实现(来者一定重金酬谢)-在线急等!

ccssddnn 2008-12-31 01:45:09
加精
Dear All:
在Excel中显示数据如下:
第一行:(即主题)台账管理
第二行:入库日期 原色油名 编号 批号 供应商 入库数量 检测机构 等字段
第三行:对应specjdto的数据(只有一条DTO记录)
第四行: 入库日期 配色油名 编号 批号 生产数量 部件名 部件编号 批号 生产日期
从第五行开始显示对应list的数据(getList有多条DTO记录数据)


public void totalImport(HttpServletRequest request,String path){
HttpSession session=request.getSession();

SpecJ specjdto=(SpecJ)session.getAttribute("specJdto"); //第三行要显示的数据
List list=(List)session.getAttribute("getList"); //从第五行开始往下一直要显示的数据

//
现在关键是按上面格式怎样将specjdto和list数据都导入到Excel中,希望名位大侠能帮小弟一把,在线求助。。。

//


}
...全文
1534 97 打赏 收藏 转发到动态 举报
写回复
用AI写文章
97 条回复
切换为时间正序
请发表友善的回复…
发表回复
卡卡西CC 2009-02-03
  • 打赏
  • 举报
回复
路过学习
redwolf888 2009-02-02
  • 打赏
  • 举报
回复
看看。其实不是很麻烦,就是做的重复性工作多点。
wmin9901 2009-01-30
  • 打赏
  • 举报
回复
顶一个~~~。。。
hdjk168 2009-01-19
  • 打赏
  • 举报
回复
以前用displaytag时发现可以输出成excel,pdf,还有几个没有见过的格式。
楼主去下个源码看看吧
挺成熟的
dehua007 2009-01-19
  • 打赏
  • 举报
回复
还好,还有分接。
sebatinsky 2009-01-14
  • 打赏
  • 举报
回复

同样是一个简单的针对Excel的导入操作,这里只是简单的列出了和前面一个一样的操作步骤.程序当中应该相当详细的说明了一切,希望大家可以看明白,都是相当基础相当简单的.接下来会扩展开去,进行WEB操作的.
package com.lip.main;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
public class ImportExcel {
/**
* (最基本的导入操作.)
*
* Author lip(Lizg)
* 2009-1-9
*
* 同上一个一样,这一个也是简单的导入操作,其实同样是最基本的需求而已,
* 再加上一些处理就可以了,比如自己字段的处理,导入文件是否保存下来之类的.
*
* 这里同样以一个main来说明一下其基本的操作过程.
*
* 导入,就是从Excel中去取出数据,然后写入到数据库(这里就是数据库操作吧,相对于其他的Excel间操作之类的就省略)
*
* 第一,同样是先准备好数据来源.这里不是建立好Excel,而是在那个盘符下建立一个导入Excel,并有数据,然后导入即可.
*
* 接上一个例子.这一个同样是对MySQL操作,当然可以换成其他的诸如Oracle,SQLServer之类的.
*
*/
public static void main(String[] args) {
//(第一:)首先申明读取的的文件来源.再次申明,这里的都是直接的,我认为最基本但是又容易看懂的.
File importExcel = new File("c:\\导入测试.xls");
//这里确认这个文件是存在的,当然可以判断一下.用file.exists().看其是否存在,
/**(第一步完成)*/

//(第二:)然后就先来连接数据库吧.同样是对同一个数据库操作,只是这里新增加一个表.见最下面.
try{
//数据库连接
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:5885/excel", "root", "5885");
PreparedStatement prep = conn.prepareStatement("insert into importexcel (id,name) values (?,?)");
//这里是插入,用这个来的比较方便,所以就直接用这个接口来操作吧.
//System.out.println("Success");
/**(第二步完成)*/

/**
* 到这里,已经连接好了数据库了,然后就是上传了,这里的sql语句就是插入,很简单,这里来看看读出数据.
*
*/

//(第三步:)操作Excel文件读出里面的数据,其实思想是一样的,就是普通思维,
//获取Excel文件---->读取每一个工作单元(就跟前一个导入一样的是每一个整体表格)---->读取(一个表格)每一行的内容------(读取完成.)

//首先是获取文件,也就是上面的Excel文件,这里是或者这个Excel文件.然后就是对之进行操作.
Workbook workBook = Workbook.getWorkbook(importExcel);

//其次就是获取这个Excel文件的工作表格.这里就基本处理,当然可以不用数组形式,因为只有第一个工作表格有数据,其他两个没有,
//但是为了一般化,就仍然这样操作.
Sheet[] sheet = workBook.getSheets();
//这里大家看一下API就能够知道,其实可以通过参数来获得哪一个表格就行了,
//比如Sheet sheet = workBook.getSheet(1);


//这里就到了最后了,这里的最后就是对于工作表格的最后,既然是用数组来得到的,当然会对每一个工作表格进行读取操作,
//这里的读取就是读取每一个工作表格的每一行数据.
int sheet_i_num = 0;//获取工作表格的行数
String id = "";
String name = "";//用来得到每一个单元格的内容,下面用到.
if(sheet!=null&&sheet.length>0){//判断一下
for(int sheetNum=0;sheetNum < sheet.length; sheetNum++){//获得有多少个工作表格,对每一个操作.
//(3.1这里首先要得到要读取的工作表格有多少行.)
sheet_i_num = sheet[sheetNum].getRows();

//接下来就是对每一行进行的去数据了,
for(int rowNum = 0; rowNum < sheet_i_num ; rowNum++){
//这里就开始对每一个单元格进行操作了.
//显然,sheet[]第一个参数就是哪一个工作表格,然后getRow的就是哪一行.然后就赋值给Cell进行操作.
Cell[] cells = sheet[sheetNum].getRow(rowNum);
//这里就开始读出每一行的数据了,这里不做其他的判断,比如,数据是整数否,是否超出字符串长度,是否为空等等,
id = cells[0].getContents();
name = cells[1].getContents();//这里就是对每一个列来获取,cells就是把这一行的某一列赋值给你所要操作的值.

//数据是取到了,然后就是直接插入到数据库当中了,
prep.setInt(1, Integer.parseInt(id));
prep.setString(2, name);
prep.executeUpdate();
System.out.println(id+"--------"+name);
}
}
}
workBook.close();
prep.close();
conn.close();
}catch(Exception e){
System.out.println(e.getMessage());
}
finally{

}
}
}
/**
第一步:建立数据表:(表名称叫做importexcel)
DROP TABLE IF EXISTS `importexcel`;
CREATE TABLE `importexcel` (
`Id` int(11) NOT NULL auto_increment,
`name` varchar(50) default NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这个时候,里面什么都没有,
可以用select看看,
*/
/*
然后就是操作这个数据表字段.往里面添加数据,这里明显是 只有两个字段,第一个是ID,(int整数类型)
第二个是NAME,(varchar字符串类型)
很明显都能过看得出来.
然后再来一次select试试.
*/
sebatinsky 2009-01-14
  • 打赏
  • 举报
回复
其实建议楼主可以去看看我的简单博客,呵呵,虽然谢了不多,但是还是有那么几篇,我建议楼主同样的,先上传,然后再读取,文件操作其实相当简单,就是读取每一行的代码,这个JXL里面都有了,
http://blog.csdn.net/sebatinsky/archive/2009/01/09/3739204.aspx
由于最近博客改版了,这个是以前的,所以会有点点问题,到博客留下邮箱,我给你源程序,或者是帮你解决.呵呵,很方便.
kongwei302 2009-01-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ccssddnn520 的回复:]
引用 1 楼 billwindows 的回复:
给你看下我的博客吧,可以参考下,应该能解决
http://blog.csdn.net/billwindows/archive/2008/07/24/2703342.aspx

这里的这个类能实现对数据的上下合并,泄泻


JXL 用到的包导了,但是下面的要导哪些包啊?谢谢
import org.apache.commons.lang.StringUtils;
import org.dom4j.Element;
import com.aspire.reportSystem.common.constant.LogConstant;
[/Quote]

很喜欢你的"泄泻"两个字
sweet_live 2009-01-08
  • 打赏
  • 举报
回复
期待结果. 关注
yinwenshuo 2009-01-06
  • 打赏
  • 举报
回复
adsf
lisatest 2009-01-06
  • 打赏
  • 举报
回复
收藏
ibm88 2009-01-05
  • 打赏
  • 举报
回复
游戏开发工程师笔试题目游戏开发工程师笔试题目
ccssddnn 2009-01-05
  • 打赏
  • 举报
回复
多谢楼上的friends ,特别是10F&&22F
问题已解决,代码帖出来和大家分享一下,希望有所帮助...

代码:http://blog.csdn.net/ccssddnn520/archive/2009/01/05/3709803.aspx
tomora 2009-01-05
  • 打赏
  • 举报
回复
大家的办法很多, 都可以参考,关注了……
hanaq82 2009-01-05
  • 打赏
  • 举报
回复
关注一下。
joyce14 2009-01-04
  • 打赏
  • 举报
回复
谢谢楼主,收藏学习了!
zhangmx 2009-01-04
  • 打赏
  • 举报
回复
收藏一下吧,说不定什么时候用上了
yunyouyou 2009-01-04
  • 打赏
  • 举报
回复
顶,啊
derelictangel 2009-01-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 billwindows 的回复:]
给你看下我的博客吧,可以参考下,应该能解决
http://blog.csdn.net/billwindows/archive/2008/07/24/2703342.aspx

这里的这个类能实现对数据的上下合并,泄泻
[/Quote]

PS:
我的目标是 ---->

^_^
sphinger 2009-01-04
  • 打赏
  • 举报
回复
顶了,新年快乐
加载更多回复(76)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧