求帮助!!!!!!!!!!
我在windows下正常执行,正常操作Excle文件。 但在linux下执行 getWorkbook的时候就出错!!
以下是代码:
------------------------/**
*第一个参数是模板的xls文件的目录,第二个是新生成的xls文件,第三个是  xls的标题,第四个是数据list,里面是javabean。
*/
public File makeXls(String templateExcelFile, String newExcelFile,
String title, List listData) {
Workbook workbook = null;
File outFile = null;
try {
// 构建Workbook对象, 只读Workbook对象
// 直接从本地文件创建Workbook, 从输入流创建Workbook
log.info(templateExcelFile);//在linux读日志是 模板文件路径,是对的
InputStream ins = new FileInputStream(templateExcelFile); 
log.info(ins==null); // false ,不为空
                           /////////////TEST//////////////// 
                        File testfile = new File(templateExcelFile);
                        log.info(testfile ==null); // false ,不为空
                            log.info(testfile.getName()); //loanInfoSource.xls
                         log.info(testfile.getPath()); ///home/gdxy/apache-tomcat-6.0.10/webapps/bploan/xlsdown/loanInfoSource.xls
                         //输出文件名和路径是对的。 但执行下步 就出错!!!  在 windows 下是正常的                        ////////////////////////////////
workbook = Workbook.getWorkbook(ins);   //这步就有错!!!!!!!!!!!!!!!!!!!! 
                        //执行异常 ,java.lang.NullPointerException    (文件是存在的,在windows下没问题,可在linux下就过不去。文件已获取到了,但就是过不去 这步  Workbook.getWorkbook , 这样写也有问题 workbook = Workbook.getWorkbook(new File(templateExcelFile));也是不行.
// 利用已经创建的Excel工作薄创建新的可写入的Excel工作薄
outFile = new File(newExcelFile); 
WritableWorkbook wwb = Workbook.createWorkbook(outFile, workbook);
// 读取第一张工作表
WritableSheet dataSheet = wwb.getSheet(0);
// 设置冻结单元格 冻结标题。不让标题和列 滚动
dataSheet.getSettings().setHorizontalFreeze(1);
dataSheet.getSettings().setVerticalFreeze(2); if (listData == null) // 下载后再次执行,数据将为空,阻止报空指针错误。
{
return null;
}
// 插入数据
................................
-----------------------------------------------------------------------------------------------------------------------
templateExcelFile 是存在的文件,我debug并输出文件名和路径都是对的。
workbook = Workbook.getWorkbook(file);
然后这步骤就不行,就出错.
帮帮我吧
QQ 15159909
e-mail : [email protected]

解决方案 »

  1.   


    如果文档能读到,系统不一样的话就是编码问题了,linux下默认是utf-8编码(或者安装时看你默认编码是)
      

  2.   

    觉得还是路径问题
    exception是不会骗人的
    你把path打出来对比下
    linux好像是export/home/xxx
      

  3.   

    路径打的出来,文件名也对
     log.info(testfile ==null); // false ,不为空 
                                log.info(testfile.getName()); //loanInfoSource.xls 
                            log.info(testfile.getPath()); ///home/gdxy/apache-tomcat-6.0.10/webapps/bploan/xlsdown/loanInfoSource.xls 

    代码后面就是打印出来的   我加上去的
    文件名是: 
    loanInfoSource.xls 
    路径是  /home/gdxy/apache-tomcat-6.0.10/webapps/bploan/xlsdown/loanInfoSource.xls 
      

  4.   

    我结贴了。 没有答案 , 很遗憾 
    我使用了另一种技术实现了。
    有兴趣想讨论的朋友 请加我QQ 15159909 。 
    msn:  [email protected]
    126 
    ---------------------------------------------------
      

  5.   

    不是文件后缀名大小写的问题?linux分大小写的,windows不分大小写的。我这边windows和linux都可以运行啊。