excel导入数据库出错 求救!!

kfb2008 2009-02-04 10:24:04
我是一个菜鸟!现在手头上有个项目要做一个excel2003文件导入到oracle数据库中,用的是jxl2_6_9控件.但是在执行程序的时候提示rwb = Workbook.getWorkbook(is); 这一行出错.提示为java.lang.ExceptionInInitializerError
at jxl.Workbook.getWorkbook(Workbook.java:253)
at gsyw.gs_yedlS.doPost(gs_yedlS.java:79)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225)
Truncated. see log file for complete stacktrace
java.lang.NullPointerException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at common.Logger.initializeLogger(Logger.java:71)
at common.Logger.getLogger(Logger.java:42)
at jxl.WorkbookSettings. <clinit>(WorkbookSettings.java:41)
Truncated. see log file for complete stacktrace
>


程序为:
package gsyw;

import java.io.File;
import java.sql.*;
import jxl.write.*; //写新的xls文件的话
import jxl.read.*;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.*;

import jxl.format.*;
import java.util.*;
import java.awt.Color;

import zjyw.common.*;
import jxl.*;
import jxl.read.biff.*;


public class gs_yedlS extends HttpServlet {

//Initialize global variables
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session=request.getSession(true);
/*接收EXCEL地址等数据*/
String wjlj=CodeB.UnicodeToChinese(request.getParameter("wjlj").trim());
System.out.println(wjlj);
wjlj=wjlj.replaceAll("\\\\","/");
System.out.println(wjlj);
String yerq=request.getParameter("yerq").trim();
String brch_no=(String)session.getValue("dl_brch_no");
String oper_no=(String)session.getValue("dl_oper_no");
if (brch_no == null||oper_no == null) {
session.setAttribute("errorMsg", "未获取到机构或柜员信息!");
session.setAttribute("stepBack", "1");
response.sendRedirect("/ErrorMsg.jsp");
return;
}
if (brch_no.equals("")||oper_no.equals(""))
{
session.setAttribute("errorMsg", "未获取到机构或柜员信息!");
session.setAttribute("stepBack", "1");
response.sendRedirect("/ErrorMsg.jsp");
return;
}
/*连接数据库*/
CallableStatement proc = null;
Connection conn = null;
DBAccess db=new DBAccess();
db.setConnection("ora");
db.connect();
conn=db.getConnection();
jxl.Workbook rwb=null;
try
{
//构建Workbook对象, 只读Workbook对象
//直接从本地文件创建Workbook
//从输入流创建Workbook

System.out.println("start load file-------------------------");
try
{
System.out.println("ss");
File file=new File(wjlj);
InputStream is = new FileInputStream(file);//创建输入
System.out.println("hh2");
rwb = Workbook.getWorkbook(is);
System.out.println("hh");
}
catch (FileNotFoundException e) {
e.printStackTrace();
//return null;
} catch (BiffException e) {
e.printStackTrace();
//return null;
} catch (IOException e) {
e.printStackTrace();
//return null;
}

System.out.println("start load file-------------------------");
Sheet rs = rwb.getSheet(0); //读取第一个sheet
int colNum=rs.getColumns();//列数
int rowNum=rs.getRows();//行数

System.out.println("colNum rowNum------------------"+rowNum+","+colNum);
//调用判断重复存储过程
proc = conn.prepareCall("{ call SP_GSYW_YEDL(?,?,?) }");

String xh="",zh="",zh_son="",gsmc="",khjg="",kmdh="",ye="";
for(int i=1;i <rowNum;i++){
zh="";zh_son="";gsmc="";khjg="";kmdh="";ye="";
xh=rs.getCell(0, i).getContents();
zh=rs.getCell(1, i).getContents();
zh_son=rs.getCell(2, i).getContents();
gsmc=rs.getCell(3, i).getContents();
ye=rs.getCell(4, i).getContents();
khjg=rs.getCell(5, i).getContents();
kmdh=rs.getCell(6, i).getContents();

proc.setString(1, zh);
proc.setString(2, yerq);
proc.registerOutParameter(3, Types.INTEGER);
proc.execute();
int zs = proc.getInt(3);
//System.err.print(zs);
if(zs!=0)
{
db.disconnect();
rwb.close();
session.putValue("errorMsg","该文件中帐号为"+zh+"已导入!");
session.putValue("stepBack","1");
response.sendRedirect("/ErrorMsg.jsp");
return;
}
}
String sql="";
for(int i=1;i <rowNum;i++){
zh="";zh_son="";gsmc="";khjg="";kmdh="";ye="";
xh=rs.getCell(0, i).getContents();
zh=rs.getCell(1, i).getContents();
zh_son=rs.getCell(2, i).getContents();
gsmc=rs.getCell(3, i).getContents();
ye=rs.getCell(4, i).getContents();
khjg=rs.getCell(5, i).getContents();
kmdh=rs.getCell(6, i).getContents();
sql="insert into gs_zhyeb values('"+brch_no+"','"+oper_no+"','"+xh+"','"+zh+"','"+zh_son+"','"+gsmc+"','"+khjg+"','"+yerq+"','"+kmdh+"',"+Double.parseDouble(ye)+")";
conn.setAutoCommit(false);
int s=0;
db.insert(sql);
/* 正式提交 */
conn.commit();
}
db.disconnect();
rwb.close();
session.putValue("successMsg","您的公司帐户余额信息导入成功!");
session.putValue("nextPage","/gsyw/gs_yepldr.jsp");
response.sendRedirect("/SuccessMsg.jsp");
return;
}
catch (SQLException e) {
/* 出错回滚 */
try{conn.rollback();
System.out.println("回滚成功");
}catch(Exception e1){System.out.println(e1.getMessage());}
System.out.println("错误代码:"+e);
db.disconnect();
session.putValue("errorMsg","由于数据库忙,您的公司帐户余额信息导入不成功!");
session.putValue("stepBack","1");
response.sendRedirect("/ErrorMsg.jsp");
return ;
}
catch (IOException e) {
e.printStackTrace();
}
finally{
db.disconnect();
}
}

}


求救!!!!!!!!
...全文
99 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
yao_831 2009-02-05
  • 打赏
  • 举报
回复
我用过这个jxl组件来读取excel,虽然细节的实现方法和你不一样,但是也出现过你类似的问题,你可以试试先将文件上传至服务器目录,然后从服务器路径上获取流,workbook = Workbook.getWorkbook(new File(SAVE_PATH))!

67,513

社区成员

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

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