我编写了一个程序来获取Excel的fire sql查询并获取数据。我已经为此目的使用了jdbc-odbc连接,如下所示。
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
c = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ="
+ request.getSession().getServletContext().getRealPath("WEB-INF")+"\\TCCAddress.xls");
stmnt = c.createStatement();
String query = "select * from [TCC_001$]";
ResultSet rs = stmnt.executeQuery(query);
但我使用的是spring,我想使用spring数据源创建连接。我在下面试过但它不起作用。
<bean id="excelDB"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="sun.jdbc.odbc.JdbcOdbcDriver" />
<property name="url">
<value>jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=classpath:/WEB-INF/TCCAddress.xls</value>
</property>
</bean>
它给出错误
Failure creating file.
如果我使用
<property name="url">
<value>jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=D:/TCCAddress.xls</value>
</property>
它工作正常我可以连接到excel并获取数据。
如何为 TCCAddress.xls提供相对路径
注意我不想使用像“D:/TCCAddress.xls”这样的绝对路径
答案 0 :(得分:1)
看到你的问题我认为你只需要xls文件的相对路径。一旦你得到了这条路,你就可以做更多的事情。
让我试着解释一下如何获得任何资源的相对路径。
假设您已将xls或任何类型的资源放入“/WEB-INF/classes/”。您可以通过查看war文件来检查此内容。
现在你想在部署之后想要那个资源的路径(这里资源是xls文件),那么你可以这样做
您可以通过这行代码获取路径。
String path = this.getClass().getResource("/WEB-INF/classes/xyz.xls").getPath();
这里war文件中的资源位置永远不会改变,而且你也知道。所以在getResource()方法中传递它。
此处您想要更改spring配置运行时,以便在您的问题中使用 BeanPostProcessor接口。它可用于为几个bean执行自定义实例化逻辑,而其他bean则基于每个bean进行定义。
你可以找到下面提到的两种方法
阅读Spring社区Customizing beans using a BeanPostProcessor和Customizing configuration metadata with a BeanFactoryPostProcessor的文档。
您可以通过它实现目标。