怎么通过java操作excel向数据库中添加数据
java连接Excel数据库读取

java连接Excel数据库读取,写入,操纵Excel表格java连接MicroSoft excel 与java连接txt文档有很大的区别,其中往excel 中插入数据与往my sql中插入数据很相似,也要用到相关的sql语句,只是具体的语法有些许的差别。
jxl jar包是java连接excel表格很重要也很好用的第三方支持,现将示例如下。
一、导入jxl jar包二、往Excel表格中写数据WritableWorkbook wwb = null;// 创建可写入的Excel工作簿String fileName = "D://write3.xls";//以fileName为文件名来创建一个Workbookwwb = Workbook.createWorkbook(new File(fileName));// 创建工作表WritableSheet ws = wwb.createSheet("Test Shee 1", 0);//要插入到的Excel表格的行号,默认从0开始int row;//要插入到的Excel表格的列号,默认从0开始Label labelC = new Label(row, columne, String s1);Label lableD = new Label(columne, row, String s2);ws.addCell(labelC);ws.addCell(lableD);//写进文档wwb.write();// 关闭Excel工作簿对象wwb.close();这样就将字符串s1写入到了第row列,第columne行的格子中,将字符串s2写入到了第columne列,第row 行的格子中了。
三、从Excel表格中读出数据Workbook info = Workbook.getWorkbook(new File("d:/write.xls"));Sheet sheet = info.getSheet(0);Cell c = sheet.getCell(0,0);String s = c.getContents();这样s中存的就是write.xls表格中,sheet1中的第一行第一列格子中的值。
课题_使用java技术将Excel表格内容导入mysql数据库

课题_使⽤java技术将Excel表格内容导⼊mysql数据库使⽤java技术将Excel表格内容导⼊mysql数据库1、添加POI jar包到项⽬的lib⽬录下2、Excel⽂件⽬录:d://excel.xls3、数据库字段为:num1 num2 num3 num4 num5 num64、数据库名:blog5、表名:test6、编写类:连接mysql的字符串⽅法、插⼊的⽅法、实体类1 import java.io.FileInputStream;2 import java.io.FileNotFoundException;3 import java.io.IOException;4 import /doc/9b6755418.htmlmons.logging.Log;5 import /doc/9b6755418.htmlmons.logging.LogFactory;6 import /doc/9b6755418.htmlermodel.HSSFCell;7 import /doc/9b6755418.htmlermodel.HSSFRow;8 import /doc/9b6755418.htmlermodel.HSSFSheet;9 import /doc/9b6755418.htmlermodel.HSSFWorkbook;1011public class TestExcel {12//记录类的输出信息13static Log log = LogFactory.getLog(TestExcel.class);14//获取Excel⽂档的路径15public static String filePath = "D://excel.xls";16public static void main(String[] args) {17try {18// 创建对Excel⼯作簿⽂件的引⽤19 HSSFWorkbook wookbook = new HSSFWorkbook(new FileInputStream(filePath));21// 在Excel⽂档中,第⼀张⼯作表的缺省索引是022 // 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);23 HSSFSheet sheet = wookbook.getSheet("Sheet1");25//获取到Excel⽂件中的所有⾏数26int rows = sheet.getPhysicalNumberOfRows(); 28//遍历⾏29for (int i = 0; i < rows; i++) {30// 读取左上端单元格31 HSSFRow row = sheet.getRow(i);32// ⾏不为空33if (row != null) {34//获取到Excel⽂件中的所有的列35int cells = row.getPhysicalNumberOfCells();36 String value = "";37//遍历列38for (int j = 0; j < cells; j++) {39//获取到列的值40 HSSFCell cell = row.getCell(j);41if (cell != null) {42switch (cell.getCellType()) {43case HSSFCell.CELL_TYPE_FORMULA: 44break;45case HSSFCell.CELL_TYPE_NUMERIC:46 value += cell.getNumericCellValue() + ",";47break;48case HSSFCell.CELL_TYPE_STRING:49 value += cell.getStringCellValue() + ",";50break;51default:52 value += "0";53break;54 }55 }56 }57// 将数据插⼊到mysql数据库中58 String[] val = value.split(",");59 TestEntity entity = new TestEntity();60 entity.setNum1(val[0]);61 entity.setNum2(val[1]);62 entity.setNum3(val[2]);63 entity.setNum4(val[3]);64 entity.setNum5(val[4]);65 entity.setNum6(val[5]);66 TestMethod method = new TestMethod();67 method.Add(entity);68 }69 }70 } catch (FileNotFoundException e) {71 e.printStackTrace();72 } catch (IOException e) {73 e.printStackTrace();74 }75 }76 }。
如何用Java实现把excel表中的数据导入到mysql数据库已有的表中

