您的位置:首页 > 编程语言 > Java开发

小例子:java利用poi读取excel中数据并导入数据库

2015-12-17 21:09 851 查看
问题描述:

文件夹下有若干excel文件,文件名为10.教育局.xls   11.卫生院.xls     ................有很多;中间的汉字为单位名称,需要导入数据库,每个单位名称要有一个单位id匹配;每个excel中有若干个sheet页的名字,每个名字即为科室名称,要导入数据库并有科室id

解决方案:

利用poi即可读取出每个sheet页的名字

读取单位名称:

用File类中的方法可获取到每个excel文件名,由于所需要的单位名称就夹在两个“.”之间,可用indexOf()和lastIndexOf()获取到两个点的下标,然后获取子串得到单位名称

A.java

package importry;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class A {

public static void main(String[] args) {
// TODO Auto-generated method stub
String path = "C:\\Users\\Administrator\\Desktop\\尝试";
File file = new File(path);
File[] filelist = file.listFiles();
C cc =new C();
//filelist[0].toString()为每个excel文件的完整路径
System.out.println("该文件夹下的文件个数:"+filelist.length);
for(int i=0;i<filelist.length;++i)
{
try {
//对文件名进行字符串的相关处理,获得所需要的单位名称
String s = filelist[i].getName();
String dwmc = s.substring(s.indexOf(46)+1,s.lastIndexOf(46));
//导入单位名称
cc.import_dw(dwmc);
InputStream is = new FileInputStream(filelist[i].toString());
HSSFWorkbook wb = new HSSFWorkbook(is);//创建工作簿
int sheetnumber = wb.getNumberOfSheets();//获取此工作簿下sheet页的个数
for(int j=0;j<sheetnumber;++j)
{
HSSFSheet sheet = wb.getSheetAt(j);//当前sheet页
String ksmc = sheet.getSheetName();//每个sheet页名字即科室名称
cc.import_ks(ksmc);//导入科室名称
}
//System.out.println();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}


B.java
package importry;
import java.sql.Connection;
import java.sql.DriverManager;
//数据库操作类
public class B {
public Connection getconnection()
{
Connection conn=null;
String url ="jdbc:mysql://localhost:3306/mydb";
String user = "root";
String password="mysql";
//1.加载驱动
try {
Class.forName("com.mysql.jdbc.Driver");
//2.连接数据库
conn = DriverManager.getConnection(url,user,password);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
}
C.java
package importry;

import java.sql.Connection;
import java.sql.Statement;
//导入的操作类
public class C {
public void import_dw(String dwmc)//导入单位名称
{
B bb =new B();
Connection conn=bb.getconnection();
try {
Statement sm =conn.createStatement();
//向已有的dw表中插入单位名称,id会自动增加
String sql = "insert into dw (dwmc) values('"+dwmc+"')";
sm.executeUpdate(sql);
sm.close();
conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void import_ks(String ksmc)//导入科室名称
{
B bb =new B();
Connection conn=bb.getconnection();
try {
Statement sm =conn.createStatement();
//向已有的ks表中插入科室名称,id会自动增加
String sql = "insert into ks (ksmc) values('"+ksmc+"')";
sm.executeUpdate(sql);
sm.close();
conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 excel poi java