首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JXL库调用

JXL库调用
EN

Stack Overflow用户
提问于 2011-10-18 14:45:55
回答 1查看 1.2K关注 0票数 0

我对java (以前一直在c#上)还不太熟悉,需要创建一个swing应用程序,在这里我需要从xls文件中读取数据。所以我使用jXL。

我有一个类,它从excel文件中返回第一个工作表的名称,在jFileChooser中选择。以下是代码:

代码语言:javascript
复制
import java.io.File;
import jxl.Sheet;
import jxl.Workbook;

public class ExcelObject
{
    private String filename = null;
    private Workbook wb = null;
    private Sheet sheet = null;

    public ExcelObject(String f) 
    {
        filename = f;
    }

    public String getSheetName()
    {
        String sheet_name = null;

        try
        {
            wb = Workbook.getWorkbook(new File(filename));
            sheet = wb.getSheet(0);
            sheet_name = sheet.getName();
        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }
        finally
        {
            wb.close();
        }

        return sheet_name;
    }

}   

程序调用中的内容如下:

代码语言:javascript
复制
ExcelObject ex = new ExcelObject(filename);
String s = ex.getSheetName();
lblReport.setText(s);

所以问题是:当在eclipse (3.4.2)中运行时,我得到了一个正确的值,当编译jar时,不返回!我的意思是lblReport是空的,没有任何例外和警告。

记住:所有其他外部罐子都能正常工作。

我试了很多东西,但都没有用。

还有,如果我做了这样的事

代码语言:javascript
复制
                            ExcelObject ex = new ExcelObject(filename);
                            String s = ex.getSheetName();
//                          lblReportRun.setText(s);

                            lblReportRun.setText("Test");
                            lblAnyOtherLabel.setText("Test");

无论是在标签中,还是在编译的jar中,在eclipse中都没有显示文本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-18 14:57:47

这可能是因为如果打开工作簿时出现了某些异常,则需要捕获它,打印堆栈跟踪,然后在“最后”块中关闭工作簿。但是,由于在调用Workbook.getWorkbook时出现了异常,所以wb变量仍然为null,因此您正在尝试在其上调用close。因此,在最后一个块中发生一个NullPointerException

注意你的控制台,你一定有一些异常弹出。

另外,请注意,fileName应该是类的唯一实例变量,Java变量通常不包含下划线并使用camelCase,而fileName变量应该是文件类型,而不是字符串:从文件选择器获得文件,将其转换为字符串,然后将其转换回文件。

另一种可能是,因为它在Eclipse中工作,而不是在外部运行时,您忘了将jXL jar放在类路径中,这会导致在尝试使用ExcelObject类时出现一些ClassNotFoundException。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7809180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档