2012-01-18 74 views
1

我想從Excel表插入到SQL數據庫使用Java或JSP的行。最初我使用ODBC連接了兩個數據庫。但我想把一個excel文件作爲用戶的輸入。爲此,我創建了一個文件瀏覽器並上傳文件。從一個文件中插入行插入數據庫

  1. 如何連接上傳的文件和ODBC連接?
  2. 如何查詢上傳的文件?

如果我使用Apache POI來解析Excel文件,我會得到列名並且也會被插入。我怎樣才能避免這種情況?

a)如何插入具有特定列名的行,而不是列號?

請給我提供的代碼片段

+0

循環請說明你的問題。 – DagR 2012-01-18 06:29:26

回答

0

1)我如何連接與ODBC連接上傳的文件?

你將不得不編寫一個服務來將excel映射到數據庫,如果這就是你要求的?

+0

是的...使用DSN我們可以做到這一點...但如何將上傳的文件與ODBC連接? – user1063145 2012-01-18 06:30:59

+0

您可以將excel保存到服務器上的某個位置,然後使用 Class.forName(「sun.jdbc.odbc.JdbcOdbcDriver」); Connection c = DriverManager.getConnection(「jdbc:odbc:Driver = {Microsoft Excel Driver(* .xls)}; DBQ = C:/database.xls; readOnly = false」); 這樣做。如果那是你問的問題?但是,如果您已經使用POI進行解析,那麼在JAVA pojos中確實有數據,而您所做的只是SQL插入。我想我沒有得到你的問題 – 2012-01-18 06:42:34

+0

DBQ = C:/database.xls ..這裏我們選擇Excel數據庫? – user1063145 2012-01-18 06:51:15

0

要從excel文件中獲取值,應該使用Apache POI。 而解決這一列名也被插入的問題是:

如果列名第1行中,然後從1開始的,而不是10

int i=1; 
do{ 
    { 
    HSSFRow row1 = worksheet.getRow(i);     
    HSSFCell cellA1 = row1.getCell((short) 0); 
    String a1Val = cellA1.getStringCellValue().toString(); 
    System.out.println(a1Val); 
    i++; 
    // And if you want to enter this value in sql database , write a odbc connection and insert query to sql database. 
} 
}while(a1val.!equals(""); 
+0

如何知道有多少行之前查詢Excel表???因爲我不能說我<12 ... – user1063145 2012-01-18 06:39:10

+0

我已編輯碼。假設你有25行數據,那麼這段代碼將運行到第26行。而且由於它不包含任何值,它將退出循環。 – vikiiii 2012-01-18 09:21:51