最近我的每日一讲是JSP结合JXL.jar包实现网页显示读取的Excel表格,话说和JXL.jar。去年就是讲它和数据库的结合。
好了言归正传、在实现之前
先认识几个JXL.jar中的方法:
读取一个工作簿(整个Excel表)
Workbook wb = Workbook.getWorkbook(fileName);
读取工作表
Sheet sheet = wb.getSheet(0)
得到工作表的行数
sheet.getRows()
得到工作表的列数
sheet.getColumns
得到相应行列的单元格
Cell cell = sheet.getCell(列, 行);
得到相应单元格的值
cell.getContents()
接下来结合到JSP页面
JSP代码是这样写的(注意引入JXL.jar包):
<%@ page language="java" import="java.util.*,jxl.*,java.io.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'test.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<style type="text/css">
table{
margin:0px auto;
}
</style>
</head>
<body>
<table border="1" cellspacing="0" cellpadding="0">
<% request.setCharacterEncoding("UTF-8");
try{
String fileName =(String)session.getAttribute("url");// Excel文件所在路径,我传了一个路径过来,也可修改为自己的本地路径
File file = new File(fileName); // 创建文件对象
Workbook wb = Workbook.getWorkbook(file); // 从文件流中获取Excel工作区对象(WorkBook)
Sheet sheet = wb.getSheet(0); // 从工作区中取得页(Sheet)
for (int i = 0; i < sheet.getRows(); i++) { // 循环打印Excel表中的内容
%>
<tr><%
for (int j = 0; j < sheet.getColumns(); j++) {
Cell cell = sheet.getCell(j, i);
%>
<td><%=cell.getContents()%></td>
<%
}
%>
</tr>
<%
}
} catch (Exception e) {
e.printStackTrace();
}
%>
</table>
<br>
</body>
</html>
好了代码很简单,但是效果还是有的,我们可以根据自己的需要给表格添加一些自定义的样式,另外,如何自定义传值方面,可以看我前一篇文章
[input type=”file” 选取文件路径时出现fakepath问题IE浏览器解决办法]
基本方法就是用一个form表单里定义一个type=”file” ,再用一个text文本接住值,再传过去,在ie浏览器中要修改安全选项,才可以取出fakepath隐藏的地址。