「javapoi导入」poi数据导入
本篇文章给大家谈谈javapoi导入,以及poi数据导入对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java用poi实现将数据库里面的数据导入已经存在的excel模板中。最好有实例参考,谢谢。
- 2、java excel poi 怎么导入
- 3、java我在用poi导入文件夹下的Excel时,导入了几百条后,后台就报Stream closed,这是为什么?
- 4、Java利用POI导入excel表格并将数据存到数据库的问题
- 5、java通过poi把excel文件导入mysql数据库报错
java用poi实现将数据库里面的数据导入已经存在的excel模板中。最好有实例参考,谢谢。
/**
* 通过EXCEL模板导入团队信息
*/
@ResponseBody
@RequestMapping("importTemp")
public MapString,String importTemp(HttpServletRequest request,HttpSession session,
@RequestParam(value="excel", required=false) MultipartFile file, HttpServletResponse response ) {
Yhb yhb=(Yhb)session.getAttribute(WebConstants.CURRENT_USER);
String zjr = yhb.getYhid();
ListDrTdb tdxxList = new ArrayListDrTdb();
MapString,String map = new HashMapString,String();
String sfcg = "1";
String bcghs = "";
String bcgyy = "";
HSSFWorkbook workbook = null;
try {
workbook = new HSSFWorkbook(file.getInputStream());
HSSFSheet sheet = workbook.getSheetAt(0);
if (sheet != null)
{
int d= sheet.getPhysicalNumberOfRows();
other: for (int i = 7; i sheet.getPhysicalNumberOfRows(); i++)
{
sfcg = "2";
HSSFRow row = sheet.getRow(i);
DrTdb td = new DrTdb();
int rs = 1;
//td.setTdbm("T"+DateUtil.CurrentTime("MM-dd"));
td.setZjr(zjr);
for (int j = 0; j 8; j++)
{
HSSFCell cell = row.getCell(j);
if(j == 0){
if(cell != null){
String cellStr = cell.toString();
if(isDigit(cellStr) != ""){
String NDID = (String) tdglService.queryForObject("tdExcel.queryNd",isDigit(cellStr));
td.setNd(NDID);
}else{
sfcg = "0";
bcghs = String.valueOf(i+1);
bcgyy = "请填写正确的年度";
break other;
}
}else{
sfcg = "0";
bcghs = String.valueOf(i+1);
bcgyy = "年度不可为空";
break other;
}
}else if(j == 1){
if(cell != null){
String cellStr = cell.toString();
String YXID = (String) tdglService.queryForObject("tdExcel.queryIdByYx",cellStr);
String YXDM = (String) tdglService.queryForObject("tdExcel.queryDmByYx",cellStr);
if(YXDM==null || YXDM==""){
sfcg = "0";
bcghs = String.valueOf(i+1);
bcgyy = "院系不存在";
break other;
}
td.setSsyx(YXID);
//设置团队编码
String currentYear = DateUtil.CurrentTime("yyyy");//当前年份
String tdbm="";
String str=null;
str="T"+currentYear+YXDM;
String maxID = (String) tdglService.queryForObject("tdgl.queryMaxID", str);//当前团队最大ID
String str_q= maxID.substring(1);
int MAXID=Integer.parseInt(str_q); //将返回的字符串去掉T
tdbm="T"+(MAXID+1);
td.setTdbm(tdbm);
}else{
sfcg = "0";
bcghs = String.valueOf(i+1);
bcgyy = "院系不存在";
break other;
}
}else if(j == 3){
if(cell != null){
String cellStr = cell.toString();
String[] zdjs = cellStr.split(",");
for(int in = 0; in zdjs.length; in ++){
zdjs[in] = zdjs[in].substring(1,zdjs[in].length()-1);
//zdjs[in]=isDigit(zdjs[in]);
zdjs[in] = (String) tdglService.queryForObject("tdExcel.queryIdByZgh",zdjs[in]);
if("".equals(zdjs[in]) || zdjs[in] == null){
sfcg = "0";
bcghs = String.valueOf(i+1);
bcgyy = "教师编号有误";
break other;
}
}
td.setZdjs(zdjs);
}else{
sfcg = "0";
bcghs = String.valueOf(i+1);
bcgyy = "指导教师不可为空";
break other;
}
}else if(j == 5){
if(cell != null){
String cellStr = cell.toString();
cellStr = cellStr.substring(1,cellStr.length()-1);
// BigDecimal bg=new BigDecimal(cellStr);
//cellStr=bg.toPlainString();
cellStr = (String) tdglService.queryForObject("tdExcel.queryIdByXh",cellStr);
if("".equals(cellStr) || cellStr == null){
sfcg = "0";
bcghs = String.valueOf(i+1);
bcgyy = "团队组长学号有误";
break other;
}
else{
String Tdid = (String) tdglService.queryForObject("tdExcel.queryryid",cellStr);
String XM = (String) tdglService.queryForObject("tdExcel.queryXmBy",cellStr);
if( Tdid!= null){
sfcg = "0";
bcghs = String.valueOf(i+1);
bcgyy = "团队组长"+XM+"已存在";
break other;
}
}
td.setTdzz(cellStr);
}else{
sfcg = "0";
bcghs = String.valueOf(i+1);
bcgyy = "团队组长不可为空";
break other;
}
}else if(j == 7){
if(cell != null){
String cellStr = cell.toString();
String[] tdzy = cellStr.split(",");
for(int k = 0; k tdzy.length; k++){
tdzy[k] = tdzy[k].substring(1,tdzy[k].length()-1);
tdzy[k] = (String) tdglService.queryForObject("tdExcel.queryIdByXh",tdzy[k]);
if("".equals(tdzy[k]) || tdzy[k] == null){
sfcg = "0";
bcghs = String.valueOf(i+1);
bcgyy = "团队组员学号有误";
break other;
}
rs++;
}
td.setTdzy(tdzy);
}else{
sfcg = "0";
bcghs = String.valueOf(i+1);
bcgyy = "团队组员不可为空";
break other;
}
}
}
td.setRs(String.valueOf(rs));
tdxxList.add(td);
}
}
}catch(IOException e){
e.printStackTrace();
}
if("2".equals(sfcg)){
for(DrTdb tdxx : tdxxList){
tdglService.insert("tdExcel.addTdxx", tdxx);
tdglService.insert("tdExcel.addTdzz", tdxx);
tdglService.insert("tdExcel.addTdzy", tdxx);
tdglService.insert("tdExcel.addZdjs", tdxx);
}
}
map.put("sfcg",sfcg );
map.put("bcghs",bcghs );
map.put("bcgyy",bcgyy );
return map;
}
看不懂留言
java excel poi 怎么导入
1、下载poi相关jar,maven的集成如下:(把${poi.version}替换成你要的版本)
dependency
groupIdorg.apache.poi/groupId
artifactIdpoi/artifactId
version${poi.version}/version
scopeprovided/scope
/dependency
dependency
groupIdorg.apache.poi/groupId
artifactIdpoi-ooxml/artifactId
version${poi.version}/version
scopeprovided/scope
/dependency
dependency
groupIdorg.apache.poi/groupId
artifactIdpoi-ooxml-schemas/artifactId
version${poi.version}/version
scopeprovided/scope
/dependency
2、根据poi相关api读取sheet、row、cell,获得excel的数据:
封装row的对象,即每一行数据为一个对象,每个cell为对象里的一个属性,
整个sheet的数据装进集合里;
3、处理数据,可以对数据进行验证或其他操作;
4、写数据库操作。
java我在用poi导入文件夹下的Excel时,导入了几百条后,后台就报Stream closed,这是为什么?
1.把你的内存弄大点。
2.升级到POI3.8(新版本对解析效率有改进)。
3.导入,到处最好统一到POI来。
4.一定要找到内存溢出的原因!!!
5.先把你的测试数据弄少一点,或者看看你的Office版本。。。
Java利用POI导入excel表格并将数据存到数据库的问题
当有合并表格的情况下,认为是左上角单元格的数据,意思就是 标题 认为是a1,但是当你循环遍历这样的合并表格的话,数据是会重复的,即把合并的单元格拆分后每个单元格的数据都是一样的,这样就需要你判断过滤了。至于你这种单元格拼接的话就没有什么办法了,读取出单元格数据循环判断,然后存入数据库就行了
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!");
}
}
}
}
保存结果:
关于javapoi导入和poi数据导入的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。