首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

小弟我用poi读excel,在window下没有有关问题,但把程序放到linux上时,读取客户端的excel文件报错,不知道怎么解决

2012-02-03 
我用poi读excel,在window下没有问题,但把程序放到linux上时,读取客户端的excel文件报错,不知道如何解决我

我用poi读excel,在window下没有问题,但把程序放到linux上时,读取客户端的excel文件报错,不知道如何解决
我用poi读excel,在window下没有问题,但把程序放到linux上时,读取客户端的excel文件报错,不知道如何解决?
错误:
C:\a.xls  
You   chose   the   file   C:\a.xls.  

It 's   contents   are:   Error   occurred:   C:\a.xls   (No   such   file   or   directory)  

但在window下完全正常
我试着把c:\a.xls中的 "\ "   改为 "/ "还是不行,那位知道如何改呢,多谢

读excel的poi如下:
-------------------------------------------------------
<%@page   contentType= "text/html;   charset=gb2312 "   import= "java.io.*,org.apache.poi.poifs.filesystem.POIFSFileSystem,org.apache.poi.hssf.record.*,org.apache.poi.hssf.model.*,org.apache.poi.hssf.usermodel.*,org.apache.poi.hssf.util.* "   %>
<html>
<head>
<meta   http-equiv= "Content-Type "   content= "text/html;   charset=gb2312 ">
<title> 资金文件 </title>
</head>
<body>
An   example   of   using   Jakarta   POI 's   HSSF   package   to   read   an   excel   spreadsheet:  
<form   name= "form1 "   method= "post "   action= " ">
    <p> Select   an   Excel   file   to   read. </p>
    <p>  
        <input   name= "xls_filename "   type= "file "   onChange= "form1.submit() "   size= "90 ">
        <input   type= "submit "   name= "Submit "   value= "提交 ">
    </p>
</form>
<%
String   filename   =   request.getParameter( "xls_filename ");  
out.println(filename);
if   (filename   !=   null   &&   !filename.equals( " "))   {
%>
<br> You   chose   the   file   <%=   filename   %> .  
<br> <br> It 's   contents   are:  
<%
                        try
                        {

                                //   create   a   poi   workbook   from   the   excel   spreadsheet   file
                                POIFSFileSystem   fs   =
                                        new   POIFSFileSystem(new   FileInputStream(filename));
out.println( "fs= "+fs);
                                HSSFWorkbook   wb   =   new   HSSFWorkbook(fs);

                                for   (int   k   =   0;   k   <   wb.getNumberOfSheets();   k++)
                                {
%>
                                        <br> <br> Sheet     <%=   k   %>   <br>


<%

                                        HSSFSheet   sheet   =   wb.getSheetAt(k);
                                        int               rows     =   sheet.getPhysicalNumberOfRows();

                                        for   (int   r   =   0;   r   <   rows;   r++)
                                        {
                                                HSSFRow   row       =   sheet.getRow(r);
                                                if   (row   !=   null)   {  
                                                        int           cells   =   row.getPhysicalNumberOfCells();
%>
<br> <b> ROW     <%=  
row.getRowNum()   %>   </b>
<%
                                                        for   (short   c   =   0;   c   <   cells;   c++)  
                                                        {  
                                                                HSSFCell   cell     =   row.getCell(c);
                                                                if   (cell   !=   null)   {  
                                                                        String       value   =   null;

                                                                        switch   (cell.getCellType())
                                                                        {



                                                                                case   HSSFCell.CELL_TYPE_FORMULA   :
                                                                                        value   =   "FORMULA   ";
                                                                                        break;

                                                                                case   HSSFCell.CELL_TYPE_NUMERIC   :
                                                                                        value   =   "NUMERIC   value= "
                                                                                                        +   cell.getNumericCellValue
();
                                                                                        break;

                                                                                case   HSSFCell.CELL_TYPE_STRING   :
                                                                                        value   =   "STRING   value= "
                                                                                                        +   cell.getStringCellValue();
                                                                                        break;



                                                                                default   :
                                                                        }
%>
                                                                        <%=   "CELL   col= "  

+   cell.getCellNum()
                                                                                +   "   VALUE= "   +   value   %>
<%
                                                                }  
                                                        }
                                                }
                                        }
                                }
                        }
                        catch   (Exception   e)
                        {
%>
Error   occurred:     <%=   e.getMessage()   %>
<%
                                e.printStackTrace();
                        }
}  
%>  
</body>
</html>

[解决办法]
我用poi读excel,在window下没有问题,但把程序放到linux上时,读取客户端的excel文件报错,不知道如何解决?

linux下使用绝对路径吧。linux没有分区的。只有目录。
比如/app/soft/stat/asdfa.xls
[解决办法]
to楼上..那poi包我下的poi-src-3.0.1-FINAL-20070705.zip怎么没有org.apache.poi.poifs.filesystem.POIFSFileSystem等文件
[解决办法]
我认为还是个路径的问题,
java代码是服务器端解析运行的,也就是在你这个linux下的,当然不能识别这种路径的

你上面说到在windows下可以,但我怀疑你是不是这样:客户端和服务器同是一台机器,这个文件表面是是客户端,但同时也是在服务器上,因为你用的同一台机器(只是这样猜测)

热点排行