您的位置:程序门 -> java -> j2ee / ejb / jms



用jxl如何读excel表写入数据库,且excel表与数据表内容不是一一对应,excel表字段少


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


用jxl如何读excel表写入数据库,且excel表与数据表内容不是一一对应,excel表字段少
发表于:2007-07-09 17:59:51 楼主
有一个需求,需要将excel表导入数据库表,但是excel表的字段比数据库表字段要少,而且还要转换一下,比如说,excel表里输入的是学院,对应数据库表字段是学院的id,我应该怎么样写,是否是先把excel表改成跟数据库表一致的,还是可以直接用jxl实现导入.
发表于:2007-07-18 15:04:361楼 得分:0
没人回答一下   啊
发表于:2007-07-18 16:23:042楼 得分:0
我们的系统遇到过此类问题,我是先d读取excel的内容,然后将内容转化为页面的表单,在转化表单的过程中,对excel的内容进行格式化,在保存到数据库的时候,直接读取页面表单的内容,存入数据库。
发表于:2007-07-18 17:01:153楼 得分:0
先对读取出来的数据做处理然后再存入数据库
发表于:2007-07-18 17:26:594楼 得分:0
和字段多少没关系,excel的格式一定要事先约定好固定格式
给你个读取例子研习一下就明白了

<%string   filepath=nvl(request.getparameter( "path "),request.getrealpath( "/ ")+ "\\test1.xls ");//excel文件
out.println(filepath);
//out.println(subjectid+ " <br> ");

int   startrow=integer.parseint(nvl(request.getparameter( "startrow "), "0 "));//指定开始行
int   endrow=integer.parseint(nvl(request.getparameter( "endrow "), "-1 "));//结束行
int   startcol=integer.parseint(nvl(request.getparameter( "startcol "), "0 "));//指定开始列
int   endcol=integer.parseint(nvl(request.getparameter( "endcol "), "-1 "));//结束列
int   sheetnum=integer.parseint(nvl(request.getparameter( "sheetnum "), "0 "));//指定工作薄


file   sourcefile=new   file(filepath);
inputstream   is   =   new   fileinputstream(sourcefile);
jxl.workbook   rwb   =   workbook.getworkbook(is);              
sheet   rs   =   rwb.getsheet(sheetnum);//页
int   col   =   rs.getcolumns();//列
int   row   =   rs.getrows();//行
out.println( "row= "+row);
for(int   i=startrow;i <row;i++){
if(i==endrow)break;
if(rs.getcell(0,i).getcontents().equals( " "))break;
for(int   j=startcol;j <col;j++){
cell   cell   =   rs.getcell(j,   i);
string   strc=cell.getcontents();
out.print(strc+ " ¦ ");
if(j==endcol)break;
}
out.println( " <br> ");
}
is.close();

}catch(exception   e1){
out.println( "error: "+e1);
}
%>
<%!
private   string   nvl(object   str,string   val){
if(str==null)
return   val;
return   (string)str;
}
%>
发表于:2007-07-19 09:02:555楼 得分:0
首先谢谢黑丁.如果各个表的字段不同,而且类型也不同,怎么判断,如果是数字型,读的是字符型,插入会报错的.
发表于:2007-07-19 17:54:406楼 得分:0
rs.getmetadata().getcolumntypename(i)


可以查出数据库字段的类型   然后做相应处理   rs   是resultset


快速检索

最新资讯
热门点击