我在使用jdbc连接连接平面文件(.txt,.xml,.csv,.xls等等)时出现问题,该文件存在于应用程序中。
搜索后,我在下面找到了一些建议。
我试过第一个(xlsql),下面就是这个过程。 首先创建核心java项目并加载来自xlsql的jar文件。 下面是代码
Class.forName("com.nilostep.xlsql.jdbc.xlDriver");
final String dir = System.getProperty("user.dir")+"\\db\\xl";
conn = DriverManager.getConnection("jdbc:nilostep:excel:/"+dir);
Statement stmt = con.createStatement();
String sql = "select * from Sheet1$";
ResultSet rs = stmt.executeQuery(sql);
if(rs.next()){
System.out.println(rs.getString(1));
}else{
System.out.println("nodata....");
}
说Sheet1 $表不存在。
请帮帮我。
答案 0 :(得分:0)
xlsql的原理有点复杂,它使用hsqldb或mysql作为sql引擎,使用excels文件中的数据创建相关数据库和表,然后通过数据库执行查询。它对待:
directory -> database
excel file -> schema
sheet -> table
所以它使用模式前缀访问表。例如:
String sql = "select * from \"demo.xlsqly7\"";
这里"演示"是没有扩展名的excel文件名,xlsqly7是工作表名称。在" XlSQL-Y8.zip"或" xlsql-Y7.zip" ,有一个例子" TestXlsql.java"。我还写了另一篇:
public static void main(String[] args) throws Exception {
Class.forName("com.nilostep.xlsql.jdbc.xlDriver");
String dir = "C:\\Temp\\xlsql-Y7";
Connection con = DriverManager.getConnection("jdbc:nilostep:excel:"+dir);
Statement stmt = con.createStatement();
String sql = "select * from \"Book1.MergedResult\"";
ResultSet rs = stmt.executeQuery(sql);
if(rs.next())
{
System.out.println(rs.getString(1));
}
else{
System.out.println("nodata....");
}
}
另一个限制是工作表的第一行必须是必须以大写字母开头的列名,否则该工作表将被视为无效。
这是关于XLSQL的最佳文档:http://blog.csdn.net/ailvey/article/details/8779119,遗憾的是,它是用中文编写的。