我最近在做一个oa项目,其中有一个excel文件导入到数据中去,用poi做的。我现在在后台能够得到文件的完整路径,但是HSSFWorkbook并没有创建一个工作簿。在网上找了很多资料,并没有找到解决方案,本人是只菜鸟,望各位大侠指路,帮忙看看。谢谢!
前台import.jsp代码:
写道
<%@ page contentType="text/html;charset=GBK"%>
<%@ page session="true" %>
<%@ page isThreadSafe="true" %>
<head>
<style type="text/css">
<!--
body,td,th {
font-size: 12px;
}
-->
</style>
<title></title>
</head>
<body >
<script language="javascript">
function add(){
var filePath = document.myform.Urlexcel.value;
alert(filePath);
myform.action="saveExcel.jsp?filePath="+filePath ;
myform.submit();
}
</script>
<form action="saveExcel.jsp" enctype="multipart/form-data" name="myform" method="post" onSubmit="return check(this)">
<p> </p>
<p> </p>
<p> </p>
<table width="80%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td height="50" align="center" valign="middle"> </td>
<td height="50" align="left" valign="middle"> Excel文件:
<input name="Urlexcel" type="file" id="Urlexcel" size="41" /></td>
<td> </td>
</tr>
<tr>
<td height="50" align="center" valign="middle" colspan="2">
<input type="button" onClick="add();" name="Submit1" value="确认提交" />
<input type="submit" name="Submit2" value="取消重置" />
</td>
<td> </td>
</tr>
</table>
</form>
</body>
</html>
<%@ page session="true" %>
<%@ page isThreadSafe="true" %>
<head>
<style type="text/css">
<!--
body,td,th {
font-size: 12px;
}
-->
</style>
<title></title>
</head>
<body >
<script language="javascript">
function add(){
var filePath = document.myform.Urlexcel.value;
alert(filePath);
myform.action="saveExcel.jsp?filePath="+filePath ;
myform.submit();
}
</script>
<form action="saveExcel.jsp" enctype="multipart/form-data" name="myform" method="post" onSubmit="return check(this)">
<p> </p>
<p> </p>
<p> </p>
<table width="80%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td height="50" align="center" valign="middle"> </td>
<td height="50" align="left" valign="middle"> Excel文件:
<input name="Urlexcel" type="file" id="Urlexcel" size="41" /></td>
<td> </td>
</tr>
<tr>
<td height="50" align="center" valign="middle" colspan="2">
<input type="button" onClick="add();" name="Submit1" value="确认提交" />
<input type="submit" name="Submit2" value="取消重置" />
</td>
<td> </td>
</tr>
</table>
</form>
</body>
</html>
后台saveExcel.jsp代码:
<%@ page language="java"%> <%@ page session="true"%> <%@ page isThreadSafe="true"%> <%@ page contentType="text/html;charset=GBK"%> <%@page import="org.apache.poi.hssf.usermodel.HSSFWorkbook"%> <%@page import="java.io.FileInputStream"%> <%@page import="org.apache.poi.hssf.usermodel.HSSFSheet"%> <%@page import="org.apache.poi.hssf.usermodel.HSSFCell"%> <%@page import="org.apache.poi.hssf.usermodel.HSSFRow"%> <%@page import="java.io.FileNotFoundException"%> <%@page import="java.io.IOException"%> <%@page import="org.apache.poi.poifs.filesystem.POIFSFileSystem"%> <% String filePath = request.getParameter("filePath"); out.println(filePath); try { // 创建对Excel工作簿文件的引用 FileInputStream fis = new FileInputStream(filePath); POIFSFileSystem fs = new POIFSFileSystem(fis); HSSFWorkbook wookbook = new HSSFWorkbook(fs); out.println(wookbook);//此处并没有打印出能容 HSSFSheet sheet = wookbook.getSheet("Sheet1"); // 获取到Excel文件中的所有行数 int rows = sheet.getPhysicalNumberOfRows(); out.println(rows); // 遍历行 for (int i = 0; i < rows; i++) { // 读取左上端单元格? HSSFRow row = sheet.getRow(i); // 行不为空 if (row != null) { // 获取到Excel文件中的所有的列 int cells = row.getPhysicalNumberOfCells(); String value = ""; // 遍历列 for (short j = 0; j < cells; j++) { // 获取到列的值 HSSFCell cell = row.getCell(j); if (cell != null) { switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_FORMULA: break; case HSSFCell.CELL_TYPE_NUMERIC: value += cell.getNumericCellValue() + ","; break; case HSSFCell.CELL_TYPE_STRING: value += cell.getStringCellValue() + ","; break; default: value += "0"; break; } } } // 将数据插入到mysql数据库中 String[] val = value.split(","); Nsxxb1 entity = new Nsxxb1() ; entity.setGLM(val[0]); entity.setQYMC(val[1]); entity.setXSE1(Double.parseDouble(val[2])); entity.setZZS1(Double.parseDouble(val[3])); entity.setYYS1(Double.parseDouble(val[4])); entity.setXFS1(Double.parseDouble(val[5])); entity.setQYSDS1(Double.parseDouble(val[6])); entity.setGRSDS1(Double.parseDouble(val[7])); entity.setYHS1(Double.parseDouble(val[8])); entity.setTDZZS1(Double.parseDouble(val[9])); entity.setCJS1(Double.parseDouble(val[10])); Nsxxb1Service.insert(entity); } } catch (FileNotFoundException e) { out.println("导入失败"); e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } %>