java读取Excel文件03

首先要记得引入两个包:jxl.jar和jspsmartupload.jar......并在JSP中引入它们


<%@ page contentType="text/html; charset=gb2312"%>

<%@ page import="jxl.*,jxl.write.*,java.sql.*,java.io.*,java.text.SimpleDateFormat,com.jspsmart.upload.*,jxl.*,java.util.Date,java.text.DateFormat,java.util.Locale,java.util.TimeZone,java.text.*,java.util.ArrayList"%>


<%
request.setCharacterEncoding("gb2312");
InputStream inputStream = null;              /// 字节流 
SmartUpload su = new SmartUpload();          /// 上传文件组件 
jxl.Workbook rwb = null;
    // 上传初始化
    su.initialize(pageContext);
try
{
    // 上传文件
    su.upload();
com.jspsmart.upload.File file = su.getFiles().getFile(0);

if (file.isMissing()) 

  %>
<script>
alert("File is missing..!");
</script>
            <%
  return;
}
if(file.getSize() == 0)
{
%>
<script>
alert("选择的导入文件不存在,请重新选择!");
</script>
            <%
return;
}
// 转化成字节流
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
for(int j = 0; j < file.getSize(); j++) 
{
  baos.write(file.getBinaryData(j)); 
}
inputStream = new ByteArrayInputStream(baos.toByteArray());
try{
rwb = Workbook.getWorkbook(inputStream);
}catch(Exception e){
e.printStackTrace();
}

Sheet sheet = rwb.getSheet(0);
int iRow  = sheet.getRows();
int iColumn = sheet.getColumns();
%>
<script>  这是测试的
alert("iRow iRow iRow = " + "<%=iRow%>" + " and iColumn iColumn iColumn = " + "<%=iColumn%>");
</script>

            <%
System.out.println("iRow iRow iRow = " + iRow + " and iColumn iColumn iColumn = " + iColumn);
rwb.close();
inputStream.close();


}catch(Exception e){
e.printStackTrace();
}
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>首页</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="dscription" content="This is my page">
  </head>
  <body>
  <form action="ExcelDeal.jsp"  method="post"enctype="multipart/form-data">
  <table>
        <tr>
        <td width="120" align="center">路径:</td>
        <td  width="180"><input   type="file"   name="file" class="from_len21"   contenteditable="false"></td>
        </tr>
        <tr>
        <td>
         <input type="submit" value="确定"  />
        </td>
        </tr>
         </table>
     </form>
  </body>

</html>

红字是要注意的地方:

表单中enctype="multipart/form-data "的意思, 是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data ,才能完整的传递文件数据,进行下面的操作. 
enctype="multipart/form-data "是上传二进制数据; form里面的input的值以2进制的方式传过去。
form里面的input的值以2进制的方式传过去,所以request就得不到值了。 也就是说加了这段代码,用request就会传递不成功,取表单值加入数据库时,用到下面的:
SmartUpload su = new SmartUpload();//新建一个SmartUpload对象
su.getRequest().getParameterValues();取数组值
su.getRequest().getParameter( );取单个参数单个值。

另外,如果是两个页面的交互,也要注意作用域的问题。

如果不注意上面两个问题,就会报Files' name is invalid or does not exist的错误



如果要获取某个单元格的内容 :

String titleValue = sheet.getCell(0, 0).getContents();
if(titleValue == null || !titleValue.trim().equals("车牌号码"))

getCell(0,0)     其中,第一个0表示列,第二个0表示行


另外:如果报:Unable to recognize OLE stream的问题,其中的一种解决方法就是把07版的Excel转化为03,再试试。。反正我的试完就好用了。




posted on 2011-11-08 16:14  java课程设计例子  阅读(207)  评论(0编辑  收藏  举报