简体   繁体   English

将数据从excel导出到mysql

[英]exporting data from excel to mysql

I have an excel sheet.Using its information I have to derive some details and store it in a mysql table. 我有一个Excel工作表,使用它的信息我必须导出一些细节并将其存储在mysql表中。

my code is: 我的代码是:

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@page import="java.io.IOException"%>
<%@page import="java.sql.SQLException"%>
<%@page import="cnn.sem_year_conversion"%>
<%@page import="org.apache.poi.ss.usermodel.Row"%>
<%@page import="org.apache.poi.hssf.usermodel.HSSFCell"%>
<%@page import="org.apache.poi.hssf.usermodel.HSSFRow"%>
<%@page import="org.apache.poi.hssf.usermodel.HSSFSheet"%>
<%@page import="org.apache.poi.hssf.usermodel.HSSFWorkbook"%>
<%@page import="org.apache.poi.poifs.filesystem.POIFSFileSystem"%>
<%@page import="java.util.Iterator"%>
<%@page import="java.io.FileInputStream"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="cnn.cn"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>

 <%  
     try
     {
 Connection con=cn.getcon();  
 PreparedStatement ps=null;  

  String name,f_name,branch="",enroll,status="regular",sem,elligible="";
 int year= 0;
 int flag;
 int count=0;
         con.setAutoCommit(false);
        PreparedStatement pstm = null ;
        FileInputStream input = new FileInputStream("C:/Users/intel/Documents/student_excel.xls");
        POIFSFileSystem fs = new POIFSFileSystem( input ); //creating a new poi reference to the given excel file
        HSSFWorkbook wb = new HSSFWorkbook(fs);
        HSSFSheet sheet = wb.getSheetAt(0);
        Row row;
                 for(int i=1; i<=sheet.getLastRowNum(); i++)
                 { 
                     //points to the starting of excel i.e excel first row
           row = (Row) sheet.getRow(i);  //sheet number
                              if( row.getCell(1)==null) { enroll = "0";}  //suppose excel cell is empty then its set to 0 the variable
                   else enroll = row.getCell(1).toString();   //else copies cell data to name variable

                                  if( row.getCell(2)==null) { name = "0";}  //suppose excel cell is empty then its set to 0 the variable
                   else name = row.getCell(2).toString();   //else copies cell data to name variable

                                      if( row.getCell(3)==null) { f_name = "0";}  //suppose excel cell is empty then its set to 0 the variable
                   else f_name = row.getCell(3).toString();   //else copies cell data to name variable

    if( row.getCell(5)==null) { sem = "0";}  //suppose excel cell is empty then its set to 0 the variable
                   else sem = row.getCell(5).toString();   //else copies cell data to name variable

                switch (sem) {
            case "1":
            case "2":
                year=1;
                break;
            case "3":
            case "4":
                year=2;
                break;
            case "5":
            case "6":
                year=3;
                break;
            case "7":
            case "8":   
                year=4;
                break;
                default:year=0;
        }

      if( row.getCell(6)==null) { elligible="0";}  //suppose excel cell is empty then its set to 0 the variable
                   else elligible = row.getCell(6).toString();   //else copies cell data to elligible variable
if(elligible=="Submitted to RGPV"|| elligible=="Forwarded by RGPV" )
    flag=0;
else
    flag=1;
   if(enroll.contains("AU"))
       branch="au";
   else if(enroll.contains("EC"))
       branch="ec";
   else if(enroll.contains("CS"))
       branch="cs";
   else if(enroll.contains("CE"))
       branch="ce";
   else if(enroll.contains("IT"))
       branch="it";


 String query="insert into student values(?,?,0,3,?,?,?)";  
 ps=con.prepareStatement(query); 
 ps.setString(1, enroll);
 ps.setString(2, name);
 ps.setString(3, branch);
 ps.setInt(4,year);
 ps.setString(5, f_name);
 ps.setString(6, status);


 count=ps.executeUpdate();

                 }


 //For checking data is inserted or not?  

          con.commit();
        pstm.close();
        con.close();
        input.close();
        if(count>0)
        System.out.println("Successful import of excel to mysql table");

        else
          System.out.println("Import Failed.");

    }

     catch(SQLException ex){
       out.println(ex);
    }catch(IOException ioe)`{
       out.println(ioe);
    }


%>

    </body>
</html>

But it is generating following error--- 但这会产生以下错误-

HTTP Status 500 - Internal Server Error

type Exception report

messageInternal Server Error

descriptionThe server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: PWC6033: Error in Javac compilation for JSP

PWC6199: Generated servlet error:
source value 1.5 is obsolete and will be removed in a future release

PWC6199: Generated servlet error:
target value 1.5 is obsolete and will be removed in a future release

PWC6199: Generated servlet error:
To suppress warnings about obsolete options, use -Xlint:-options.

PWC6197: An error occurred at line: 32 in the jsp file: /student_info.jsp
PWC6199: Generated servlet error:
strings in switch are not supported in -source 1.5
  (use -source 7 or higher to enable strings in switch)

note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 4.0 logs.
GlassFish Server Open Source Edition 4.0 

I have used String in switch case because on using int it was giving exception- 我在开关情况下使用String,因为在使用int时,它给出了异常-

org.apache.jasper.JasperException: java.lang.NumberFormatException: For input string: "1.0"

How to solve this? 如何解决呢?

I think it should be the exception of switch statement because A switch works with the byte, short, char, and int primitive data types. 我认为这应该是switch语句的例外,因为A switch可以处理byte,short,char和int原语数据类型。

Try to convert the data to integer first before you going to switch it. 在切换数据之前,请先尝试将其转换为整数。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM