本文目錄一覽:
- 1、java poi實現excel中的數據導入到mysql資料庫中,例如excel中有id,name,age。將其導入到資料庫中。
- 2、java通過poi把excel文件導入mysql資料庫報錯
- 3、如何將excel表數據導入MySql資料庫
java poi實現excel中的數據導入到mysql資料庫中,例如excel中有id,name,age。將其導入到資料庫中。
package bis.excel;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import jxl.Sheet;
import jxl.Workbook;
public class Excel {
@SuppressWarnings(“unchecked”)
public List addCust(File file){
List list=new ArrayList();
List list2=new ArrayList();
Workbook rwb=null;
try {
List list1=new ArrayList();
InputStream is=new FileInputStream(file);//讀取文件(所要導入excel的保存目錄,如:f:\\a.xls)
rwb=Workbook.getWorkbook(is);//創建工作薄
Sheet rs=rwb.getSheet(0);//讀取excel中的第一個工作表(默認新建excel下面有sheet1,sheet2,sheet3)
int cellCount=rs.getColumns();//獲取Sheet表中所包含的總列數
int rowCount=rs.getRows();//獲取Sheet表中所包含的總行數
for(int m=0;mcellCount;m++){//將表的第一行數據保存到list1中(列名),即id,name ,age
String cell=rs.getCell(m,0).getContents();
list1.add(cell);
}
for(int i=1;irowCount;i++){//獲取值
Map map=new TreeMap();
for(int j=0;jcellCount;j++){
map.put(list1.get(j),rs.getCell(j,i).getContents());//將值以鍵/值對方式保存到map對象中即(id:1,name:zhangsan,age:18)
}
list.add(map);//將值保存到list中
//System.out.println(list.get(i-1));
}
list2.add(list1);//將表頭(id,name,age)保存到list2中
list2.add(list);//將值保存到list2中
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
rwb.close();
}
return list2;
}
public void tosql(){
List list=addCust(file);//file:所要導入excel的保存目錄,如:f:\\a.xls
Map map=new HashMap();
String[] values=new String[ls2.size()];//保存id,name,age 值
for (int i =0; i ls2.size(); i++) {
map=(Map)ls2.get(i);
String value=””;
id=(String)map.get(“id”);
name=(String)map.get(“name”);
age=(String)map.get(“age”);
value=id+”;”+name+”;”+age;
values[i]=value;
}
}
}
這是段讀取excel表數據的代碼,在tosql方法中調用addCust方法讀取excel表,最後把所有行的id,name,age值保存到了values數組中,也可以保存到類中,如果你會對資料庫操作的話,
後面的你自己弄下就行了,不會的話留言,我晚上在告訴你,我現在上班呢,時間有限,只能寫這麼多了
java通過poi把excel文件導入mysql資料庫報錯
java通過poi把excel文件導入mysql資料庫報錯是因為excel中的數據類型要跟mysql中的數據類型和長度對應,否則類型轉換異常是最常見的。所以插入到mysql資料庫的時候需要做類型檢查。
1、Excel中的測試數據:
2、資料庫表結構:
CREATE TABLE `student_info` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`no` varchar(20) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`age` varchar(10) DEFAULT NULL,
`score` float DEFAULT ‘0’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3、java源碼部分ReadExcel.java:
/**
* 讀取excel中的數據並插入db
*/
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import com.b510.common.Common;
import com.b510.excel.vo.Student;
/**
* @author pieryon
* @created 2016-5-18
*/
public class ReadExcel {
public ListStudent readXls() throws IOException {
InputStream is = new FileInputStream(Common.EXCEL_PATH);
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
Student student = null;
ListStudent list = new ArrayListStudent();
// 循環工作表Sheet
for (int numSheet = 0; numSheet hssfWorkbook.getNumberOfSheets(); numSheet++) {
HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
if (hssfSheet == null) {
continue;
}
// 循環行Row
for (int rowNum = 1; rowNum = hssfSheet.getLastRowNum(); rowNum++) {
HSSFRow hssfRow = hssfSheet.getRow(rowNum);
if (hssfRow != null) {
student = new Student();
HSSFCell no = hssfRow.getCell(0);
HSSFCell name = hssfRow.getCell(1);
HSSFCell age = hssfRow.getCell(2);
HSSFCell score = hssfRow.getCell(3);
student.setNo(getValue(no));
student.setName(getValue(name));
student.setAge(getValue(age));
student.setScore(Float.valueOf(getValue(score)));
list.add(student);
}
}
}
return list;
}
@SuppressWarnings(“static-access”)
private String getValue(HSSFCell hssfCell) {
if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) {
// 返回布爾類型的值
return String.valueOf(hssfCell.getBooleanCellValue());
} else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) {
// 返回數值類型的值
return String.valueOf(hssfCell.getNumericCellValue());
} else {
// 返回字元串類型的值
return String.valueOf(hssfCell.getStringCellValue());
}
}
}
2、SaveData2DB.java
/**
* 插入數據到db
*/
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import com.b510.common.Common;
import com.b510.excel.util.DbUtil;
import com.b510.excel.vo.Student;
/**
* @author pieryon
* @created 2016-5-18
*/
public class SaveData2DB {
@SuppressWarnings({ “rawtypes” })
public void save() throws IOException, SQLException {
ReadExcel xlsMain = new ReadExcel();
Student student = null;
ListStudent list = xlsMain.readXls();
for (int i = 0; i list.size(); i++) {
student = list.get(i);
List l = DbUtil.selectOne(Common.SELECT_STUDENT_SQL + “‘%” + student.getName() + “%'”, student);
if (!l.contains(1)) {
DbUtil.insert(Common.INSERT_STUDENT_SQL, student);
} else {
System.out.println(“The Record was Exist : No. = ” + student.getNo() + ” , Name = ” + student.getName() + “, Age = ” + student.getAge() + “, and has been throw away!”);
}
}
}
}
保存結果:
如何將excel表數據導入MySql資料庫
一般有兩種方式來處理
1、使用js來讀取本地excel文件,讀出一行後,使用ajax傳入後台進行持久化操作(存入資料庫),這種方式僅限於windows和ie,要使用
var oXL = new ActiveXObject(“Excel.application”);
var oWB = oXL.Workbooks.open(filePath);
oWB.worksheets(1).select();
var oSheet = oWB.ActiveSheet;
2、使用poi插件來處理,前台使用input type=”file” value=””來載入本地excel文件,提交到後台後,使用流保存到伺服器,在使用poi處理,保存進入資料庫
從安全性和規範性、通用性考慮,第二種方法更為合適
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/271980.html