java直接访问excel的demo

简介: 今天一个哥们问,用jdbc能不能把excel作为数据源访问? 考虑之前写的一个java访问access的例子,稍加修改,测试可以用。 测试例子,新建一个excel,命名为Mobile.

今天一个哥们问,用jdbc能不能把excel作为数据源访问?

考虑之前写的一个java访问access的例子,稍加修改,测试可以用。

测试例子,新建一个excel,命名为Mobile.xls,在Sheet1里写入如下两行:

手机号

13900000001.0

 

java代码如下:

 

import java.sql.*;

public class javaExcel{

 public static void main(String args[]) throws Exception{

  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

  String dburl ="jdbc:odbc:driver={Microsoft Excel Driver (*.xls)};DBQ=Mobile.xls";//此为NO-DSN方式

  //String dburl ="jdbc:odbc:odbcName";//此为ODBC连接方式

  Connection conn=DriverManager.getConnection(dburl);

  Statement stmt=conn.createStatement();

  ResultSet rs=stmt.executeQuery("select Top 20 * from [Sheet1$]");

  while(rs.next()){

   System.out.println(rs.getString(1));

  }

  rs.close();

  stmt.close();

  conn.close();

 }

}

运行以上代码,显示:

13900000001.0

 

 

没有读到第一行,考虑到程序是否默认第一行为列名了呢?试一下用metadata是否可以拿到。如下修改代码:

 

import java.sql.*;

public class javaExcel{

 public static void main(String args[]) throws Exception{

  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

  String dburl ="jdbc:odbc:driver={Microsoft Excel Driver (*.xls)};DBQ=Mobile.xls";//此为NO-DSN方式

  //String dburl ="jdbc:odbc:odbcName";//此为ODBC连接方式

  Connection conn=DriverManager.getConnection(dburl);

  PreparedStatement stmt=conn.prepareStatement("select Top 20 * from [Sheet1$]");

  ResultSet rs=stmt.executeQuery();

  ResultSetMetaData rsmd=stmt.getMetaData();

  System.out.println(rsmd.getColumnName(1));

  while(rs.next()){

   System.out.println(rs.getString(1));

  }

  rs.close();

  stmt.close();

  conn.close();

 }

}

运行以上代码,显示:

 

 

手机号

13900000001.0

 

 

看来猜测没错。

 

此方法使用excel,只在windows并安装excel的机器上测试过,没有测试其他环境。

此方法的限制,对数据类型受制于excel,细心点可以看到手机号后面多了一个.0,变成了数字型;所以访问excel还是建议使用jxls或jexcelapi等api来操作,这样可以访问类型更丰富的、布局更复杂的excel。

jxls:

http://jxls.sourceforge.net

jexcelapi:

http://jexcelapi.sourceforge.net/

目录
相关文章
|
21天前
|
存储 NoSQL Java
Java数据库编程指南:实现高效数据存储与访问
【4月更文挑战第2天】Java开发者必须掌握数据库编程,尤其是JDBC,它是连接数据库的标准接口。使用Spring JDBC或JPA能简化操作。选择合适的JDBC驱动,如MySQL Connector/J,对性能至关重要。最佳实践包括事务管理、防SQL注入、优化索引和数据库设计。NoSQL数据库如MongoDB也日益重要,Java有对应的驱动支持。理解这些概念和技术是构建高效数据库应用的基础。
Java数据库编程指南:实现高效数据存储与访问
|
5天前
|
安全 Java API
java借助代理ip,解决访问api频繁导致ip被禁的问题
java借助代理ip,解决访问api频繁导致ip被禁的问题
|
7天前
|
SQL 缓存 Java
Java数据库连接池:优化数据库访问性能
【4月更文挑战第16天】本文探讨了Java数据库连接池的重要性和优势,它能减少延迟、提高效率并增强系统的可伸缩性和稳定性。通过选择如Apache DBCP、C3P0或HikariCP等连接池技术,并进行正确配置和集成,开发者可以优化数据库访问性能。此外,批处理、缓存、索引优化和SQL调整也是提升性能的有效手段。掌握数据库连接池的使用是优化Java企业级应用的关键。
|
1月前
|
Java
Java包及访问限定
Java包及访问限定
8 0
|
1月前
|
SQL Java 关系型数据库
Java数据库访问
Java数据库访问
|
1月前
|
存储 人工智能 Java
Java的数组访问
Java的数组访问
13 0
|
1月前
|
SQL Java easyexcel
【Java】百万数据excel导出功能如何实现
【Java】百万数据excel导出功能如何实现
126 0
|
1月前
|
前端开发 Java Maven
java集成opencv(不踩坑),实现人脸检测小demo(含上传人像图片识别接口),windows,IDEA,Springboot
java集成opencv(不踩坑),实现人脸检测小demo(含上传人像图片识别接口),windows,IDEA,Springboot
176 0
|
2月前
|
Java
POI上传excel的java后台逻辑
POI上传excel的java后台逻辑