weixin_42443306 2011-04-07 14:37
浏览 327
已采纳

关于excel文件导入到mysql数据没有读取到文件问题

  我最近在做一个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>

 

后台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();
        }   
%>


  • 写回答

2条回答

  • iteye_2443 2011-04-07 15:01
    关注

    既然是客户端的文件路径,服务器读不到那个文件
    那么解决方法就是,先将这个文件上传到服务器,你临时保存,然后读取数据入库,成功后删除 一步到位 不用吧上传和读取数据分开

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换