繁体   English   中英

Spring配置文件中excel的相对路径

[英]relative path for excel in spring configuration file

我编写了一个程序以将fire sql查询获取到Excel并获取数据。 为此,我已将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”之类的绝对路径

看到您的问题,我认为您只需要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的基础上定义的。

在那你可以找到下面提到的两种方法

  1. postProcessAfterInitialization
  2. postProcessBeforeInitialization

阅读Spring社区的本文档,该文档使用BeanPostProcessor 定制 bean使用BeanFactoryPostProcessor定制配置元数据

您可以通过它实现目标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM