我最近在做一个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();
}
%>