文档库 最新最全的文档下载
当前位置:文档库 › poi读取excel并输出到jsp页面

poi读取excel并输出到jsp页面

poi读取excel并输出到jsp页面
poi读取excel并输出到jsp页面

代码来源于网络,只做了部分修改,我也是刚用到很多都不懂,找了一些例子之类的自己用,有些不错的分享给大家,仅供参考。

下面这个是用servlet做(注意web.xml );其实原理一样;源码如下

readExcelServlet.java

package com.test.servlet;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import https://www.wendangku.net/doc/286190405.html,ermodel.HSSFCell;

import https://www.wendangku.net/doc/286190405.html,ermodel.HSSFDateUtil;

import https://www.wendangku.net/doc/286190405.html,ermodel.HSSFRow;

import https://www.wendangku.net/doc/286190405.html,ermodel.HSSFSheet;

import https://www.wendangku.net/doc/286190405.html,ermodel.HSSFWorkbook;

import org.apache.poi.poifs.filesystem.POIFSFileSystem;

/**

* author:wx * describe:Reads the Excel example *

*/

public class readExcelServlet extends HttpServlet {

/**

*

*/

private static final long serialVersionUID = 1L;

/**

* * Constructor of the object.

*/

public readExcelServlet() {

super();

}

/**

* Destruction of the servlet.

*

*/

public void destroy() {

super.destroy();

}// Just puts "destroy" string in log

// Put your code here

/**

* doGet

*/

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request, response);

}

/**

* doPost

*/

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

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

PrintWriter out = response.getWriter();

String filePath = new String(request.getParameter("file").getBytes(

"GBK"), "gb2312");//注意如果这里出现乱码导致文件路径错误试着改下GBK,换成ISO-8859-1

out.print("文件路径:" + filePath + "
");

try {

POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(

filePath));

// 创建工作簿

HSSFWorkbook workBook = new HSSFWorkbook(fs);

/**

* 获得Excel中工作表个数

*/

out.println("工作表个数 :" + workBook.getNumberOfSheets() + "
");

for (int i = 0; i < workBook.getNumberOfSheets(); i++) {

out.println(" " + i

+ " ***************工作表名称:"+ workBook.getSheetName(i)

+ " ************
");

// 创建工作表

HSSFSheet sheet = workBook.getSheetAt(i);

int rows = sheet.getPhysicalNumberOfRows(); // 获得行数

if (rows > 0) {

sheet.getMargin(HSSFSheet.TopMargin);

for (int j = 0; j < rows; j++) { // 行循环

HSSFRow row = sheet.getRow(j);

if (row != null) {

int cells = row.getLastCellNum();// 获得列数

for (short k = 0; k < cells; k++) { // 列循环

HSSFCell cell = row.getCell(k);

if (cell != null) {

String value = "";

switch (cell.getCellType()) {

case HSSFCell.CELL_TYPE_NUMERIC:

if (HSSFDateUtil

.isCellDateFormatted(cell)) {

// 如果是date类型则,获取该cell的date值

value = HSSFDateUtil.getJavaDate(

cell.getNumericCellValue())

.toString();

out.println("第"+ j + "行,第" + k

+ "列值:" + value + "
");

} else {// 纯数字

value = String.valueOf(cell

.getNumericCellValue());

out.println("第"+ j + "行,第" + k

+ "列值:" + value + "
");

}

break;

/* 此行表示单元格的内容为string类型*/

case HSSFCell.CELL_TYPE_STRING: // 字符串型

value = cell.getRichStringCellValue()

.toString();

out.println("第" + j + "行,第" + k + "列值:"

+ value + "
");

break;

case

HSSFCell.CELL_TYPE_FORMULA:// 公式型

// 读公式计算值

value = String.valueOf(cell .getNumericCellValue());

if(value.equals("NaN")) {// 如果获取的数据值为非法值,则转换为获取字符串

//

value = cell .getRichStringCellValue()

.toString();

}

// cell.getCellFormula();读公

out.println("第" + j + "行,第" + k + "列值:"

+ value + "
");

break;

case

HSSFCell.CELL_TYPE_BOOLEAN:// 布尔

value = " "

+

cell.getBooleanCellValue();

out.println("第" + j + "行,第" + k + "列值:"

+ value + "
");

break;

/* 此行表示该单元格值为空 */

case HSSFCell.CELL_TYPE_BLANK: // 空值

value = "";

out.println("第" + j + "行,第" + k + "列值:"

+ value + "
");

break;

case HSSFCell.CELL_TYPE_ERROR: // 故障

value = "";

out.println("第" + j + "行,第" + k + "列值:"

+ value + "
");

break;

default:

value = cell.getRichStringCellValue()

.toString();

out.println("第" + j + "行,第" + k + "列值:"

+ value + "
");

}

}

}

}

}

}

}

} catch (Exception ex) {

ex.printStackTrace();

}

out.print("");

out.flush();

out.close();

}

public void init() throws ServletException {

// Put your code here

}

}

下面是jsp页面;

readExcel.jsp

<%@page language="java"import="java.util.*"pageEncoding="gb2312"%> <%

String path = request.getContextPath();

String basePath = request.getScheme() + "://"

+ request.getServerName() + ":" + request.getServerPort()

+ path + "/";

%>

My JSP 'readExcel.jsp' starting page

上传附件:





相关文档