java web excel poi_java web项目中通过apache poi将本地excel文件导入到系统中并打印到控制台...

package com;

import java.io.File;

import java.io.IOException;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileUploadException;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.ss.usermodel.Cell;

import org.apache.poi.ss.usermodel.DateUtil;

import org.apache.poi.ss.usermodel.Row;

import org.apache.poi.ss.usermodel.Sheet;

import org.apache.poi.ss.usermodel.Workbook;

/**

* jar包:

* commons-fileupload-1.2.1.jar

* commons-io-1.4.jar

* poi-3.11-20141221.jar

*

* 直接从上传的输入流中读取excel数据解析出其中的数据

*

*/

@SuppressWarnings("serial")

public class PoiAction extends HttpServlet {

@SuppressWarnings("unchecked")

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

DiskFileItemFactory factory = new DiskFileItemFactory();

// 使用系统临时路径

String path = System.getProperty("user.home");

factory.setRepository(new File(path));

factory.setSizeThreshold(1024 * 1024);

ServletFileUpload upload = new ServletFileUpload(factory);

upload.setHeaderEncoding("utf-8");

try {

//这个方法支持多文件上传,本例子中不需要

List list = (List) upload.parseRequest(request);

for (FileItem item : list) {

// 获取表单的属性名字

String name = item.getFieldName();

// 如果获取的表单信息是普通的文本信息,上传有时候是混在表单中的,本例中不需要考虑

if (item.isFormField()) {

String value = new String((item.getString("iso8859-1")).getBytes("iso8859-1"),"utf-8");

System.out.println(name+":"+value);

} else {

//获取上传路径

//String value = item.getName();

//int start = value.lastIndexOf("\\");

//获得上传文件名

//String filename = value.substring(start + 1);

//将文件写到磁盘,如果不解析就成了文件上传功能了

//item.write(new File(path, filename));

//-----------进行解析---------

Workbook wb = new HSSFWorkbook(item.getInputStream());

Sheet sheet1 = wb.getSheetAt(0);

for (Row row : sheet1) {

for (Cell cell : row) {

// excel单元格的索引

// CellReference cellRef = new CellReference(row.getRowNum(), cell.getColumnIndex());

// System.out.print("索引"+cellRef.formatAsString());

switch (cell.getCellType()) {

// 文本内容

case Cell.CELL_TYPE_STRING:

System.out.println(cell.getRichStringCellValue().getString());

break;

//数字与日期

case Cell.CELL_TYPE_NUMERIC:

if (DateUtil.isCellDateFormatted(cell)) {

System.out.println(cell.getDateCellValue());

} else {

System.out.println(cell.getNumericCellValue());

}

break;

// 公式数据

case Cell.CELL_TYPE_FORMULA:

System.out.println(cell.getCellFormula());

break;

default:

System.out.println();

}

}

}

}

}

} catch (FileUploadException e) {

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

}

request.getRequestDispatcher("index.jsp").forward(request, response);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值