[英]How to insert into database reading from excel sheet using java POI?
I'm reading the value from excel sheet using java POI and need to insert into database.I have string,numeric and date values from excel sheet as well as first fields are column header.我正在使用 java POI 从 excel 工作表中读取值并需要插入到数据库中。我有来自 excel 工作表的字符串、数字和日期值以及第一个字段是列标题。
public class SimpleExcelReadExample {
static Connection con1 = null;
static Connection con3 = null;
static PreparedStatement preparedstatement = null;
static ResultSet resultset = null;
int j = 0;
public static void main(String[] args) {
String fileName = "D:/Excel/Report.xls";
Cleartables.table_daily_report();
Vector dataHolder = read(fileName);
saveToDatabase(dataHolder);
}
public static Vector read(String fileName) {
Vector cellVectorHolder = new Vector();
try {
FileInputStream myInput = new FileInputStream(fileName);
POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput);
HSSFWorkbook myWorkBook = new HSSFWorkbook(myFileSystem);
HSSFSheet mySheet = myWorkBook.getSheetAt(0);
Iterator rowIter = mySheet.rowIterator();
while (rowIter.hasNext()) {
HSSFRow myRow = (HSSFRow) rowIter.next();
Iterator cellIter = myRow.cellIterator();
Vector cellStoreVector = new Vector();
while (cellIter.hasNext()) {
HSSFCell myCell = (HSSFCell) cellIter.next();
//System.out.println("read method"+myCell);
cellStoreVector.addElement(myCell);
}
cellVectorHolder.addElement(cellStoreVector);
}
} catch (Exception e) {
e.printStackTrace();
}
return cellVectorHolder;
}
private static void saveToDatabase(Vector dataHolder)
{
for (int i=0;i<dataHolder.size(); i++)
{
Vector cellStoreVector=(Vector)dataHolder.elementAt(i);
for (int j=0; j < cellStoreVector.size();j++)
{
System.out.println("show.....");
HSSFCell myCell = (HSSFCell)cellStoreVector.elementAt(j);
Please help me here....How to get the each column values ?
}
try {
FileInputStream file = new FileInputStream(new File("E://Imp/Details.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = workbook.getSheetAt(0);
Iterator<Row> rowIterator = sheet.iterator();
rowIterator.next();
while(rowIterator.hasNext())
{
Row row = rowIterator.next();
//For each row, iterate through each columns
Iterator<Cell> cellIterator = row.cellIterator();
while(cellIterator.hasNext())
{
Cell cell = cellIterator.next();
//This will change all Cell Types to String
cell.setCellType(Cell.CELL_TYPE_STRING);
switch(cell.getCellType())
{
case Cell.CELL_TYPE_BOOLEAN:
System.out.println("boolean===>>>"+cell.getBooleanCellValue() + "\t");
break;
case Cell.CELL_TYPE_NUMERIC:
break;
case Cell.CELL_TYPE_STRING:
list.add(cell.getStringCellValue());
break;
}
}
name=row.getCell(0).getStringCellValue();
empid=row.getCell(1).getStringCellValue();
add=row.getCell(2).getStringCellValue();
mobile=row.getCell(3).getStringCellValue();
System.out.println(name+empid+add+mobile);
ex.InsertRowInDB(name,empid,add,mobile);
System.out.println("");
}
file.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void InsertRowInDB(String name,String empid,String add,String mobile) throws SQLException{
Statement stmt=db.con.createStatement();
PreparedStatement ps=null;
String sql="Insert into Employee(Name,EmployeeId,Address,ContactInfo) values(?,?,?,?)";
ps=db.con.prepareStatement(sql);
ps.setString(1, name);
ps.setString(2, empid);
ps.setString(3, add);
ps.setString(4, mobile);
ps.executeUpdate();
System.out.println("Values Inserted Successfully");
}
}
Try this:试试这个:
try {尝试 {
String jdbc_insert_sql = "INSERT INTO TBL_PUNETORET"
+ "( NUMRI_PERSONAL, EMRI_MBIEMRI,DATELINDJA,ADRESA,TELEFONI,DATA_PUNSIMIT,DATA_LARGIMIT,NJESIA,POZITA,TELEFONI_P,EMAIL,PERSHKRIMI,PUNTORI,REKOMANDUAR) "
+ "VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
Class.forName("oracle.jdbc.driver.OracleDriver");
PreparedStatement preStatement = con.prepareStatement(jdbc_insert_sql);
con.setAutoCommit(false);
FileInputStream input = new FileInputStream(filename);
POIFSFileSystem fs = null;
try {
fs = new POIFSFileSystem(input);
} catch (IOException ex) {
Logger.getLogger(PunetoretForm.class.getName()).log(Level.SEVERE, null, ex);
}
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
Row row;
for (int i = 1; i <= sheet.getLastRowNum(); i++) {
row = sheet.getRow(i);
int numripersonal = (int) (row.getCell(0).getNumericCellValue());
//String numripersonal = row.getCell(0).getStringCellValue();
String emri = row.getCell(1).getStringCellValue();
Date datelindja = row.getCell(4).getDateCellValue();
DateFormat df = new SimpleDateFormat("dd/MMM/yyyy");
String reportDate = df.format(datelindja);
df.parse(reportDate);
String adresa = row.getCell(5).getStringCellValue();
int telefoni = (int) (row.getCell(6).getNumericCellValue());
//String telefoni = row.getCell(4).getStringCellValue();
Date datap = row.getCell(7).getDateCellValue();
df = new SimpleDateFormat("dd/MMM/yyyy");
String reportDatap = df.format(datap);
df.parse(reportDatap);
Date datal = row.getCell(8).getDateCellValue();
String ss = null;
if (datal != null) {
df = new SimpleDateFormat("dd/MMM/yyyy");
ss = df.format(datal);
df.parse(ss);
}
String njesia = row.getCell(9).getStringCellValue();
String pozita = row.getCell(10).getStringCellValue();
int telp = (int) (row.getCell(11).getNumericCellValue());
if (telp == 0) {
String s = String.valueOf(telp);
s = "Ska numer";
}
//String telp = row.getCell(9).getStringCellValue();
String email = row.getCell(12).getStringCellValue();
String pershkrimi = row.getCell(13).getStringCellValue();
String punetori = row.getCell(14).getStringCellValue();
String rekomanduar = row.getCell(15).getStringCellValue();
if (datal == null) {
String sql = "INSERT INTO TBL_PUNETORET ( NUMRI_PERSONAL, EMRI_MBIEMRI,DATELINDJA,ADRESA,TELEFONI,DATA_PUNSIMIT,DATA_LARGIMIT,NJESIA,POZITA,TELEFONI_P,EMAIL,PERSHKRIMI,PUNTORI,REKOMANDUAR) "
+ "VALUES('" + numripersonal + "','" + emri + "','" + reportDate + "','" + adresa + "','" + telefoni + "','" + reportDatap + "'," + datal + ",'" + njesia + "','" + pozita + "','" + telp + "','" + email + "','" + pershkrimi + "','" + rekomanduar + "','" + punetori + "')";
preStatement = (PreparedStatement) con.prepareStatement(sql);
preStatement.execute();
}
This is the code that I wrote for the same operation.这是我为相同操作编写的代码。 Please note that I have also created an Employee java class with all these 4 properties: id,name, gender salary with their getter-setters.
请注意,我还创建了一个 Employee java 类,其中包含所有这 4 个属性:id、name、gender 工资及其 getter-setter。
package com.hibernate.poiex2;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Iterator;
import java.util.Properties;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
/**
*
* @author nidhi
*/
public class POIex2 {
XSSFRow row;
Employee e = new Employee();
public static void main(String[] args) throws IOException {
String fileName = "/home/nidhi/Downloads/Employees.xlsx";
POIex2 poIex2 = new POIex2();
poIex2.readFile(fileName);
}
public void readFile(String fileName) throws FileNotFoundException, IOException {
FileInputStream fis;
try {
System.out.println("-------------------------------READING THE SPREADSHEET-------------------------------------");
fis = new FileInputStream(fileName);
XSSFWorkbook workbookRead = new XSSFWorkbook(fis);
XSSFSheet spreadsheetRead = workbookRead.getSheetAt(0);
Iterator< Row> rowIterator = spreadsheetRead.iterator();
while (rowIterator.hasNext()) {
row = (XSSFRow) rowIterator.next();
Iterator< Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
cell.setCellType(CellType.STRING);
switch (cell.getColumnIndex()) {
case 0:
System.out.print(
cell.getStringCellValue() + " \t\t");
break;
case 1:
System.out.print(
cell.getStringCellValue() + " \t\t");
break;
case 2:
System.out.print(
cell.getStringCellValue() + " \t\t");
break;
case 3:
System.out.print(
cell.getStringCellValue() + " \t\t");
break;
case 4:
System.out.print(
cell.getStringCellValue() + " \t\t");
break;
}
}
System.out.println();
e.empId = Integer.parseInt(row.getCell(0).getStringCellValue());
e.empName = row.getCell(1).getStringCellValue();
e.gender = row.getCell(2).getStringCellValue();
e.salary = row.getCell(3).getStringCellValue();
InsertRowInDB(e.empId, e.empName, e.gender, e.salary);
}
System.out.println("Values Inserted Successfully");
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void InsertRowInDB(int empId, String empName, String gender, String salary) {
Float salaryDB = Float.parseFloat(salary);
try {
Properties properties = new Properties();
properties.setProperty("user", "root");
properties.setProperty("password", "root");
properties.setProperty("useSSL", "false");
properties.setProperty("autoReconnect", "true");
Class.forName("com.mysql.jdbc.Driver");
Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/Attendance", properties);
Statement stmt = connect.createStatement();
PreparedStatement ps = null;
String sql = "INSERT INTO `Attendance`.`Employee_Master`\n"
+ "(`EmployeeId`,\n"
+ "`EmployeeName`,\n"
+ "`Gender`,\n"
+ "`Salary`)\n"
+ "VALUES(?,?,?,?)";
ps = connect.prepareStatement(sql);
ps.setInt(1, empId);
ps.setString(2, empName);
ps.setString(3, gender);
ps.setFloat(4, salaryDB);
ps.executeUpdate();
connect.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
try this试试这个
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import com.mani.beans.Student;
public class ReadDataFromExcel {
public static void main(String args[]) throws IOException {
SessionFactory sf = new AnnotationConfiguration().configure("com/mani/resources/hibernate.cfg.xml").buildSessionFactory();
Session session = sf.openSession();
FileInputStream file = new FileInputStream(new File("C:/Users/mani/Desktop/data.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = workbook.getSheetAt(1);
Row row;
for(int i=1; i<=sheet.getLastRowNum(); i++){ //points to the starting of excel i.e excel first row
row = (Row) sheet.getRow(i); //sheet number
String id;
if( row.getCell(0)==null) { id = "0"; }
else id= row.getCell(0).toString();
String name;
if( row.getCell(1)==null) { name = "null";} //suppose excel cell is empty then its set to 0 the variable
else name = row.getCell(1).toString(); //else copies cell data to name variable
String address;
if( row.getCell(2)==null) { address = "null"; }
else address = row.getCell(2).toString();
Transaction t = session.beginTransaction();
Student std = new Student();
std.setId(Double.parseDouble(id));
std.setName(name);
std.setAddress(address);
System.out.println(std.getId()+" "+std.getName()+" "+std.getAddress());
session.saveOrUpdate(std);
t.commit();
}
file.close();
}
}`
Excel file insert into database. Excel 文件插入数据库。 It works for me.
这个对我有用。
Imported jar files:导入的jar文件:
Dont forget to import database jar
file.不要忘记导入数据库
jar
文件。
Hope it will help you.希望它会帮助你。
public class ExcelToDatabase {
public static void main(String[] args) {
try {
String filename = "exceldatabase.xlsx";
try (FileInputStream file = new FileInputStream(new File(filename))) {
Workbook workbook = WorkbookFactory.create(file);
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
String jdbc_insert_sql = "INSERT INTO employee" + "VALUES(?,?,?)";
PreparedStatement preStatement = con.prepareStatement(jdbc_insert_sql);
Sheet sheet = workbook.getSheetAt(0);
Row row;
System.out.println("last row number is=========" + sheet.getLastRowNum());
for (int i = 1; i <= sheet.getLastRowNum(); i++) {
row = sheet.getRow(i);
int empId = (int)(row.getCell(0).getNumericCellValue());
String empName = row.getCell(1).getStringCellValue();
String empEmail = row.getCell(2).getStringCellValue();
String sql = "insert into employee " + "values('" + empId + "','" + empName + "','" + empEmail + "')";
preStatement = (PreparedStatement) con.prepareStatement(sql);
preStatement.execute();
System.out.println("Records inserted.........." + i);
}
System.out.println("");
}
} catch (Exception e) {}
}
}
how to read data from excel sheet and insert into database table in java如何从excel表中读取数据并插入到java中的数据库表中
if (fileName.endsWith(".xls")) { if (fileName.endsWith(".xls")) {
CustomerVo customerVo = new CustomerVo();//your vo
File myFile = new File("file location" + fileName);
FileInputStream fis = new FileInputStream(myFile);
// Finds the workbook instance for XLSX file
org.apache.poi.ss.usermodel.Workbook workbook = null;
try {
workbook = WorkbookFactory.create(fis);
} catch (InvalidFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Row row = null;
// Return first sheet from the XLSX workbook
org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(0);
// Get iterator to all the rows in current sheet
Iterator<Row> rowIterator = sheet.iterator();
int i = 0;
// Traversing over each row of XLSX file
while (rowIterator.hasNext()) {
row = rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
if (i != 0) {
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
if (i != 0) {
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
System.out.print(cell.getStringCellValue());
customerVo.setName(row.getCell(1).getStringCellValue());
customerVo.setSex(row.getCell(2).getStringCellValue());
DateFormat formatter = new SimpleDateFormat("E MMM dd HH:mm:ss Z yyyy");
Date date;
try {
date = (Date) formatter.parse(row.getCell(3).getStringCellValue());
customerVo.setDob(date);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
customerVo.setEmail(row.getCell(4).getStringCellValue());
customerVo.setAddress(row.getCell(6).getStringCellValue());
customerVo.setCity(row.getCell(8).getStringCellValue());
customerVo.setState(row.getCell(9).getStringCellValue());
break;
case Cell.CELL_TYPE_BOOLEAN:
System.out.print(cell.getBooleanCellValue());
break;
case Cell.CELL_TYPE_NUMERIC:
System.out.print(cell.getNumericCellValue());
customerVo.setAccountnumber((int) row.getCell(0).getNumericCellValue());
customerVo.setPincode((int) row.getCell(7).getNumericCellValue());
customerVo.setBalance((int) row.getCell(10).getNumericCellValue());
customerVo.setMobile((long) row.getCell(5).getNumericCellValue());
break;
}
System.out.print(" - ");
}
i++;
}
System.out.println(customerVo);//your data store in the object
fileUploadService.customerFile(customerVo);//this method using mvc service to dao impl
}
i++;
}
}
// for storing file to db // 用于将文件存储到数据库
@Repository public class FileUploadDAOImpl implements FIleUploadDAO { @Repository 公共类 FileUploadDAOImpl 实现了 FIleUploadDAO {
@Autowired
private DataSource dataSource;
@Override
public CustomerVo customerFile(CustomerVo customerVo) {
String query = "insert into file_upload_table(name,sex,dob,email,mobile,address,pincode,city,state,balance,account_number)"
+ "values(?,?,?,?,?,?,?,?,?,?,?)";
Connection connection = null;
try {
connection = dataSource.getConnection();
Date oldDate = new Date(customerVo.getDob().getTime());
java.sql.PreparedStatement ps = null;
java.sql.ResultSet rs = null;
try {
ps = connection.prepareStatement(query);
// ps.setLong(1, customerVO.getAccountNo());
ps.setString(1, customerVo.getName());
ps.setString(2, customerVo.getSex());
ps.setDate(3,oldDate);
ps.setString(4, customerVo.getEmail());
ps.setLong(5, customerVo.getMobile());
ps.setString(6, customerVo.getAddress());
ps.setLong(7, customerVo.getPincode());
ps.setString(8, customerVo.getCity());
ps.setString(9, customerVo.getState());
ps.setLong(10, customerVo.getBalance());
ps.setLong(11, customerVo.getAccountnumber());
ps.executeUpdate();
} catch (SQLException e) {
// TODO: handle exception
e.printStackTrace();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.