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

lily1314 2007-07-09 05:59:51
有一个需求,需要将excel表导入数据库表,但是excel表的字段比数据库表字段要少,而且还要转换一下,比如说,excel表里输入的是学院,对应数据库表字段是学院的id,我应该怎么样写,是否是先把excel表改成跟数据库表一致的,还是可以直接用jxl实现导入.
...全文
291 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lily1314 2007-07-19
  • 打赏
  • 举报
回复
首先谢谢黑丁.如果各个表的字段不同,而且类型也不同,怎么判断,如果是数字型,读的是字符型,插入会报错的.
kjah 2007-07-19
  • 打赏
  • 举报
回复
rs.getMetaData().getColumnTypeName(i)


可以查出数据库字段的类型 然后做相应处理 rs 是ResultSet
kjah 2007-07-18
  • 打赏
  • 举报
回复
和字段多少没关系,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;
}
%>
lbh198408 2007-07-18
  • 打赏
  • 举报
回复
先对读取出来的数据做处理然后再存入数据库
guzen 2007-07-18
  • 打赏
  • 举报
回复
我们的系统遇到过此类问题,我是先d读取Excel的内容,然后将内容转化为页面的表单,在转化表单的过程中,对Excel的内容进行格式化,在保存到数据库的时候,直接读取页面表单的内容,存入数据库。
lily1314 2007-07-18
  • 打赏
  • 举报
回复
没人回答一下 啊

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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