小例子: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.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文件,文件名为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();
}
}
}
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android之获取手机上的图片和视频缩略图thumbnails
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 使用Python生成Excel格式的图片
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序