gpt4 book ai didi

java - spring配置文件中excel的相对路径

转载 作者:行者123 更新时间:2023-12-01 13:27:41 26 4
gpt4 key购买 nike

我编写了一个程序来将火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 接口(interface)。它可用于为多个 bean 执行自定义实例化逻辑,而其他 bean 是基于每个 bean 定义的。

您可以找到下面提到的两种方法

  1. 初始化后的处理
  2. 初始化前的后处理

阅读 Spring 社区的文档 Customizing beans using a BeanPostProcessorCustomizing configuration metadata with a BeanFactoryPostProcessor .

您可以通过它实现您的目标。

关于java - spring配置文件中excel的相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21728168/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com