Java读取excel文件,并存入MySQL数据库
Posted 2019z
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java读取excel文件,并存入MySQL数据库相关的知识,希望对你有一定的参考价值。
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数据库的主要内容,如果未能解决你的问题,请参考以下文章
Java 读取Excel 文件存放到MySQL 数据库中,读取Excel 文件方法封装好的。用
python—mysql数据库读取表1获取name作为参数,传入访问表2获取age,结果存入excel