Karthik siva Ответов: 1

Импорт данных excel в mysql


Я пытаюсь импортировать данные excel в базу данных myql. но я получаю такую ошибку:"
org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)
"

Что я уже пробовал:

<html>
<head>
 </head>
  <body>

  <form  action ="Excel.jsp"  method="post"  >

    <input type="file" name= file size="20" id="file"  />
      <input type="submit" value="Submit" />
</form>
</body>
 </html>


Это мой код jsp:

<%@ page import ="java.util.Date" %>
 <%@ page import ="java.io.*" %>
 <%@ page import ="java.io.FileNotFoundException" %>
 <%@ page import ="java.io.IOException" %>
 <%@ page import ="java.util.Iterator" %>
 <%@ page import ="java.util.ArrayList" %>
 <%@ page import ="java.sql.*" %>

	
	<%@ page import ="java.util.Iterator" %>
	<%@ page import ="org.apache.poi.ss.usermodel.Cell" %>
	<%@ page import ="org.apache.poi.ss.usermodel.Row" %>
	<%@ page import ="org.apache.poi.xssf.usermodel.XSSFSheet" %>
	<%@ page import ="org.apache.poi.xssf.usermodel.XSSFWorkbook" %>
	<%@ page import ="org.apache.poi.poifs.filesystem.POIFSFileSystem" %>
	
    
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>Insert title here</title>
  </head>
  <body>
  <%!     
  Connection con;
  PreparedStatement ps=null;
  Statement stmt= null;
  public static ArrayList readExcelFile(String fileName)
    {
     /** --Define a ArrayList
        --Holds ArrayList Of Cells
      */
       ArrayList cellArrayLisstHolder = new ArrayList();

      try
      {
        /** Creating Input Stream**/
       //FileInputStream myInput = new FileInputStream(new File("C:/excel/f/testExcel.xlsx"));
        FileInputStream file;
		file = new FileInputStream(new File("C:/excel/f/testExcel.xls"));

       /** Create a POIFSFileSystem object**/
       POIFSFileSystem myFileSystem = new POIFSFileSystem(file);

        /** Create a workbook using the File System**/
       // HSSFWorkbook myWorkBook = new HSSFWorkbook(myFileSystem);
        XSSFWorkbook workbook = new XSSFWorkbook(file);

        /** Get the first sheet from workbook**/
        // HSSFSheet mySheet = myWorkBook.getSheetAt(0);
        XSSFSheet sheet = workbook.getSheetAt(0);

        /** We now need something to iterate through the cells.**/
            //Iterator rowIter = mySheet.rowIterator();
        	Iterator<Row> rowIterator = sheet.iterator();
         
        /* while(rowIter.hasNext())
          {
            HSSFRow myRow = (HSSFRow) rowIter.next();
              Iterator cellIter = myRow.cellIterator();
            ArrayList cellStoreArrayList=new ArrayList();
               
            while(cellIter.hasNext())
               {
                  HSSFCell myCell = (HSSFCell) cellIter.next();
                  cellStoreArrayList.add(myCell);
               }
             cellArrayLisstHolder.add(cellStoreArrayList);
        } */
        	while (rowIterator.hasNext())
        	{
        		Row row = rowIterator.next();
        		//For each row, iterate through all the columns
        		Iterator<Cell> cellIterator = row.cellIterator();
        		 ArrayList cellStoreArrayList=new ArrayList();
        		while (cellIterator.hasNext())
        		{
        			Cell cell = cellIterator.next();
        			 cellStoreArrayList.add(cell);
                }
              cellArrayLisstHolder.add(cellStoreArrayList);
         }
        
       }catch (Exception e)
      {
    	   
    	   e.printStackTrace(); 
       }
       return cellArrayLisstHolder;
      }%>
      <%
       String file = request.getParameter("file");

        String fileName=""+file+""; //testExcel.xls Excel File name

           //Read an Excel File and Store in a ArrayList
               ArrayList dataHolder=readExcelFile(fileName);
              //Print the data read
               //printCellDataToConsole(dataHolder);

          try
               {
               Class.forName("com.mysql.jdbc.Driver");
                con=DriverManager.getConnection("jdbc:mysql://localhost:3306/mytestbd","root","baseauto");
                stmt =con.createStatement();
               String query="insert into student values(?,?,?)";
              ps=con.prepareStatement(query);
             int count=0;
           ArrayList cellStoreArrayList=null;

           //For inserting into database
            for(int i=1;i<dataHolder.size();i++)
            {
               cellStoreArrayList=(ArrayList)dataHolder.get(i);
               ps.setString(1,((Cell)cellStoreArrayList.get(0)).toString());
               ps.setString(2,((Cell)cellStoreArrayList.get(1)).toString());
               ps.setString(3,((Cell)cellStoreArrayList.get(2)).toString());
                 count= ps.executeUpdate();
                 //out.print(((HSSFCell)cellStoreArrayList.get(2)).toString() + "\t");
            }

              //For checking data is inserted or not?
                 if(count>0)
                { 
                 %>

                              Following deatils from Excel file have been inserted in student table of database
                           <table>
                               <tr>
                                  <th>Student's Name</th>
                                 <th>Class</th>
                                 <th>Age</th>
                              </tr>

               <% 

              for (int j=1;j < dataHolder.size(); j++) {
          cellStoreArrayList=(ArrayList)dataHolder.get(j);%>
            <tr>
                <td><%=((Cell)cellStoreArrayList.get(0)).toString() %></td>
                <td><%=((Cell)cellStoreArrayList.get(1)).toString() %></td>
                <td><%=((Cell)cellStoreArrayList.get(2)).toString() %></td>
           </tr>
         <%}
              }
             else
                {%>
             <center> Details have not been inserted!!!!!!!!!</center>

                       <%    }   
                    }catch(Exception e)
                 {}%>
                </table>

                 </body>
                  </html>

1 Ответов

Рейтинг:
1