解析Excel后准备插入数据库,报了如下错误,框架使用的是Jfinal

影-只 发布于 2015/04/17 16:02
阅读 245
收藏 0

[ERROR]-[Thread: qtp3391914-18]-[com.jfinal.core.ActionHandler.handle()]: /excelUpload/save

com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLException: Invalid argument value: java.io.NotSerializableException
    at com.jfinal.plugin.activerecord.DbPro.save(DbPro.java:534)
    at com.jfinal.plugin.activerecord.DbPro.save(DbPro.java:544)
    at com.jfinal.plugin.activerecord.Db.save(Db.java:378)
    at com.jfinal.excelUpload.ExcelUploadController.save(ExcelUploadController.java:66)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:55)
    at com.jfinal.student.StudentInterceptor.intercept(StudentInterceptor.java:11)
    at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:51)
    at com.jfinal.core.ActionHandler.handle(ActionHandler.java:73)
    at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:72)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:453)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:560)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1072)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:382)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1006)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at org.eclipse.jetty.server.Server.handle(Server.java:365)
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485)
    at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:937)
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:998)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:856)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.sql.SQLException: Invalid argument value: java.io.NotSerializableException
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
    at com.mysql.jdbc.PreparedStatement.setSerializableObject(PreparedStatement.java:4375)
    at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:4019)
    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.setObject(NewProxyPreparedStatement.java:365)
    at com.jfinal.plugin.activerecord.dialect.Dialect.fillStatement(Dialect.java:68)
    at com.jfinal.plugin.activerecord.DbPro.save(DbPro.java:514)
    at com.jfinal.plugin.activerecord.DbPro.save(DbPro.java:532)
    ... 35 more
Caused by: java.io.NotSerializableException: org.apache.poi.xssf.usermodel.XSSFCell
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
    at com.mysql.jdbc.PreparedStatement.setSerializableObject(PreparedStatement.java:4364)

    ... 40 more



代码如下:

public void saveExcel() throws IOException {
        UploadFile uploadFile = getFile("excelUpload",
                "E:/eclipse/jfinal_orm_crud/WebRoot/file_home");
        String realPath = "E:/eclipse/jfinal_orm_crud/WebRoot/file_home/";
        String filePath = realPath + uploadFile.getFileName();
        InputStream fis = new FileInputStream(filePath);
        XSSFWorkbook workbook = new XSSFWorkbook(fis);

        // XSSFSheet sheet = null;
        // for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
        // sheet = workbook.getSheetAt(i);
        // for (int j = 1; j < sheet.getPhysicalNumberOfRows(); j++) {
        // XSSFRow row = sheet.getRow(j);
        // for (int k = 0; k < row.getPhysicalNumberOfCells(); k++) {
        // System.out.println(row.getCell(k) + "\t");
        // }
        // }
        // }
        XSSFSheet sheet = workbook.getSheetAt(0);
        XSSFRow row = null;
        List<Record> list = new ArrayList<Record>();
        Map<Integer, Object> map = new HashMap<Integer, Object>();
        for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {
            row = sheet.getRow(i);
            int cols = row.getPhysicalNumberOfCells();
            for (int j = 0; j < cols; j++) {
                Cell cell = row.getCell(j);
                map.put(j, cell);

            }
            Record user = new Record().set("userId", map.get(0))
                    .set("userName", map.get(1)).set("userGender", map.get(2))
                    .set("userAge", map.get(3)).set("userClass", map.get(4));
            System.out.println(user);
            Db.save("user", user);
            list.add(user);
            // new Test().set("stuId", map.get(0)).set("stuName", map.get(1))
            // .set("stuGender", map.get(2)).set("stuAge", map.get(3))
            // .set("stuClass", map.get(4)).save();
        }
        System.out.println(list);
        render("upload.jsp");
    }

IT新人欢迎指导和提出学习建议

加载中
0
胡萝卜炒肉
胡萝卜炒肉
会不会excle读出来的数据有问题啊,数字格式,字符串格式等
0
影-只
我把原数据库的数据读出打印到控制台和从Excel里取出来显示到控制台的数据格式都一样,而且Excel中的数据是取出来了的,就是执行到save()方法的时候就报错了
返回顶部
顶部