码迷,mamicode.com
首页 > 数据库 > 详细

Java读取excel文件,并存入MySQL数据库

时间:2019-07-12 12:45:31      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:hashset   trace   etl   efault   def   lis   read   connect   case   

2019,刚毕业入职,需要更新数据库某表内容,就写了个Java读取excel文件的代码,代码尚存问题较大,过往阅者看看即可,以此记录小白点滴

初学Java,还没学到io流,jdbc等操作

代码用到poi 一些jar,数据库jar

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;


import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;


public class ReadExcel {

public static void main(String[] args) throws IOException {
String path="C:/deptest.xlsx";
Set<String> set=null;
Map<String, List> mp=readexcel(path);
System.out.println(mp.get("ID"));
}
//连接数据库,将数据插入
public static void adddata() throws IOException{
List list=null;
Map<String, List> mp=null;
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8";
Statement st=null;
String root = "root";
String rootpassword = "root";
//String sql="INSERT INTO c_department (NAME, PASSWORD) VALUES (‘"+name+"‘,‘"+password+"‘)";
String name=null;//字段名
//String sql="INSERT INTO c_department (NAME) VALUES (‘"+name+"‘)";
Connection con=null;
try {
Class.forName(driver);//获取驱动
con=DriverManager.getConnection(url,root,rootpassword);//建立连接
if(con!=null){
//获取表格的list
mp=readexcel("C:/gzdep.xlsx");
for(Object object:list){
name=(String) object;
String sql="INSERT INTO c_department (NAME) VALUES (‘"+name+"‘)";
st = con.createStatement();
st.executeUpdate(sql);
}
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//读取excel文件,返回map<string list>
public static Map<String, List> readexcel(String path) throws IOException{
Map<String, List> mp=new HashMap<String, List>();//用来存放字段名对应数据列
List<String> fieldName=new ArrayList<String>();//用来存放字段
List list=new ArrayList();//用来存储一列的数据
Workbook wok=null;
Sheet sheet=null;
Row row=null;
InputStream io=null;
String data;//用来存放单个数据
if(!path.endsWith(".xlsx")){
return null;
}
try {
io=new FileInputStream(path);
wok=new XSSFWorkbook(io);
sheet=wok.getSheetAt(0);//获取工作表
row=sheet.getRow(0);//获取第一行
int rowNum=sheet.getLastRowNum();//获取最大行
int colnum=row.getPhysicalNumberOfCells();//获取最大列数
//存储第一行字段名到list中
for(int i=0;i<colnum;i++){
String name=row.getCell(i).getStringCellValue();
fieldName.add(name);
for(int j=1;j<=rowNum;j++){//获取单例所有数据
Row row2 = sheet.getRow(j);
Cell cell=row2.getCell(i);
if(cell!=null){
switch (cell.getCellType()) {
case NUMERIC://cell类型为数字时,
list.add((int)cell.getNumericCellValue()+"");
break;
case STRING://类型为字符串时
//data=cell.getStringCellValue();
list.add(cell.getStringCellValue());
break;
default:
list.add("?");
break;
}
}else {
list.add(null);
}
}
mp.put(fieldName.get(i),list);
list=new ArrayList();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
io.close();
}
return mp;
}
}

Java读取excel文件,并存入MySQL数据库

标签:hashset   trace   etl   efault   def   lis   read   connect   case   

原文地址:https://www.cnblogs.com/2019z/p/11175278.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!