java excel poi 怎么导入

Python017

java excel poi 怎么导入,第1张

1、下载poi相关jar,maven的集成如下:(把${poi.version}替换成你要的版本)

 <dependency>

            <groupId>org.apache.poi</groupId>

            <artifactId>poi</artifactId>

            <version>${poi.version}</version>

            <scope>provided</scope>

        </dependency>

        <dependency>

            <groupId>org.apache.poi</groupId>

            <artifactId>poi-ooxml</artifactId>

            <version>${poi.version}</version>

            <scope>provided</scope>

        </dependency>

        <dependency>

            <groupId>org.apache.poi</groupId>

            <artifactId>poi-ooxml-schemas</artifactId>

            <version>${poi.version}</version>

            <scope>provided</scope>

        </dependency>

2、根据poi相关api读取sheet、row、cell,获得excel的数据

封装row的对象,即每一行数据为一个对象,每个cell为对象里的一个属性,

整个sheet的数据装进集合里;

3、处理数据,可以对数据进行验证或其他操作;

4、写数据库操作。

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

[java] view plaincopy

//读取excel

try {

request.setCharacterEncoding("gbk")

response.setContentType("text/htmlcharset=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项

List<FileItem>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 = 1i <= 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)

}