如何用Java实现把excel表中的数据导入到mysql数据库已有的表中?悬赏分:15 |解决时间:2010-12-23 13:53 |提问者:quce227如何用Java实现把excel表中的数据导入到mysql数据库已有的表中?数据库中表的字段已定好~~问题补充:主要是excel中的字段和数据库表中的字段匹配然后批量导入(插入),能否给一个实例最佳答案java 读excel 还是比较方便简单的,原理就是,先用java 读取excel,然后,一行行的写入数据库,字段的话,你自己程序里面写就行了,给你个例子:从Excel读取数据,生成新的Excel,以及修改Excelpackage common.util;import jxl.*;import jxl.format.UnderlineStyle;import jxl.write.*;import jxl.write.Number;import jxl.write.Boolean;import java.io.*;/*** Created by IntelliJ IDEA.* User: xl* Date: 2005-7-17* Time: 9:33:22* To change this template use File | Settings | File Templates.*/public class ExcelHandle{public ExcelHandle(){}/*** 读取Excel** @param filePath*/public static void readExcel(String filePath){try{InputStream is = new FileInputStream(filePath);Workbook rwb = Workbook.getWorkbook(is);//Sheet st = rwb.getSheet("0")这里有两种方法获取sheet表,1为名字,而为下标,从0开始Sheet st = rwb.getSheet("original");Cell c00 = st.getCell(0,0);//通用的获取cell值的方式,返回字符串String strc00 = c00.getContents();//获得cell具体类型值的方式if(c00.getType() == BEL){LabelCell labelc00 = (LabelCell)c00;strc00 = labelc00.getString();}//输出System.out.println(strc00);//关闭rwb.close();}catch(Exception e){e.printStackTrace();}}/*** 输出Excel** @param os*/public static void writeExcel(OutputStream os){try{/*** 只能通过API提供的工厂方法来创建Workbook,而不能使用WritableWorkbook的构造函数,* 因为类WritableWorkbook的构造函数为protected类型* method(1)直接从目标文件中读取WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile));* method(2)如下实例所示将WritableWorkbook直接写入到输出流*/WritableWorkbook wwb = Workbook.createWorkbook(os);//创建Excel工作表指定名称和位置WritableSheet ws = wwb.createSheet("Test Sheet 1",0);//**************往工作表中添加数据*****************//1.添加Label对象Label label = new Label(0,0,"this is a label test");ws.addCell(label);//添加带有字型Formatting对象WritableFont wf = newWritableFont(WritableFont.TIMES,18,WritableFont.BOLD,true);WritableCellFormat wcf = new WritableCellFormat(wf);Label labelcf = new Label(1,0,"this is a label test",wcf);ws.addCell(labelcf);//添加带有字体颜色的Formatting对象WritableFont wfc = newWritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false, UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);WritableCellFormat wcfFC = new WritableCellFormat(wfc);Label labelCF = new Label(1,0,"This is a Label Cell",wcfFC);ws.addCell(labelCF);//2.添加Number对象Number labelN = new Number(0,1,3.1415926);ws.addCell(labelN);//添加带有formatting的Number对象NumberFormat nf = new NumberFormat("#.##");WritableCellFormat wcfN = new WritableCellFormat(nf);Number labelNF = new jxl.write.Number(1,1,3.1415926,wcfN);ws.addCell(labelNF);//3.添加Boolean对象Boolean labelB = new jxl.write.Boolean(0,2,false);ws.addCell(labelB);//4.添加DateTime对象jxl.write.DateTime labelDT = new jxl.write.DateTime(0,3,new java.util.Date());ws.addCell(labelDT);//添加带有formatting的DateFormat对象DateFormat df = new DateFormat("dd MM yyyy hh:mm:ss");WritableCellFormat wcfDF = new WritableCellFormat(df);DateTime labelDTF = new DateTime(1,3,newjava.util.Date(),wcfDF);ws.addCell(labelDTF);//添加图片对象,jxl只支持png格式图片File image = new File("f:\\2.png");WritableImage wimage = new WritableImage(0,1,2,2,image);ws.addImage(wimage);//写入工作表wwb.write();wwb.close();}catch(Exception e){e.printStackTrace();}}/*** 拷贝后,进行修改,其中file1为被copy对象,file2为修改后创建的对象* 尽单元格原有的格式化修饰是不能去掉的,我们还是可以将新的单元格修饰加上去,* 以使单元格的内容以不同的形式表现* @param file1* @param file2*/public static void modifyExcel(File file1,File file2){try{Workbook rwb = Workbook.getWorkbook(file1);WritableWorkbook wwb =Workbook.createWorkbook(file2,rwb);//copyWritableSheet ws = wwb.getSheet(0);WritableCell wc = ws.getWritableCell(0,0);//判断单元格的类型,做出相应的转换if(wc.getType == BEL){Label label = (Label)wc;label.setString("The value has been modified");}wwb.write();wwb.close();rwb.close();}catch(Exception e){e.printStackTrace();}}//测试public static void main(String[] args){try{//读ExcelExcelHandle.readExcel("f:/testRead.xls");//输出ExcelFile fileWrite = new File("f:/testWrite.xls");fileWrite.createNewFile();OutputStream os = new FileOutputStream(fileWrite);ExcelHandle.writeExcel(os);//修改ExcelExcelHandle.modifyExcel(new file(""),new File(""));}catch(Exception e){e.printStackTrace();}}}2.在jsp中做相关测试,创建一个writeExcel.jsp<%response.reset();//清除Bufferresponse.setContentType("application/vnd.ms-excel");File fileWrite = new File("f:/testWrite.xls");fileWrite.createNewFile();new FileOutputStream(fileWrite);ExcelHandle.writeExcel(new FileOutputStream(fileWrite));%>在IE中浏览writeExcel.jsp就可以动态生成Excel文档了,其中response.setContentType("application/vnd.ms- excel");语句必须要,才能确保不乱码,在jsp中输入<%@page contentType="application/vnd.ms-excel;charset=GBK"%>不行。
java读取excel文件数据导入mysql数据库

java读取excel⽂件数据导⼊mysql数据库这是我来公司的第⼆周的⼀个⼩学习任务,下⾯是实现过程:1.建⽴maven⼯程(⽅便管理jar包)在pom.xml导⼊ jxl,mysql-connector 依赖可以在maven仓库搜索2.建⽴数据库连接类,数据库对应实体类2.编写数据库表对应的实体类,get、set⽅法等3.下⾯是编写读取excel⽂件的类,和运⾏主类package service;import java.io.File;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import jxl.Sheet;import jxl.Workbook;import excel.DB;import excel.Student;public class StudentService {/*** 查询Student表中所有的数据* @return*/public static List<Student> getAllByDb(){List<Student> list=new ArrayList<Student>();try {DB db=new DB();String sql="select * from student";ResultSet rs= db.Search(sql, null);while (rs.next()) {int id=rs.getInt("id");String s_name=rs.getString("s_name");String age=rs.getString("age");String address=rs.getString("address");list.add(new Student(id, s_name, age,address));}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return list;}/*** 查询指定⽬录中电⼦表格中所有的数据* @param file ⽂件完整路径* @return*/public static List<Student> getAllByExcel(String file){List<Student> list=new ArrayList<Student>();try {Workbook rwb=Workbook.getWorkbook(new File("F:\\student.xls"));Sheet rs=rwb.getSheet(0);//表int clos=rs.getColumns();//得到所有的列int rows=rs.getRows();//得到所有的⾏System.out.println("表的列数:"+clos+" 表的⾏数:"+rows);for (int i = 1; i < rows; i++) {for (int j = 0; j < clos; j++) {//第⼀个是列数,第⼆个是⾏数String id=rs.getCell(j++, i).getContents();//默认最左边编号也算⼀列所以这⾥得j++ String s_name=rs.getCell(j++, i).getContents();String age=rs.getCell(j++, i).getContents();String address=rs.getCell(j++, i).getContents();System.out.println("id:"+id+" name:"+s_name+" sex:"+age+" address:"+address); list.add(new Student(Integer.parseInt(id), s_name,age,address));}}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return list;}/*** 通过Id判断是否存在* @param id* @return*/public static boolean isExist(int id){try {DB db=new DB();ResultSet rs=db.Search("select * from student where id=?", new String[]{id+""});if (rs.next()) {return true;}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return false;}public static void main(String[] args) {System.out.println(isExist(1));}}运⾏主类:package service;import java.util.List;import excel.DB;import excel.Student;public class TestExcelToDb {public static void main(String[] args) {//得到表格中所有的数据List<Student> listExcel=StudentService.getAllByExcel("F:\\student.xls");DB db=new DB();for (Student student : listExcel) {int id=student.getId();System.out.println(id);if (!StudentService.isExist(id)) {//不存在就添加String sql="insert into student (id,s_name,age,address) values(?,?,?,?)";String[] str=new String[]{id+"",student.getS_name(),student.getAge(),student.getAddress()+""};db.AddU(sql, str);}else {//存在就更新String sql="update student set s_name=?,age=?,address=? where id=?";String[] str=new String[]{student.getS_name(),student.getAge(),student.getAddress()+"",id+""};db.AddU(sql, str);}}}}数据库截图:[Excel数据表头要与数据库字段对应]总结:以上是使⽤了 jxl实现的读取excel⽂件内容,并且将数据传到mysql,缺陷是:jxl仅⽀持EXCEL2003。
java实现excel表格导入数据库表

java实现excel表格导⼊数据库表导⼊excel就是⼀个上传excel⽂件,然后获取excel⽂件数据,然后处理数据并插⼊到数据库的过程⼀、上传excel前端jsp页⾯,我的是index.jsp在页⾯中我⾃⼰加⼊了⼀个下载上传⽂件的功能,其中超链接就是下载<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Insert title here</title></head><script type="text/javascript" src="jquery/1.7.2/jquery-1.7.2.min.js"></script><script type="text/javascript" src="jquery/jquery.form.js"></script><script type="text/javascript">function test1(){var form =new FormData(document.getElementById("uploadForm"));$.ajax({contentType:"multipart/form-data",url:"servlet/UploadHandleServlet",type:"post",async:false,data:form,dataType:"json",processData: false, // 告诉jQuery不要去处理发送的数据contentType: false, // 告诉jQuery不要去设置Content-Type请求头success:function(data){var result=eval(data);var filePath=result[0].filePath;//alert(filePath);var fileName = result[0].imageName;$("#download").attr("href","servlet/DownLoadServlet?filePath="+filePath);document.getElementById("download").innerHTML = fileName;//上传⽂件后得到路径,然后处理数据插⼊数据库表中importExcel(filePath);}});}function importExcel(filePath){$.ajax({url:"${pageContext.request.contextPath}/user/insertUserByExcelPath",type:"post",data:{"filePath":filePath},success:function(data){}});}</script><body>导⼊excel表格<form id="uploadForm" action="" method="post" enctype="multipart/form-data"><table><tr><td>上传⽂件:</td><td><input type="file" name="fileName" id="fileName"/></td></tr></table></form><button id="uploadFile" onclick="test1();">确定</button><!-- servlet/DownLoadServlet -->上传的⽂件<a id="download" href=""></a></body></html>后端的上传的servlet,其中需要commons-fileupload-1.2.1.jar的⽀持,然后我的保存路径savePath是⾃⼰写的⼀个配置⽂件来的,这⾥可以写上⾃⼰的上传⽂件所保存的路径就⾏,返回的是⼀个json,包括⽂件路径还有⽂件名package com.huang.servlet;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.Iterator;import java.util.List;import java.util.UUID;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import mons.fileupload.FileItem;import mons.fileupload.disk.DiskFileItem;import mons.fileupload.FileUploadBase;import mons.fileupload.FileUploadException;import mons.fileupload.ProgressListener;import mons.fileupload.disk.DiskFileItemFactory;import mons.fileupload.servlet.ServletFileUpload;import mons.fileupload.util.Streams;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.stereotype.Controller;import er;import com.huang.utils.Excel2Bean;import com.huang.utils.PropertiesUtil;/*** Servlet implementation class UploadHandleServlet*/@WebServlet("/UploadHandleServlet")public class UploadHandleServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public UploadHandleServlet() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("进⼊servlet");DiskFileItemFactory fac = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(fac);upload.setHeaderEncoding("UTF-8");// 获取多个上传⽂件List fileList = null;try {fileList = upload.parseRequest(request);} catch (FileUploadException e) {// TODO Auto-generated catch blocke.printStackTrace();}// 遍历上传⽂件写⼊磁盘Iterator it = fileList.iterator();while (it.hasNext()) {Object obit = it.next();if (obit instanceof DiskFileItem) {DiskFileItem item = (DiskFileItem) obit;// 如果item是⽂件上传表单域// 获得⽂件名及路径String fileName = item.getName();if (fileName != null) {String fName = item.getName().substring(item.getName().lastIndexOf("\\") + 1);String formatName = fName.substring(stIndexOf(".") + 1);// 获取⽂件后缀名String savePath = PropertiesUtil.getInstance().getProperty("uploadFile");// String savePath = this.getServletContext().getRealPath("/WEB-INF/upload");File expsfile = new File(savePath);if (!expsfile.exists()) {// 创建⽂件夹expsfile.mkdirs();}String realPath = savePath+"/"+ UUID.randomUUID().toString()+"."+formatName;System.out.println("realPath:"+realPath);BufferedInputStream bis = new BufferedInputStream(item.getInputStream());// 获得⽂件输⼊流BufferedOutputStream outStream = new BufferedOutputStream(new FileOutputStream(new File(realPath)));// 获得⽂件输出流Streams.copy(bis, outStream, true);// 开始把⽂件写到你指定的上传⽂件夹// 上传成功,则插⼊数据库File file = new File(realPath);if (file.exists()) {// request.setAttribute("realPath", realPath);// request.getRequestDispatcher("/user/insertUserByExcelPath").forward(request, response);// 返回⽂件路径String imageName = file.getName();String json = "[{\"filePath\":\""+ realPath+ "\",\"imageName\":\"" + imageName + "\"}]";response.reset();response.setContentType("text/json");response.setCharacterEncoding("UTF-8");response.getWriter().write(json);// response.getWriter().write(realPath);response.getWriter().flush();}}}}}}⼆、处理excel表格并得到含有Javabean的list在⽤ajax调⽤servlet上传⽂件后得到路径和⽂件名,然后进⾏excel数据处理,在前端的页⾯上调⽤importExcel()的js函数,传⼊刚刚得到的⽂件路径我这⾥⽤的是ssm框架中的controller(我⾃⼰也学习⼀下),这⾥也可以⽤servlet,或者Struts等。
Java如何将Excel数据导入到数据库

Java如何将Excel数据导⼊到数据库本⽂实例为⼤家分享了Java将Excel数据导⼊到数据库的具体代码,供⼤家参考,具体内容如下所⽤Jar包1. sqljdbc4.jar连接数据库的Jar包(根据数据库的不同进⾏选择,我⽤的SqlServer2008)2.Jxl.jar访问Excel的Jar包package xsl;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import jxl.Cell;import jxl.Sheet;import jxl.Workbook;import jxl.read.biff.BiffException;public class Test {public static void main(String[] args) {//定义⼀维数组,存放Excel表⾥的每⼀⾏的各个列的数据Object[] obj = null;//定义List集合,存放每⼀⾏的数据ArrayList<Object[]> list = new ArrayList<Object[]>();String filePath = "C:/Users/022*******/Desktop/student.xls";InputStream is = null;Workbook rwb = null;try {is = new FileInputStream(filePath);//定义⽂本输⼊流} catch (FileNotFoundException e) {e.printStackTrace();}try {rwb = Workbook.getWorkbook(is);//打开Workbook} catch (BiffException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}//获取Excel表的Sheet1区域的数据Sheet sht = rwb.getSheet("Sheet1");int col = sht.getColumns(); //获得Excel列int row = sht.getRows(); //获得Excel⾏Cell c1 = null;//先将数据按⾏装⼊⼀个⼀维数组中,然后将数组逐个加⼊到ArrayListfor(int i=0; i < row; i++){obj = new Object[col];for(int j =0 ;j <col; j++){c1 = sht.getCell(j,i);//addString contents = c1.getContents();System.out.println(contents);obj[j] = c1.getContents();}System.out.println("------------");list.add(obj);}}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
java操作txt或xls文件批量导入数据

// db.insertDB(FltNum); // } } @SuppressWarnings("static-access") public String[] generateSql(String userName) throws IOException{ StringBuffer sbf = new StringBuffer(); String[] str = new String[2]; String uuid = UUIDUtil.getUUID(); sbf.append("insert into user values('"+uuid+"','" + userName +"','"+default_password+"',"+Constants.ENABLED+","+Constants.NUllDELETE+","+Constants.AUDITING+",'"+uuid+" @','"+formatDateTime()+"',"+Constants.REGEDIT_USER+");/n"); sbf.append("insert into users values('"+uuid+"',"+ null+","+Constants.MALE+","+null+","+null+",'60.176.36.250','"+formatDateTime()+"',"+null+","+null+","+null+","+null+" ,"+null+","+null+",0,"+null+","+null+",0,0,0,'"+formatDateTime()+"','1036',0,"+null+","+null+","+null+","+null+","+null+",'1 1',"+null+","+null+","+null+","+null+","+null+");/n"); sbf.append("insert into user_user_group values('"+uuid+"','"+ uuid +"','"+Constants.PERSONAL_USER+"');/n"); UUID = uuid; str[0]=sbf.toString(); str[1]=UUID; return str; } public String formatDateTime(){ Date date = new Date(); /** * 时间格式化 2009-12-31 09:04:31 */ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf.format(date)); return sdf.format(date); } private String tranStr(String oldstr) { String newstr = ""; try { newstr = new String(oldstr.getBytes("ISO-8859-1"), "utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return newstr; } public static boolean isNumeric(String str){ Pattern pattern = pile("[0-9]*"); return pattern.matcher(str).matches(); } public static boolean isTwoCharacter(String str){
Java导入excel并保存到数据库

Java导⼊excel并保存到数据库⾸先建⽴好excel表格,并对应excel表格创建数据库表。
前台jsp页⾯:其中包含js<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>导⼊excel</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="导⼊excel"><script type="text/javascript" src="view/js/jquery-1.8.2.js"></script></head><script type="text/javascript">var User = function() {this.init = function() {//模拟上传excel$("#uploadEventBtn").unbind("click").bind("click", function() {$("#uploadEventFile").click();});$("#uploadEventFile").bind("change", function() {$("#uploadEventPath").attr("value", $("#uploadEventFile").val());});};//点击上传钮this.uploadBtn = function() {var uploadEventFile = $("#uploadEventFile").val();if (uploadEventFile == '') {alert("请择excel,再上传");} else if (stIndexOf(".xls") < 0) {//可判断以.xls和.xlsx结尾的excelalert("只能上传Excel⽂件");} else {var url = "excel/import.do";var formData = new FormData($('form')[0]);user.sendAjaxRequest(url, "POST", formData);}};this.sendAjaxRequest = function(url, type, data) {$.ajax({url : url,type : type,data : data,dataType : "json",success : function(result) {alert(result.message);},error : function(result) {alert(result.message);},cache : false,contentType : false,processData : false});};};var user;$(function() {user = new User();user.init();});</script><body><form enctype="multipart/form-data" id="batchUpload" action="/excel/import" method="post" class="form-horizontal"><button class="btn btn-success btn-xs" id="uploadEventBtn" style="height:26px;" type="button">择⽂件</button><input type="file" name="file" style="width:0px;height:0px;" id="uploadEventFile"><input id="uploadEventPath" disabled="disabled" type="text" placeholder="请择excel表" style="border: 1px solid #e6e6e6; height: 26px;width: 200px;"/> </form><button type="button" class="btn btn-success btn-sm" onclick="user.uploadBtn()">上传</button></body></html>后台代码:Controller1import java.util.HashMap;2import java.util.Map;5import javax.servlet.http.HttpServletResponse;67import org.springframework.beans.factory.annotation.Autowired;8import org.springframework.stereotype.Controller;9import org.springframework.web.bind.annotation.RequestMapping;10import org.springframework.web.bind.annotation.RequestMethod;11import org.springframework.web.bind.annotation.RequestParam;12import org.springframework.web.bind.annotation.ResponseBody;13import org.springframework.web.multipart.MultipartFile;1415import service.ImportService;1617 @Controller18 @RequestMapping("/excel")19public class ImportExcelController{20 @Autowired(required=true)21private ImportService importService;2223//导⼊excel24 @RequestMapping(value = "/import", method=RequestMethod.POST)25 @ResponseBody26public Map<String, Object> importExcel(@RequestParam(value="file",required = false) MultipartFile file, HttpServletRequest request,HttpServletResponse response){27 Map<String, Object> map = new HashMap<String, Object>();28 String result = importService.readExcelFile(file);29 map.put("message", result);30return map;31 }3233 }service:1import org.springframework.web.multipart.MultipartFile;23public interface ImportService {45/**6 * 读取excel中的数据,⽣成list7*/8 String readExcelFile(MultipartFile file);910 }serviceImpl:1import java.util.List;2import java.util.Map;34import org.springframework.beans.factory.annotation.Autowired;5import org.springframework.stereotype.Service;6import org.springframework.web.multipart.MultipartFile;78import service.ImportService;9import controller.ReadExcel;10import erDao;1112 @Service13public class ImportServiceImpl implements ImportService {14 @Autowired(required = true)15private UserDao userDao;16 @Override17public String readExcelFile(MultipartFile file) {18 String result = "";19//创建处理EXCEL的类20 ReadExcel readExcel = new ReadExcel();21//解析excel,获取上传的事件单22 List<Map<String, Object>> userList = readExcel.getExcelInfo(file);23//⾄此已经将excel中的数据转换到list⾥⾯了,接下来就可以操作list,可以进⾏保存到数据库,或者其他操作,24for(Map<String, Object> user:userList){25int ret = userDao.insertUser(user.get("name").toString(), user.get("sex").toString(), Integer.parseInt(user.get("age").toString()));26if(ret == 0){27 result = "插⼊数据库失败";28 }29 }30if(userList != null && !userList.isEmpty()){31 result = "上传成功";32 }else{33 result = "上传失败";34 }35return result;36 }3738 }dao:public interface UserDao {public int insertUser(String name, String sex, int age);}daoImpl:2import org.springframework.dao.DataAccessException;3import org.springframework.jdbc.core.JdbcTemplate;4import ponent;56import erDao;78 @Component9public class UserDaoImpl implements UserDao {10 @Autowired(required = true)11private JdbcTemplate jdbcTemplate;1213 @Override14public int insertUser(String name, String sex, int age) {15 String sql = "insert into user(name,sex,age) values('"+ name +"','"+ sex +"',"+age+")"; 16int ret = 0;17try {18 ret = jdbcTemplate.update(sql);19 } catch (DataAccessException e) {20 e.printStackTrace();21 }22return ret;23 }2425 }ReadExcel:1package controller;23import java.io.IOException;4import java.io.InputStream;5import java.util.ArrayList;6import java.util.HashMap;7import java.util.List;8import java.util.Map;910import ermodel.HSSFCell;11import ermodel.HSSFWorkbook;12import ermodel.Cell;13import ermodel.Row;14import ermodel.Sheet;15import ermodel.Workbook;16import ermodel.XSSFWorkbook;17import org.springframework.web.multipart.MultipartFile;1819/**20 *21 * @author hewangtong22 *23*/24public class ReadExcel {25// 总⾏数26private int totalRows = 0;27// 总条数28private int totalCells = 0;29// 错误信息接收器30private String errorMsg;3132// 构造⽅法33public ReadExcel() {34 }3536// 获取总⾏数37public int getTotalRows() {38return totalRows;39 }4041// 获取总列数42public int getTotalCells() {43return totalCells;44 }4546// 获取错误信息47public String getErrorInfo() {48return errorMsg;49 }5051/**52 * 读EXCEL⽂件,获取信息集合53 *54 * @param fielName55 * @return56*/57public List<Map<String, Object>> getExcelInfo(MultipartFile mFile) {58 String fileName = mFile.getOriginalFilename();// 获取⽂件名59// List<Map<String, Object>> userList = new LinkedList<Map<String, Object>>();60try {61if (!validateExcel(fileName)) {// 验证⽂件名是否合格62return null;63 }64boolean isExcel2003 = true;// 根据⽂件名判断⽂件是2003版本还是2007版本65if (isExcel2007(fileName)) {66 isExcel2003 = false;68return createExcel(mFile.getInputStream(), isExcel2003);69 } catch (Exception e) {70 e.printStackTrace();71 }72return null;73 }7475/**76 * 根据excel⾥⾯的内容读取客户信息77 *78 * @param is 输⼊流79 * @param isExcel2003 excel是2003还是2007版本80 * @return81 * @throws IOException82*/83public List<Map<String, Object>> createExcel(InputStream is, boolean isExcel2003) {84try {85 Workbook wb = null;86if (isExcel2003) {// 当excel是2003时,创建excel200387 wb = new HSSFWorkbook(is);88 } else {// 当excel是2007时,创建excel200789 wb = new XSSFWorkbook(is);90 }91return readExcelValue(wb);// 读取Excel⾥⾯客户的信息92 } catch (IOException e) {93 e.printStackTrace();94 }95return null;96 }9798/**99 * 读取Excel⾥⾯客户的信息100 *101 * @param wb102 * @return103*/104private List<Map<String, Object>> readExcelValue(Workbook wb) {105// 得到第⼀个shell106 Sheet sheet = wb.getSheetAt(0);107// 得到Excel的⾏数108this.totalRows = sheet.getPhysicalNumberOfRows();109// 得到Excel的列数(前提是有⾏数)110if (totalRows > 1 && sheet.getRow(0) != null) {111this.totalCells = sheet.getRow(0).getPhysicalNumberOfCells();112 }113 List<Map<String, Object>> userList = new ArrayList<Map<String, Object>>();114// 循环Excel⾏数115for (int r = 1; r < totalRows; r++) {116 Row row = sheet.getRow(r);117if (row == null) {118continue;119 }120// 循环Excel的列121 Map<String, Object> map = new HashMap<String, Object>();122for (int c = 0; c < this.totalCells; c++) {123 Cell cell = row.getCell(c);124if (null != cell) {125if (c == 0) {126// 如果是纯数字,⽐如你写的是25,cell.getNumericCellValue()获得是25.0,通过截取字符串去掉.0获得25 127if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {128 String name = String.valueOf(cell.getNumericCellValue());129 map.put("name", name.substring(0, name.length() - 2 > 0 ? name.length() - 2 : 1));// 名称130 } else {131 map.put("name", cell.getStringCellValue());// 名称132 }133 } else if (c == 1) {134if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {135 String sex = String.valueOf(cell.getNumericCellValue());136 map.put("sex",sex.substring(0, sex.length() - 2 > 0 ? sex.length() - 2 : 1));// 性别137 } else {138 map.put("sex",cell.getStringCellValue());// 性别139 }140 } else if (c == 2) {141if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {142 String age = String.valueOf(cell.getNumericCellValue());143 map.put("age", age.substring(0, age.length() - 2 > 0 ? age.length() - 2 : 1));// 年龄144 } else {145 map.put("age", cell.getStringCellValue());// 年龄146 }147 }148 }149 }150// 添加到list151 userList.add(map);152 }153return userList;154 }155156/**157 * 验证EXCEL⽂件158 *159 * @param filePath160 * @return162public boolean validateExcel(String filePath) {163if (filePath == null || !(isExcel2003(filePath) || isExcel2007(filePath))) { 164 errorMsg = "⽂件名不是excel格式";165return false;166 }167return true;168 }169170// @描述:是否是2003的excel,返回true是2003171public static boolean isExcel2003(String filePath) {172return filePath.matches("^.+\\.(?i)(xls)$");173 }174175// @描述:是否是2007的excel,返回true是2007176public static boolean isExcel2007(String filePath) {177return filePath.matches("^.+\\.(?i)(xlsx)$");178 }179180 }。
java程序控制excel导入导出数据库信息

1 从Excel文件读取数据表Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。
读取Excel数据表的第一步是创建Workbook(术语:工作薄),下面的代码片段举例说明了应该如何操作:(完整代码见ExcelReading.java)一旦创建了Workbook,我们就可以通过它来访问Excel Sheet(术语:工作表)。
参考下面的代码片段:我们既可能通过Sheet的名称来访问它,也可以通过下标来访问它。
如果通过下标来访问的话,要注意的一点是下标从0开始,就像数组一样。
一旦得到了Sheet,我们就可以通过它来访问Excel Cell(术语:单元格)。
参考下面的代码片段:如果仅仅是取得Cell的值,我们可以方便地通过getContents()方法,它可以将任何类型的Cell值都作为一个字符串返回。
示例代码中Cell(0, 0)是文本型,Cell(1, 0)是数字型,Cell(1,1)是日期型,通过getContents(),三种类型的返回值都是字符型。
如果有需要知道Cell内容的确切类型,API也提供了一系列的方法。
参考下面的代码片段:在得到Cell对象后,通过getType()方法可以获得该单元格的类型,然后与API 提供的基本类型相匹配,强制转换成相应的类型,最后调用相应的取值方法getXXX(),就可以得到确定类型的值。
API提供了以下基本类型,与Excel的数据格式相对应,如下图所示:每种类型的具体意义,请参见Java Excel API Document。
当你完成对Excel电子表格数据的处理后,一定要使用close()方法来关闭先前创建的对象,以释放读取数据表的过程中所占用的内存空间,在读取大量数据时显得尤为重要。
参考如下代码片段:Java Excel API提供了许多访问Excel数据表的方法,在这里我只简要地介绍几个常用的方法,其它的方法请参考附录中的Java Excel API Document。
Java实现批量导入excel表格数据到数据库中的方法

Java实现批量导⼊excel表格数据到数据库中的⽅法本⽂实例讲述了Java实现批量导⼊excel表格数据到数据库中的⽅法。
分享给⼤家供⼤家参考,具体如下:1、创建导⼊抽象类package mon.excel;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.PrintStream;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import org.apache.poi.hssf.eventusermodel.EventWorkbookBuilder.SheetRecordCollectingListener;import org.apache.poi.hssf.eventusermodel.FormatTrackingHSSFListener;import org.apache.poi.hssf.eventusermodel.HSSFEventFactory;import org.apache.poi.hssf.eventusermodel.HSSFListener;import org.apache.poi.hssf.eventusermodel.HSSFRequest;import org.apache.poi.hssf.eventusermodel.MissingRecordAwareHSSFListener;import stCellOfRowDummyRecord;import org.apache.poi.hssf.eventusermodel.dummyrecord.MissingCellDummyRecord;import org.apache.poi.hssf.model.HSSFFormulaParser;import org.apache.poi.hssf.record.BOFRecord;import org.apache.poi.hssf.record.BlankRecord;import org.apache.poi.hssf.record.BoolErrRecord;import org.apache.poi.hssf.record.BoundSheetRecord;import org.apache.poi.hssf.record.FormulaRecord;import belRecord;import belSSTRecord;import org.apache.poi.hssf.record.NoteRecord;import org.apache.poi.hssf.record.NumberRecord;import org.apache.poi.hssf.record.RKRecord;import org.apache.poi.hssf.record.Record;import org.apache.poi.hssf.record.SSTRecord;import org.apache.poi.hssf.record.StringRecord;import ermodel.HSSFWorkbook;import org.apache.poi.poifs.filesystem.POIFSFileSystem;/*** 导⼊抽象类* Created by charlin on 2017/9/7.*/public abstract class HxlsAbstract implements HSSFListener {private int minColumns;private POIFSFileSystem fs;private PrintStream output;private int lastRowNumber;private int lastColumnNumber;/** Should we output the formula, or the value it has? */private boolean outputFormulaValues = true;/** For parsing Formulas */private SheetRecordCollectingListener workbookBuildingListener;private HSSFWorkbook stubWorkbook;// Records we pick up as we processprivate SSTRecord sstRecord;private FormatTrackingHSSFListener formatListener;/** So we known which sheet we're on */private int sheetIndex = -1;private BoundSheetRecord[] orderedBSRs;@SuppressWarnings("unchecked")private ArrayList boundSheetRecords = new ArrayList();// For handling formulas with string resultsprivate int nextRow;private int nextColumn;private boolean outputNextStringRecord;private int curRow;private List<String> rowlist;@SuppressWarnings( "unused")private String sheetName;public HxlsAbstract(POIFSFileSystem fs)throws SQLException {this.fs = fs;this.output = System.out;this.minColumns = -1;this.curRow = 0;this.rowlist = new ArrayList<String>();}public HxlsAbstract(String filename) throws IOException,FileNotFoundException, SQLException {this(new POIFSFileSystem(new FileInputStream(filename)));}//excel记录⾏操作⽅法,以⾏索引和⾏元素列表为参数,对⼀⾏元素进⾏操作,元素为String类型// public abstract void optRows(int curRow, List<String> rowlist) throws SQLException ;//excel记录⾏操作⽅法,以sheet索引,⾏索引和⾏元素列表为参数,对sheet的⼀⾏元素进⾏操作,元素为String类型 public abstract void optRows(int sheetIndex,int curRow, List<String> rowlist) throws Exception;/*** 遍历 excel ⽂件*/public void process() throws IOException {MissingRecordAwareHSSFListener listener = new MissingRecordAwareHSSFListener(this);formatListener = new FormatTrackingHSSFListener(listener);HSSFEventFactory factory = new HSSFEventFactory();HSSFRequest request = new HSSFRequest();if (outputFormulaValues) {request.addListenerForAllRecords(formatListener);} else {workbookBuildingListener = new SheetRecordCollectingListener(formatListener);request.addListenerForAllRecords(workbookBuildingListener);}factory.processWorkbookEvents(request, fs);}/*** HSSFListener 监听⽅法,处理 Record*/@SuppressWarnings("unchecked")public void processRecord(Record record) {int thisRow = -1;int thisColumn = -1;String thisStr = null;String value = null;switch (record.getSid()) {case BoundSheetRecord.sid:boundSheetRecords.add(record);break;case BOFRecord.sid:BOFRecord br = (BOFRecord) record;//进⼊sheetif (br.getType() == BOFRecord.TYPE_WORKSHEET) {// Create sub workbook if requiredif (workbookBuildingListener != null && stubWorkbook == null) {stubWorkbook = workbookBuildingListener.getStubHSSFWorkbook();}// Works by ordering the BSRs by the location of// their BOFRecords, and then knowing that we// process BOFRecords in byte offset ordersheetIndex++;if (orderedBSRs == null) {orderedBSRs = BoundSheetRecord.orderByBofPosition(boundSheetRecords);}sheetName = orderedBSRs[sheetIndex].getSheetname();}break;case SSTRecord.sid:sstRecord = (SSTRecord) record;break;case BlankRecord.sid:BlankRecord brec = (BlankRecord) record;thisRow = brec.getRow();thisColumn = brec.getColumn();thisStr = "";break;case BoolErrRecord.sid:BoolErrRecord berec = (BoolErrRecord) record;thisRow = berec.getRow();thisColumn = berec.getColumn();thisStr = "";break;case FormulaRecord.sid:FormulaRecord frec = (FormulaRecord) record;thisRow = frec.getRow();thisColumn = frec.getColumn();if (outputFormulaValues) {if (Double.isNaN(frec.getValue())) {// Formula result is a string// This is stored in the next recordoutputNextStringRecord = true;nextRow = frec.getRow();nextColumn = frec.getColumn();} else {thisStr = formatListener.formatNumberDateCell(frec);}} else {thisStr = '"' + HSSFFormulaParser.toFormulaString(stubWorkbook, frec.getParsedExpression()) + '"';}break;case StringRecord.sid:if (outputNextStringRecord) {// String for formulaStringRecord srec = (StringRecord) record;thisStr = srec.getString();thisRow = nextRow;thisColumn = nextColumn;outputNextStringRecord = false;}break;case LabelRecord.sid:LabelRecord lrec = (LabelRecord) record;curRow = thisRow = lrec.getRow();thisColumn = lrec.getColumn();value = lrec.getValue().trim();value = value.equals("")?" ":value;this.rowlist.add(thisColumn, value);break;case LabelSSTRecord.sid:LabelSSTRecord lsrec = (LabelSSTRecord) record;curRow = thisRow = lsrec.getRow();thisColumn = lsrec.getColumn();if (sstRecord == null) {rowlist.add(thisColumn, " ");} else {value = sstRecord.getString(lsrec.getSSTIndex()).toString().trim();value = value.equals("")?" ":value;rowlist.add(thisColumn,value);}break;case NoteRecord.sid:NoteRecord nrec = (NoteRecord) record;thisRow = nrec.getRow();thisColumn = nrec.getColumn();// TODO: Find object to match nrec.getShapeId()thisStr = '"' + "(TODO)" + '"';break;case NumberRecord.sid:NumberRecord numrec = (NumberRecord) record;curRow = thisRow = numrec.getRow();thisColumn = numrec.getColumn();value = formatListener.formatNumberDateCell(numrec).trim();value = value.equals("")?" ":value;// Formatrowlist.add(thisColumn, value);break;case RKRecord.sid:RKRecord rkrec = (RKRecord) record;thisRow = rkrec.getRow();thisColumn = rkrec.getColumn();thisStr = '"' + "(TODO)" + '"';break;default:break;}// 遇到新⾏的操作if (thisRow != -1 && thisRow != lastRowNumber) {lastColumnNumber = -1;}// 空值的操作if (record instanceof MissingCellDummyRecord) {MissingCellDummyRecord mc = (MissingCellDummyRecord) record;curRow = thisRow = mc.getRow();thisColumn = mc.getColumn();rowlist.add(thisColumn," ");}// 如果遇到能打印的东西,在这⾥打印if (thisStr != null) {if (thisColumn > 0) {output.print(',');}output.print(thisStr);}// 更新⾏和列的值if (thisRow > -1)lastRowNumber = thisRow;if (thisColumn > -1)lastColumnNumber = thisColumn;// ⾏结束时的操作if (record instanceof LastCellOfRowDummyRecord) {if (minColumns > 0) {// 列值重新置空if (lastColumnNumber == -1) {lastColumnNumber = 0;}}// ⾏结束时,调⽤ optRows() ⽅法lastColumnNumber = -1;try {optRows(sheetIndex,curRow, rowlist);} catch (Exception e) {e.printStackTrace();}rowlist.clear();}}}2、创建导⼊接⼝package mon.excel;import java.util.List;public interface HxlsOptRowsInterface {public static final String SUCCESS="success";/*** 处理excel⽂件每⾏数据⽅法* @param sheetIndex* @param curRow* @param rowlist* @return success:成功,否则为失败原因* @throws Exception*/public String optRows(int sheetIndex, int curRow, List<String> rowlist) throws Exception; }3、创建实现类,在这个⽅法实现把导⼊的数据添加到数据库中package mon.excel;import java.util.List;public class HxlsInterfaceImpl implements HxlsOptRowsInterface {@Overridepublic String optRows(int sheetIndex, int curRow, List<String> datalist)throws Exception {//在这⾥执⾏数据的插⼊//System.out.println(rowlist);//saveData(datalist);return "";}}4、导⼊⼯具实现package mon.excel;import java.io.FileNotFoundException;import java.io.IOException;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;/*** excel导⼊⼯具* Created by charlin on 2017/9/7.*/public class ExcelImportUtil extends HxlsAbstract{//数据处理beanprivate HxlsOptRowsInterface hxlsOptRowsInterface;//处理数据总数private int optRows_sum = 0;//处理数据成功数量private int optRows_success = 0;//处理数据失败数量private int optRows_failure = 0;//excel表格每列标题private List<String> rowtitle ;//失败数据private List<List<String>> failrows;//失败原因private List<String> failmsgs ;//要处理数据所在的sheet索引,从0开始private int sheetIndex;public ExcelImportUtil(String filename, int sheetIndex, HxlsOptRowsInterface hxlsOptRowsInterface) throws IOException, FileNotFoundException, SQLException {super(filename);this.sheetIndex = sheetIndex;this.hxlsOptRowsInterface = hxlsOptRowsInterface;this.rowtitle = new ArrayList<String>();this.failrows = new ArrayList<List<String>>();this.failmsgs = new ArrayList<String>();}@Overridepublic void optRows(int sheetIndex,int curRow, List<String> rowlist) throws Exception {/*for (int i = 0 ;i< rowlist.size();i++){System.out.print("'"+rowlist.get(i)+"',");}System.out.println();*///将rowlist的长度补齐和标题⼀致int k=rowtitle.size()-rowlist.size();for(int i=0;i<k;i++){rowlist.add(null);}if(sheetIndex == this.sheetIndex){optRows_sum++;if(curRow == 0){//记录标题rowtitle.addAll(rowlist);}else{String result = hxlsOptRowsInterface.optRows(sheetIndex, curRow, rowlist);if(!result.equals(hxlsOptRowsInterface.SUCCESS)){optRows_failure++;//失败数据failrows.add(new ArrayList<String>(rowlist));failmsgs.add(result);}else{optRows_success++;}}}}public long getOptRows_sum() {return optRows_sum;}public void setOptRows_sum(int optRows_sum) {this.optRows_sum = optRows_sum;}public long getOptRows_success() {return optRows_success;}public void setOptRows_success(int optRows_success) {this.optRows_success = optRows_success;}public long getOptRows_failure() {return optRows_failure;}public void setOptRows_failure(int optRows_failure) {this.optRows_failure = optRows_failure;}public List<String> getRowtitle() {return rowtitle;}public List<List<String>> getFailrows() {return failrows;}public List<String> getFailmsgs() {return failmsgs;}public void setFailmsgs(List<String> failmsgs) {this.failmsgs = failmsgs;}}5、导⼊实现⽅法:public static void main(String[] args){ExcelImportUtil importUtil;try {importUtil = new ExcelImportUtil("d:/data.xls",0, new HxlsInterfaceImpl());importUtil.process();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}更多关于java相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》及《》希望本⽂所述对⼤家java程序设计有所帮助。
java excel导入20万条

java excel导入20万条
在Java中导入20万条Excel数据可以通过以下几种方式来实现:
1. 使用Apache POI库,Apache POI是一个用于读写Microsoft Office文件的开源Java库。
你可以使用Apache POI来读取Excel文件并将数据导入到Java中。
你需要使用XSSFWorkbook和XSSFSheet类来读取Excel文件中的数据。
然后,你可以将读取到的数据存储在Java对象中,或者直接将数据插入到数据库中。
2. 使用JDBC连接Excel文件,你可以使用JDBC(Java Database Connectivity)来连接Excel文件,并通过Java代码将数据导入到数据库中。
首先,你需要使用ODBC(Open Database Connectivity)驱动程序来连接Excel文件,然后使用JDBC来执行插入操作。
3. 使用第三方库,除了Apache POI之外,还有一些其他的第三方库可以用来处理Excel文件,比如JExcelApi、JExcel等。
你可以选择适合你需求的库来实现数据导入操作。
无论你选择哪种方式,都需要注意以下几点:
内存管理,在导入大量数据时,需要注意内存的使用,避免内存溢出的问题。
优化性能,对于大量数据的导入,需要考虑性能优化,比如批量插入、使用索引等方式来提高导入速度。
异常处理,需要处理可能出现的异常情况,比如文件不存在、格式错误等。
总之,导入20万条Excel数据是一个比较大的任务,需要仔细考虑数据量、性能和异常处理等方面的问题,选择合适的方式来实现数据导入操作。
Java解析Excel文件并把数据存入数据库

Java解析Excel⽂件并把数据存⼊数据库前段时间做⼀个⼩项⽬,为了同时存储多条数据,其中有⼀个功能是解析Excel并把其中的数据存⼊对应数据库中。
花了两天时间,不过⼀天多是因为⽤了"upload"关键字作为URL从⽽导致总报同⼀个错,最后在同学的帮助下顺利解决,下⾯我把⾃⼰⽤"POI"解析的⽅法总结出来供⼤家参考(我⽤的是SpingMVC和hibernate框架)。
1.web.xml中的配置⽂件web.xml中的配置⽂件就按照这种⽅式写,只需要把"application.xml"换成你的配置⽂件名即可<!--⽂件上传对应的配置⽂件--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:application.xml</param-value></context-param>2.application.xml的配置⽂件(固定写发)在这个配置⽂件中你还可以规定上传⽂件的格式以及⼤⼩等多种属性限制<!-- 定义⽂件上传解析器 --><bean id="multipartResolver"class="monsMultipartResolver"></bean>3.⽂件上传的前端HTML注意:1.enctype="multipart/form-data" 必须写,封装表单2.method="post",提交⽅式必须为"post"提交3.action="${text}/uploadfile", "uploadfile"切记不要写成"upload",否则你找到世界末⽇也不会找到哪⾥有问题(本⼈因为这个折腾了⼀天多时间)。
java后端导入excel将数据写入数据库

java后端导⼊excel将数据写⼊数据库 1 @RequestMapping("/importExcel.do")2public void import2(String xlsPath) throws IOException, BiffException {34// 导⼊已存在的Excel⽂件,获得只读的⼯作薄对象5 FileInputStream fis = new FileInputStream(xlsPath);6 Workbook wk = Workbook.getWorkbook(fis);7// 获取第⼀张Sheet表8 Sheet sheet = wk.getSheet(0);9// 获取总⾏数10int rowNum = sheet.getRows();11 System.out.println("插⼊总⾏数:"+rowNum);12// 从数据⾏开始迭代每⼀⾏13for (int i = 0; i < rowNum; i++) {14//先判断插⼊的数据是否和数据库的数据重复15if(userService.findUser(sheet.getCell(0, i).getContents())>0) {16continue;17 }18 User u = new User();19// getCell(column,row),表⽰取得指定列指定⾏的单元格(Cell)20// getContents()获取单元格的内容,返回字符串数据。
适⽤于字符型数据的单元格21// 使⽤实体类封装单元格数据22 u.setName(sheet.getCell(0, i).getContents());23 u.setAge(sheet.getCell(1, i).getContents());24 u.setNickName(sheet.getCell(2, i).getContents());25 userService.saveUser(u);26 System.out.println("成功插⼊:"+sheet.getCell(0, i).getContents());27282930/*// 判断单元格的类型,单元格主要类型LABEL、NUMBER、DATE31 if (sheet.getCell(2, i).getType == CellType.NUMBER) {3233 // 转化为数值型单元格34 NumberCell numCell = (NumberCell) sheet.getCell(2, i);35 // NumberCell的getValue()⽅法取得单元格的数值型数据36 info.setRscore(numCell.getValue());3738 }39 if (sheet.getCell(3, i).getType == CellType.NUMBER) {40 NumberCell numCell = (NumberCell) sheet.getCell(3, i);41 info.setRscore(numCell.getValue);42 }4344 if (sheet.getCell(4, i).getType == CellType.DATE) {45 DateCell dateCell = (DateCell) sheet.getCell(4, i);46 // DateCell的getDate()⽅法取得单元格的⽇期型数据47 info.setDate(dateCell.getDate());48 }*/49 }50 fis.close();51 wk.close();52 }注解都⽐较详细了前端代码(ie8和chrome前端获取的路径会出问题)<form><input type="file" id="fileName" name="xlsPath" /> <inputtype="button" id="btn" value="提交"></form>1 $("#btn").click(function() {2var xlsPath = document.getElementById("fileName").value;3/* var path=getPath(xlsPath);4 alert(path); */5 $.ajax({6 "url" : "${pageContext.request.contextPath}/importExcel.do",7 "type" : "GET",8 "data" : "xlsPath=" + xlsPath,9 "dataType" : "json",10 "success" : function(res) {11if (res.state == 1) {12 alert(message);13 } else {14 alert(message);15 }16 }17 });18 });可以直接⽤。
Java-Excel表数据转List对象-导入数据库

Java-Excel表数据转List对象-导⼊数据库 1import java.io.File;2import java.io.FileInputStream;3import java.util.ArrayList;4import java.util.List;56import ermodel.HSSFCell;7import ermodel.HSSFRow;8import ermodel.HSSFSheet;9import ermodel.HSSFWorkbook;101112public class ObjectExcelRead {1314/**15 * @param filepath //⽂件路径16 * @param filename //⽂件名17 * @param startrow //开始⾏号18 * @param startcol //开始列号19 * @param sheetnum //sheet20 * @return list21*/22public static List<Object> readExcel(String filepath, String filename, int startrow, int startcol, int sheetnum) {23 List<Object> varList = new ArrayList<Object>();2425try {26 File target = new File(filepath, filename);27 FileInputStream fi = new FileInputStream(target);28 HSSFWorkbook wb = new HSSFWorkbook(fi);2930// sheet从0开始31 HSSFSheet sheet = wb.getSheetAt(sheetnum);32// 取得最后⼀⾏的⾏号33int rowNum = sheet.getLastRowNum() + 1;3435// ⾏循环开始36for (int i = startrow; i < rowNum; i++) {37 PageData varpd = new PageData();38// ⾏39 HSSFRow row = sheet.getRow(i);40// 每⾏的最后⼀个单元格位置41int cellNum = row.getLastCellNum();4243//列循环开始44for (int j = startcol; j < cellNum; j++) {45 HSSFCell cell = row.getCell(Short.parseShort(j + ""));46 String cellValue = null;4748if (null != cell) {49// 判断excel单元格内容的格式,并对其进⾏转换,以便插⼊数据库50switch (cell.getCellType()) {51case 0:52 cellValue = String.valueOf((int) cell.getNumericCellValue());53break;5455case 1:56 cellValue = cell.getStringCellValue();57break;5859case 2:60 cellValue = cell.getNumericCellValue() + "";61// cellValue = String.valueOf(cell.getDateCellValue());62break;6364case 3:65 cellValue = "";66break;6768case 4:69 cellValue = String.valueOf(cell.getBooleanCellValue());70break;7172case 5:73 cellValue = String.valueOf(cell.getErrorCellValue());74break;7576 }77 } else {78 cellValue = "";79 }8081 varpd.put("var"+j, cellValue);82 }83 varList.add(varpd);84 }85 } catch (Exception e) {86 System.out.println(e);87 }8889return varList;90 }91 }。
Java如何导入excel

Java如何导入excel在项目中用户需要导入大量Excel表格数据到数据库,为此需求自己写了一个读取Excel数据的java类,该类需要POI组件的支持,POI 是apache组织下的一个开源组件。
1.UploadExcelControl类:读取Excel的文件路径,文件名,初始化文件import javax.servlet.http.HttpServletRequest;import mons.fileupload.DiskFileUpload;import mons.fileupload.FileItem;import .FileController;import com.bstek.dorado.utils.MetaData;import com.bstek.dorado.utils.codec.*;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import com.GlobalValue;public class UploadExcelController extends FileController { private static final long serialVersionUID = -5481935958241641848L;String extName;String type = "";/*** 取得文件路径*/protected File getFilePath() {return new File(GlobalValue.LOAD_FILE_ROOT_EXCEL);}/*** 初始化上传文件*/protected void initFileUpload(HttpServletRequest request, DiskFileUpload fileUpload) {// System.out.println("initFileUpload=");fileUpload.setHeaderEncoding("utf-8");type = (String) request.getParameter("typeTemp");fileUpload.setSizeMax(1024 * 1024 * 5);}protected File getUploadWorkDirectory(HttpServletRequest request,MetaData parameters) {return getFilePath();}protected String getStoreFileName(HttpServletRequest request,String fileName, MetaData parameters) {System.out.println("getStoreFileName=" + fileName);int pos = stIndexOf("\\");String realname;if (pos > 0) {extName = fileName.substring(pos + 1, fileName.length());realname = System.currentTimeMillis()+ extName.substring(stIndexOf("."), extName.length());} else {extName = fileName.substring(stIndexOf("."),fileName.length());realname = fileName;}if (type != null && type.equals("inputExcel")) {return realname;} else {return extName;}}protected void storeUploadFile(HttpServletRequest request, FileItem fileItem, File storeFile, MetaData parameters)throws Exception {super.storeUploadFile(request, fileItem, storeFile, parameters);request.setAttribute("success", "1");String filename = storeFile.getName();String filePath = storeFile.getPath();if (type != null && type.equals("inputExcel")) {request.setAttribute("realname", filename);request.setAttribute("filename", filename);} else {request.setAttribute("realname", extName);request.setAttribute("filename", filename);}request.setAttribute("filePath", filePath);}protected String getDownLoadFileName(HttpServletRequest request) {String filename = (String) request.getParameter("filename");filename = unescape(filename);try {filename = new String(filename.getBytes("GBK"), "ISO8859-1");} catch (Exception e) {System.out.println(e.getMessage());}return filename;}private String unescape(String str) {String returnValue = new String("");try {returnValue = EscapeUtils.unescape(str);} catch (Exception e) {System.out.println(e.getMessage());}return returnValue;}protected InputStream getDownloadFileInputStream(HttpServletRequest request) throws Exception {String filename = (String) request.getParameter("filename");filename = unescape(filename);String filePath = getFilePath() + File.separator + filename;return new FileInputStream(filePath);}}2.检查导入Excel的字段及数据public String checkExcelDataStore(String fileName, String date,String productId)throws Exception {String info = "";fileName = GlobalValue.LOAD_FILE_ROOT_EXCEL + File.separator + fileName;System.out.println(fileName);FileInputStream finput = new FileInputStream(fileName);POIFSFileSystem fs = new POIFSFileSystem(finput);HSSFWorkbook workbook = new HSSFWorkbook(fs);boolean flag = true;for (int i = 0; i < 1; i++) {HSSFSheet sheet = workbook.getSheetAt(i);HSSFPatriarch patriarch = sheet.createDrawingPatriarch();String tablename = workbook.getSheetName(i);if (sheet.getRow(0) == null) {break;}List list = new ArrayList();int colCount = sheet.getRow(0).getPhysicalNumberOfCells();//列数int rows = sheet.getPhysicalNumberOfRows();// 获取行数HSSFRow rowTitle = sheet.getRow(0);// 获取表头for (int j = 1; j < rows; j++) { // 从第二行开始收集记录StoreIndexBean store = new StoreIndexBean();try {HSSFRow row = sheet.getRow(j);if (row == null) {break;}for (short k = 0; k < colCount; k++) {if (rowTitle.getCell(k) == null) {break;}String rowTitleName = rowTitle.getCell(k).toString();// 根据xml获取表头名MobileInfoColum column = this.findCollum(rowTitleName .trim());HSSFCell hfc = row.getCell(k);if (column.getCollumId() != null) {if (column.getCollumDesc().equals("区")) {if (hfc == null) {info = "行数:" + (j + 1) + "-----"+ "联系人姓名不能为空! 请修改此条数据重新导入.";errorInfoList.add(info);break;} else {String value = null;if (hfc.getCellType() == HSSFCell.CELL_TYPE_STRING) {value = hfc.toString().trim();} else if (hfc.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {DecimalFormat df = new DecimalFormat("#");value = df.format(hfc.getNumericCellValue());}if (value != null && !"".equals(value)) {store.setAreaName(value);System.out.println(store.getAreaName());} else {info = "行数:" + (j + 1) + "-----"+ "联系人姓名不能为空! 请修改此条数据重新导入."; errorInfoList.add(info);}}}} //列}catch (Exception e) {e.printStackTrace();flag = false;}if (flag == false) {info = "行数:" + (j + 1) + "-----" + "有错误!" + info + "请核对数据后重新导入此条数据!"; errorInfoList.add(info);continue;} else {list.add(store);}}if (flag == true) {this.insertStoreIndex(list, fileName, date,productId);}}return "恭喜您,报表导入成功!";}3.把数据插入到数据库private void insertStoreIndex(List list, String fileName, String date,String productId)throws Exception {DBStatement stmt = new DBStatement();System.out.println(list.size());stmt.setDataSource("polaris");for (int a=0;a<list.size();a++) {StoreIndexBean store = (StoreIndexBean) list.get(a);String areaName = store.getAreaName();// 求areaidint areaid = 0;String sqlareaid = "select Areaid from T_Area where Name='"+ areaName + "'";stmt.setSql(sqlareaid);List areaidlist = stmt.queryForList();for (int i = 0; i < areaidlist.size(); i++) {VariantSet aSet = (VariantSet) areaidlist.get(i);areaid = aSet.getInt("AreaId");}String sqlcheck = "select* from Rpt_StoresIndex whereSupermarketId= "+ supermarketid+ "and StoreId="+ storeid+ " and ProductTypeId = "+ producttypeid+ " and year(InsertTime)=year('"+ date+ "') and month(InsertTime)=month('" + date + "')";stmt.setSql(sqlcheck);List listcurrent = stmt.queryForList();//String sqlinsert = "insert into Rpt_StoresIndex(AreaId,AreaName) values"+ "("+ areaid+ ",'"+ areaName+ "'+ date+ "')";if (listcurrent.isEmpty()) {stmt.setSql(sqlinsert);stmt.execute();} else {String delsql = "delete from Rpt_StoresIndex where supermarketId = "+ supermarketid+ " and storeId = "+ storeid+ " and ProductTypeId = "+ producttypeid+ " and year(InsertTime)=year('"+ date+ "') and month(InsertTime)=month('" + date + "')";stmt.setSql(delsql);int re = stmt.execute();if (re > 0) {stmt.setSql(sqlinsert);stmt.execute();}}}}4.把数据放到xml中,通过它解析Excel中的数据<?xml version="1.0" encoding="UTF-8"?><mobileInfo-config><mobile name="ReportId" description="Metro 商场编号" value="0"/></mobileInfo-config>。
将Excel数据导入mysql数据库的几种方案

前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面和大家分享一下:一.用java来将Excel表格中的数据转到mysql中这是我们用的第一种方法,就是在java找你感谢个类,然后这个类会将Excel表格中的数据存储到内存里,然后再从内存中读出来插入到数据库中,但是要注意了,这里是存储到String[ ]数组里面,所以取出来的数据也是String类型,如果你的表里面有int类型的数据,那么你一定要将那一条取出来然后强制转换,如果你的数据表结构没有那么复杂,比较简单的话那么可以使用这种方法,如果字段的结构复杂那也可以使用,只不过要慢慢转,多写点代码,不怕累的同志可以试试.下面是我从网上查的代码:1、添加POI jar包到项目的lib目录下2、Excel文件目录:d://excel.xls3、数据库字段为:num1 num2 num3 num4 num5 num64、数据库名:blog5、表名:test6、编写类:连接mysql的字符串方法、插入的方法、实体类import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import mons.logging.Log;import mons.logging.LogFactory;import ermodel.HSSFCell;import ermodel.HSSFRow;import ermodel.HSSFSheet;import ermodel.HSSFWorkbook;public class TestExcel {//记录类的输出信息static Log log = LogFactory.getLog(TestExcel.class);//获取Excel文档的路径public static String filePath = "D://excel.xls";public static void main(String[] args) {try {// 创建对Excel工作簿文件的引用HSSFWorkbook wookbook = new HSSFWorkbook(new FileInputStream(filePath));// 在Excel文档中,第一张工作表的缺省索引是0,// 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);HSSFSheet sheet = wookbook.getSheet("Sheet1");//获取到Excel文件中的所有行数int rows = sheet.getPhysicalNumberOfRows();//遍历行for (int i = 0; i < rows; i++) {// 读取左上端单元格HSSFRow row = sheet.getRow(i);// 行不为空if (row != null) {//获取到Excel文件中的所有的列int cells = row.getPhysicalNumberOfCells();String value = "";//遍历列for (int j = 0; j < cells; j++) {//获取到列的值HSSFCell cell = row.getCell(j);if (cell != null) {switch (cell.getCellType()) {case HSSFCell.CELL_TYPE_FORMULA:break;case HSSFCell.CELL_TYPE_NUMERIC:value += cell.getNumericCellValue() + ",";break;case HSSFCell.CELL_TYPE_STRING:value += cell.getStringCellValue() + ",";break;default:value += "0";break;}}}// 将数据插入到mysql数据库中String[] val = value.split(",");TestEntity entity = new TestEntity();//现在开始数据转换啦!!!!!!*************************************************double a = Double.parseDouble(val[0]);long code = (long)a;entity.setNum1(code);entity.setNum2(val[1]);entity.setNum3(val[2]);entity.setNum4(val[3]);entity.setNum5(val[4]);entity.setNum6(val[5]);TestMethod method = new TestMethod();method.Add(entity);}}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}我们的数据库实在是太复杂,所以这个方法bye-bye了!!!二.手动进行Excel数据和MySql数据转换这个方法也是从网上查到的,比第一种要简单一些,一个命令就搞定,下面copy给大家:假如要把如图所示的Excel表格导入到MySql数据库中,如图:,步骤一:选取要导入的数据快儿,另外要多出一列,如下图:步骤二:将选中的数据快儿拷贝到一个新建的表格工作薄,然后“另存为” -》“文本文件(制表符分割)(*.txt)”,假如存到“D:data.txt”这个位置里。
java进阶解析Springboot上传excel存入数据库步骤

java进阶解析Springboot上传excel存⼊数据库步骤⽬录⼀、导⼊依赖⼆、前端实现三、后台逻辑三、页⾯效果四、可能会遇到的问题⼀、导⼊依赖这⾥还是⽤了Apache的POI插件,现在⼀般的springboot解析excel基本都⽤它。
<!-- ⽂件上传,解析⽂件需要的依赖--><!--poi对excel2007以上版本的⽀持--><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.0.0</version></dependency><!-- poi对excel2003以下版本的⽀持 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.0.0</version></dependency>⼆、前端实现<button type="button" class="layui-btn layui-btn-normal layui-btn-radius" id="bookFileUpload"><i class="layui-icon"></i>⽂件导⼊</button>/*** ⽂件上传--批量导⼊*/e('upload', function () {var upload = layui.upload;var layer = yer;// layer.msg('上传中', {icon: 16, time: 0,shade: 0.3});//执⾏实例var uploadInst = upload.render({elem: '#bookFileUpload', //绑定元素url: '/library/book/batchAddBooks/', //上传接⼝exts: 'xlsx|xls', //限制⽂件类型done: function (res) {//上传完毕回调if (res.code == '1') {successMsg("导⼊成功");} else {errorMsg("导⼊失败" + res);}},error: function (res) {//请求异常回调errorMsg("系统异常" + res);}});});说明⼀下,这⾥还是⽤了layui的框架去实现的,layui是我⽤过的前端框架⾥边坑相对较少的⼀个不错的简单并且很容易⼊门的框架。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if(con != null)
con.close();
con = null;
if(ps != null)
ps.close();
ps = null;
}
return i;
}&list<ObjInfo> getContentList(File file) throws Exception{
ObjInfo obj = null;
for(int r = 1;r < rows;++r){
obj = new ObjInfo();
for(int c = 2;c < clos;++c){
cells[c][r] = sheet.getCell(c,r);
if(cells != null){
//4 为ps赋值 这里该如何写?
int seq = 1;
for(ObjInfo obj : list){
seq = 1;
ps.setString(seq++,obj.getName());
ps.setString(seq++,obj.getTel());
ps.setString(seq++,obj.getAddress());
switch(c){
case 2:
obj.setName(cells[c][r].getContents());
break;
case 3:
obj.setTel(cells[c][r].getContents());
break;
case 4:
obj.setAddress(cells[c][r].getContents());
public int write(List list) throws SQLException {
Connection con = null;
PreparedStatement ps = null;
int i = 0;
try {
//1 加载class
Class.forName(CConnectInfo.driver);
int rows = sheet.getRows();
int clos = sheet.getColumns();
clos = 5;
List<ObjInfo> list = new ArrayList<ObjInfo>();
Cell cells[][] = new Cell[clos][rows];
File file = new File("d:/out.xls");
List<ObjInfo> list = jrt.getContentList(file);
jrt.write(list);
}
class ObjInfo{
private String name;
private String tel;
ps.setString(seq++,obj.getType());
i = ps.executeUpdate();
}
}catch(ClassNotFoundException e){
e.printStackTrace();
}finally{
if(con != null) con.close();
//2 创建连接
con = DriverManager.getConnection(CConnectInfo.url,ername,CConnectInfo.password);
String sql = "insert into consumer(name,cellPhone1,address,productId) values(?,?,?,?,?,?,?)";//?号是占位符,希望动态赋值的;
//3 创建preparedStatement对象
ps = con.prepareStatement(sql);
//4 为ps赋值
这里该如何写?
i = ps.executeUpdate();
}catch(ClassNotFoundException e) {
e.printStackTrace();
con = null;
if(ps != null) ps.close();
ps = null;
}
return i;
}
public static void main(String[] args) throws Exception{
JxlReadTest jrt = new JxlReadTest();
break;
case 5:
obj.setType(cells[c][r].getContents());
break;
}
}
list.add(obj);
}
}
workbook.close();
return list;
}
public int write(List<ObjInfo> list) throws SQLException{
Connection con = null;
PreparedStatement ps = null;
int i = 0;
try{
// 1 加载class
Class.forName(CConnectInfo.driver);
// 2 创建连接
con = DriverManager.getConnection(CConnectInfo.url,ername,CConnectInfo.password);
this.address = address;
}
public String getType(){
return type;
}
public void setType(String type){
this.type = type;
}
}
return tel;
}
public void setTel(String tel){
this.tel = tel;
}
public String getAddress(){
return address;
}
public void setAddress(String address){
String sql = "insert into consumer(name,cellPhone1,address,productId) values(?,?,?,?,?,?,?)";// ?号是占位符,希望动态赋值的;
// 3 创建preparedStatement对象
ps = con.prepareStatement(sql);
Java 从Excel文件获取的数据 如何插入到mysql中去
1.Excel文件获取到的数据 例如下面的:
序号 用户姓名 联系电话 地址 产品型号
1 张三 11111111 富丽7-1-201 5 YT
2 李四 22222222 美地湾景7-2-301 YF
2.如何将这些数据封装成List 把它作为write方法的参数传进
private String address;
private String type;
public String getName(){
return name;
}
public void setName(String name){
= name;
}
public String getTel(){
// 通过Workbook的静态方法getWorkbook选取Excel文件
Workbook workbook = Workbook.getWorkbook(file);
// 通过Workbook的getSheet方法选择第一个工作簿(从0开始)
Sheet sheet = workbook.getSheet(0);