使用JDBC 8连接到Excel

时间:2016-07-27 15:02:09

标签: java excel jdbc

我编写的代码将使用odbc网桥从Excel查询数据。现在因为在java8中没有对odbc的支持,我正在寻找相同的替代方案。我有近32种不同的suce程序。即从Excel数据库查询。以下是一个示例程序。

private void getTheDetailedDataForRca(String userName, XSSFWorkbook workbook, XSSFSheet sheet) {
        // System.out.println("ph2");
        try {
            DecimalFormat df2 = new DecimalFormat("#.##");
            HashMap<String, HashMap<String, Double>> myArray;
            myArray = new HashMap<String, HashMap<String, Double>>();
            String user = "%" + userName + "%";

            String dburl = path.getDBUrl();

            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            myConn = DriverManager.getConnection(dburl);
            String queryString = "select Error As Err, Sum(TotalErrors) as Errors from [Quality Sheet$] where Associate like ? group By Error";
            PreparedStatement ps = myConn.prepareStatement(queryString);
            ps.setString(1, user);
            ResultSet rs = ps.executeQuery();
            myArray.put(userName, new HashMap<String, Double>());

            while (rs.next()) {
                double inputValue = rs.getDouble("Errors");
                String fin = df2.format(inputValue);
                myArray.get(userName).put(rs.getString("Err"), Double.parseDouble(fin));
            }
            ps.close();
            myConn.close();
            printMapOne(myArray, userName, workbook, sheet);
        } catch (Exception e) {
            System.out.println(e + "\t" + "in finals sheet B2");
        }
    }

我的dburl是

public String getDBUrl() {
    return "jdbc:odbc:Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=C:\\Users\\" + getSystemId
            + "\\Desktop\\Quality Sheets\\quality_template.xlsx;";
}

我在网上查了一下,令我惊讶的是,除了建议使用POI之外我什么都没找到。我尝试使用UCanAccess,但这只支持Access数据库。有人可以让我知道odbc的任何替代,以便我不需要编写整个代码。

我已经尝试了Removal of JDBC ODBC bridge in java 8

给出的解决方案

我在cmd中收到如下信息。

C:\Users\u0138039\Desktop\sun>jar -cvf jdbc.jar sun
sun : no such file or directory
added manifest

但是在文件夹中创建了一个jar。

我在C:\Program Files (x86)\Java\jdk1.8.0_101\jre\lib粘贴了相同的jdbc驱动程序,并将jdbcodbc.dll复制到C:\Program Files (x86)\Java\jre1.8.0_101\bin,重新启动,令我惊讶的是,我得到了相同的java.sql.SQLException: No suitable driver found for jdbc:odbc异常。

由于

1 个答案:

答案 0 :(得分:0)

progress.com/jdbc/sequelink如果有人还在寻找值得信赖的jdbc odbc桥,那么还有一个。 https://www.progress.com/blogs/jdbc-odbc-bridge-replacement-yields-performance-boost这篇博客讨论了他们的桥梁如何能够提升310%的性能。