2013-07-26 80 views
0

我正在創建一個web應用程序,它需要上傳用戶的excel文件,並且該文件中的數據將存儲在數據庫中。我使用postgre sql和spring,poi api。我有一個從xls和xlsx中提取數據並將其顯示在myeclipse控制檯上的程序,但是應該如何將這些數據存儲到數據庫中。擅長postgresql使用彈簧

public class ReadExcelData { 

    public static void main(String args[]) 
    { 
     ReadExcelData read = new ReadExcelData(); 
     try 
     { 
      System.out.println("**********Reading XLS File**************"); 
      //reading xls file 
      read.readXlsFile(); 

      System.out.println(""); 

      System.out.println("**********Reading XLSX File**************"); 
      //Reading xlsx file 
      read.readXlsxFile(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
    } 

    /** 
    * This method will read the Excel file with .xls format (before MS Excel 2003 Ver.) 
    * @throws IOException 
    */ 
    private void readXlsFile() throws IOException 
    { 
     InputStream file = new FileInputStream("\\manage_user_info.xls"); 
     HSSFWorkbook workbook = new HSSFWorkbook(file); 

     //Getting sheet number 1 
     HSSFSheet sheet = workbook.getSheetAt(0); 

     HSSFRow row; 
     HSSFCell cell; 

     //Creating the Row Iterator Object 
     Iterator<?> rows = sheet.rowIterator(); 

     //Iterating over the Rows of a Sheet 
     while (rows.hasNext()) 
     { 
      row=(HSSFRow) rows.next(); 
      Iterator<?> cells = row.cellIterator(); 

      //Iterating over the Columns of a Row 
      while (cells.hasNext()) 
      { 
       cell=(HSSFCell) cells.next(); 

       //For string type data 
       if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) 
       { 
        System.out.print(cell.getStringCellValue()+" "); 
       } 
       //for Numeric data 
       else if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) 
       { 
        System.out.print(cell.getNumericCellValue()+" "); 
       } 
      } 

     } 

    } 

    /** 
    * This method will read the Excel file with .xlsx format 
    * @throws IOException 
    */ 
    private void readXlsxFile() throws IOException 
    { 
     InputStream xlsxFile = new FileInputStream("C:\\Users\\Ashwani\\Desktop\\manage_user_info.xlsx"); 
     XSSFWorkbook workbook = new XSSFWorkbook(xlsxFile); 

     //Getting sheet number 1 
     XSSFSheet sheet = workbook.getSheetAt(0); 

     XSSFRow row; 
     XSSFCell cell; 

     //Creating the Row Iterator Object 
     Iterator rows = sheet.rowIterator(); 

     //Iterating over the Rows of a Sheet 
     while (rows.hasNext()) 
     { 
      row=(XSSFRow) rows.next(); 
      Iterator cells = row.cellIterator(); 
      //Iterating over the Columns of a Row 
      while (cells.hasNext()) 
      { 
       cell=(XSSFCell) cells.next(); 

       if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING) 
       { 
        System.out.print("--string-- "); 
       } 
       else if(cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) 
       { 
        System.out.print("--number--"); 
       } 
      }System.out.println(); 
     } 
    } 

} 
+0

「我該如何將數據存儲到數據庫?」是一個非常開放的問題。你有什麼嘗試? – StuPointerException

+0

這是一個普通的java文件,我使用spring和mvc。那麼我應該在我的BO和DAO中做什麼? – v0ld3m0rt

回答

1

這是一個非常普遍的問題,所以這是很難給出一個明確的答案,你可能要考慮以下重要思想爲指導,但:

  1. 設計一個域對象/模型來保存任何數據你正在讀取xls文件。你的閱讀方法應該返回這個對象的列表。
  2. 創建一個Spring manager類作爲你的服務層,這可能有一個叫做save​​的方法,它接收來自第一步的對象列表。
  3. 創建一個數據訪問對象,該對象處理從第二步傳遞過來的對象的映射。您可以考慮使用ORM工具(例如Hibernate)來執行此步驟。

我希望這點能指引您正確的方向。