「javapoi导入」poi java 导入导出

博主:adminadmin 2022-12-31 17:54:09 835

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

本文目录一览:

java我在用poi导入文件夹下的Excel时,导入了几百条后,后台就报Stream closed,这是为什么?

1.把你的内存弄大点。

2.升级到POI3.8(新版本对解析效率有改进)。

3.导入,到处最好统一到POI来。

4.一定要找到内存溢出的原因!!!

5.先把你的测试数据弄少一点,或者看看你的Office版本。。。

java利用poi技术导入批量excel数据,并且分段存入数据库怎么解决

注意引入的都是poi的包,使用Cell,excel2003的.xls对应是HSSFCell,而之后的xlsx对应的则是XSSFCell,但是他们都继承于Cell,所以使用Cell就可以使用两种格式的excel导入了,下面解决excel中数据的各种格式

[java] view plaincopy

//读取excel

try {

request.setCharacterEncoding("gbk");

response.setContentType("text/html;charset=gbk");

// 1. 创建工厂类

DiskFileItemFactory factory = new DiskFileItemFactory();

// 2. 创建FileUpload对象

ServletFileUpload upload = new ServletFileUpload(factory);

// 3. 判断是否是上传表单

// boolean b = upload.isMultipartContent(request);

// 设置上传文件最大值

upload.setSizeMax(25 * 1024 * 1024);

// 是文件上传表单

// 4. 解析request,获得FileItem项

ListFileItem fileitems = upload.parseRequest(request);

// 5. 遍历集合

for (FileItem item : fileitems) {

// 判断是不是普通字段

if (!item.isFormField()) {

// 获得流,读取数据写入文件

InputStream in = item.getInputStream();

Workbook book = createWorkBook(in,item.getName());

// 获得第一个工作表对象

Sheet sheet = book.getSheetAt(0);

if(0==sheet.getLastRowNum()){

//如果没有数据

request.setAttribute("message", "excel的sheet0中不存在数据");

request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);

}

// 第一行为标题,从第二行开始录入

for (int i = 1; i = sheet.getLastRowNum(); i++) {

//标题行,用来对比方便得到数据

Row titleRow = sheet.getRow(0);

//数据行

Row row = sheet.getRow(i);

//获得值

String value_temp= this.getValue((Cell) row.getCell(2));

}

}

}

} catch (Exception e) {

e.printStackTrace();

message="导入失败br/"+message;

request.setAttribute("message",message);

request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);

}

Java利用POI导入excel表格并将数据存到数据库的问题

当有合并表格的情况下,认为是左上角单元格的数据,意思就是 标题 认为是a1,但是当你循环遍历这样的合并表格的话,数据是会重复的,即把合并的单元格拆分后每个单元格的数据都是一样的,这样就需要你判断过滤了。至于你这种单元格拼接的话就没有什么办法了,读取出单元格数据循环判断,然后存入数据库就行了

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文件导入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 java 导入导出、javapoi导入的信息别忘了在本站进行查找喔。