解析excel文件並將數據導入到數據庫中


今天領導給安排了一個臨時工作,讓我將一個excel里面的數據解析后放入數據庫中,經過一個下午的努力成功完成,現在將代碼獻上,希望對大家有所幫助

一、需要導入的jar

  1.commons-collections4-4.1.jar

  2.poi-3.17-beta1.jar

  3.poi-ooxml-3.17-beta1.jar

  4.poi-ooxml-schemas-3.17-beta1.jar

  5.xmlbeans-2.6.0.jar

對應的maven依賴如下:

<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17-beta1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.17-beta1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.xmlbeans/xmlbeans -->
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>2.6.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17-beta1</version>
</dependency>

 

二、主要API

  1.import org.apache.poi.ss.usermodel.Workbook,對應Excel文檔;

  2.import org.apache.poi.hssf.usermodel.HSSFWorkbook,對應xls格式的Excel文檔;

  3.import org.apache.poi.xssf.usermodel.XSSFWorkbook,對應xlsx格式的Excel文檔;

  4.import org.apache.poi.ss.usermodel.Sheet,對應Excel文檔中的一個sheet;

  5.import org.apache.poi.ss.usermodel.Row,對應一個sheet中的一行;

  6.import org.apache.poi.ss.usermodel.Cell,對應一個單元格。

三、對應帶代碼如下:

1.TestExcelToDb 類代碼

package com.it.intelligent.list.dto;

import java.sql.*;
import java.util.List;

public class TestExcelToDb {

String url ="jdbc:postgresql://10.43.225.69:5432/it?currentSchema=it";
String user="11";
String pwd="11";
Connection conn=null;
ResultSet rs=null;

public void dataBase() {
try {
Class.forName("org.postgresql.Driver");
conn= DriverManager.getConnection(url, user, pwd);
} catch (ClassNotFoundException e) {
System.out.println("裝載JDBC 驅動程序失敗");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("無法連接數據庫");
e.printStackTrace();
}
}

//增刪修改

public int addU(String sql,String str[]) {
int a=0;
try {
PreparedStatement pst=conn.prepareStatement(sql);
if (str!=null) {
for (int i = 0; i < str.length; i++) {
pst.setString(i+1, str[i]);
}
}
a=pst.executeUpdate();
} catch (Exception e) {
// TODO: handle exception
}

return a;

}
public static void main(String[] args) {
//得到表格中所有的數據
List<TempData> listExcel=StuService.getAllByExcel("D:/l4/百貨部分數據.xlsx");
TestExcelToDb testExcelToDb =new TestExcelToDb();
testExcelToDb.dataBase();
System.out.println(listExcel.size());
int sum=0;
for (TempData tempData : listExcel) {
String sql="insert into temp_data(l4_gds_grp_cd,l4_gds_grp_nm,gds_cd,vendor_cd,gds_nm)values(?,?,?,?,?)";
String[] str=new String[] {tempData.getL4GdsGrpCd(),tempData.getL4GdsGrpNm(),tempData.getGdsCd(),tempData.getVendorCd(),tempData.getGdsNm()+""};
testExcelToDb.addU(sql, str);
sum++;
}
System.out.println(sum);
}
}


2.StuService 代碼
package com.it.intelligent.list.dto;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

public class StuService {
//查詢指定目錄中電子表格中所有的數據
public static List<TempData> getAllByExcel(String file) {
Workbook wb = null;
Sheet sheet = null;
Row row = null;
List<TempData> list = null;
wb = readExcel(file);
if (wb != null) {
//用來存放表中數據
list =new ArrayList<>();
//獲取第一個sheet
sheet = wb.getSheetAt(0);
//獲取最大行數
int rownum = sheet.getPhysicalNumberOfRows();
//獲取第一行
row = sheet.getRow(0);
//獲取最大列數
int colnum = row.getPhysicalNumberOfCells();
for (int i = 1; i < rownum; i++) {
row = sheet.getRow(i);
if (row != null) {
for (int j = 0; j < colnum; j++) {
Cell cell = row.getCell(j);
String cellValue = cell.getRichStringCellValue().getString();
String[] strings = cellValue.split("#NLP#");
System.out.println(strings.length);
TempData tempData = new TempData();
tempData.setL4GdsGrpCd(strings[0]);
tempData.setL4GdsGrpNm(strings[1]);
tempData.setGdsCd(strings[2]);
tempData.setVendorCd(strings[4]);
tempData.setGdsNm(strings[3]);
list.add(tempData);
}
} else {
break;
}
}
}
return list;
}

//讀取excel
public static Workbook readExcel(String filePath) {
Workbook wb = null;
if (filePath == null) {
return null;
}
String extString = filePath.substring(filePath.lastIndexOf("."));
InputStream is = null;
try {
is = new FileInputStream(filePath);
if (".xls".equals(extString)) {
return wb = new HSSFWorkbook(is);
} else if (".xlsx".equals(extString)) {
return wb = new XSSFWorkbook(is);
} else {
return wb = null;
}

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return wb;
}
}

3.TempData 代碼
package com.it.intelligent.list.dto;

public class TempData {
private String l4GdsGrpCd;
private String l4GdsGrpNm;
private String gdsCd;
private String vendorCd;
private String categoryCd;
private String categoryNm;
private String gdsNm;
private String listWords;
private String updateTime;
private String etlTime;

public String getL4GdsGrpCd() {
return l4GdsGrpCd;
}

public void setL4GdsGrpCd(String l4GdsGrpCd) {
this.l4GdsGrpCd = l4GdsGrpCd;
}

public String getL4GdsGrpNm() {
return l4GdsGrpNm;
}

public void setL4GdsGrpNm(String l4GdsGrpNm) {
this.l4GdsGrpNm = l4GdsGrpNm;
}

public String getGdsCd() {
return gdsCd;
}

public void setGdsCd(String gdsCd) {
this.gdsCd = gdsCd;
}

public String getVendorCd() {
return vendorCd;
}

public void setVendorCd(String vendorCd) {
this.vendorCd = vendorCd;
}

public String getCategoryCd() {
return categoryCd;
}

public void setCategoryCd(String categoryCd) {
this.categoryCd = categoryCd;
}

public String getCategoryNm() {
return categoryNm;
}

public void setCategoryNm(String categoryNm) {
this.categoryNm = categoryNm;
}

public String getGdsNm() {
return gdsNm;
}

public void setGdsNm(String gdsNm) {
this.gdsNm = gdsNm;
}

public String getListWords() {
return listWords;
}

public void setListWords(String listWords) {
this.listWords = listWords;
}

public String getUpdateTime() {
return updateTime;
}

public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}

public String getEtlTime() {
return etlTime;
}

public void setEtlTime(String etlTime) {
this.etlTime = etlTime;
}
}

4.excel中數據如圖所示:


四:運行結果

 





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM