「javapoi导入」poi数据导入

博主:adminadmin 2023-01-06 04:57:08 1061

本篇文章给大家谈谈javapoi导入,以及poi数据导入对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

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数据导入的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。