我想從Excel表插入到SQL數據庫使用Java或JSP的行。最初我使用ODBC連接了兩個數據庫。但我想把一個excel文件作爲用戶的輸入。爲此,我創建了一個文件瀏覽器並上傳文件。從一個文件中插入行插入數據庫
- 如何連接上傳的文件和ODBC連接?
- 如何查詢上傳的文件?
如果我使用Apache POI來解析Excel文件,我會得到列名並且也會被插入。我怎樣才能避免這種情況?
a)如何插入具有特定列名的行,而不是列號?
請給我提供的代碼片段
我想從Excel表插入到SQL數據庫使用Java或JSP的行。最初我使用ODBC連接了兩個數據庫。但我想把一個excel文件作爲用戶的輸入。爲此,我創建了一個文件瀏覽器並上傳文件。從一個文件中插入行插入數據庫
如果我使用Apache POI來解析Excel文件,我會得到列名並且也會被插入。我怎樣才能避免這種情況?
a)如何插入具有特定列名的行,而不是列號?
請給我提供的代碼片段
1)我如何連接與ODBC連接上傳的文件?
你將不得不編寫一個服務來將excel映射到數據庫,如果這就是你要求的?
是的...使用DSN我們可以做到這一點...但如何將上傳的文件與ODBC連接? – user1063145 2012-01-18 06:30:59
您可以將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
DBQ = C:/database.xls ..這裏我們選擇Excel數據庫? – user1063145 2012-01-18 06:51:15
要從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("");
如何知道有多少行之前查詢Excel表???因爲我不能說我<12 ... – user1063145 2012-01-18 06:39:10
我已編輯碼。假設你有25行數據,那麼這段代碼將運行到第26行。而且由於它不包含任何值,它將退出循環。 – vikiiii 2012-01-18 09:21:51
循環請說明你的問題。 – DagR 2012-01-18 06:29:26