2013-08-12 48 views
4

我想使用jdbc或其他方法連接到excel表格,但我不想用相同的管理工具指定DSN。他們是否使用代碼來完成它?如果是的話如何?使用jdbc連接到excel表格而不指定DSN到Excel表格

在此先感謝

+0

有很多從Java訪問excel的解決方案。 Apache POI是我使用的東西 – Jayan

+1

我使用的文件大於15 MB。使用POI會導致內存不足錯誤。因爲POI改掉不是整個表加載到JVM一次 –

回答

6

也可以連接到一個電子表格,而不使用DSN,其內部代碼提供了一個更靈活的方式在利益沒有訪問Excel文件到客戶端註冊表以指向JDBC來定義所需的DSN。

java.sql.DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Excel Driver 
(*.xls)};DBQ=C:/Documents and Settings/myPath/Desktop/qa.xls"); 

這裏DBQ定義了目標電子表格文件(qa.xls)的路徑:如果沒有DSN,數據庫連接如下,請不構成JDBC URL的差產生。反斜槓和正斜槓都能正常工作。

來源:Available source

+0

我收到以下錯誤 值java.sql.SQLException:[微軟] [ODBC驅動程序管理器]數據源名稱找不到和未指定默認驅動程序 我已經添加了ojdbc jar –

+0

提供默認驅動程序也 –

+0

默認驅動程序是什麼意思? –

1

什麼你躲避到一個DSN連接字符串。有關詳細信息,請參閱http://support.microsoft.com/kb/165866 。 然而,由傑恩提到我會選擇爲Apache POI 14

+0

我使用的文件大於15 MB。使用POI會導致內存不足錯誤。由於POI會立即將整個表單加載到JVM中 –

+1

15MB是花生。更改VM設置以允許更多堆和/或堆棧空間。 – Tarik

+0

我正在開發的系統被不同的用戶在不同的機器上使用。我不認爲這是正確的方法 –

0

嘗試從Microsoft Excel Driver(*.xls)更改驅動器名司機做Microsoft Excel(*.xls)

java.sql.DriverManager.getConnection("jdbc:odbc:Driver={Driver do Microsoft Excel(*.xls)};DBQ=C:/Documents and Settings/myPath/Desktop/qa.xls");

,如果你想更新Excel文件使用以下連接字符串:

java.sql.DriverManager.getConnection("jdbc:odbc:Driver={Driver do Microsoft Excel(*.xls)};DBQ=C:/Documents and Settings/myPath/Desktop/qa.xls;ReadOnly=0");