Java JXL库调用
我对java并不陌生(以前一直使用c语言),需要创建一个swing应用程序,从xls文件中读取数据。所以我使用jXL 我有一个类,它返回excel文件中第一张工作表的名称,即jFileChooser中的choosen。代码如下:Java JXL库调用,java,jxl,Java,Jxl,我对java并不陌生(以前一直使用c语言),需要创建一个swing应用程序,从xls文件中读取数据。所以我使用jXL 我有一个类,它返回excel文件中第一张工作表的名称,即jFileChooser中的choosen。代码如下: import java.io.File; import jxl.Sheet; import jxl.Workbook; public class ExcelObject { private String filename = null; private
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;
}
}
在程序中,调用如下所示:
ExcelObject ex = new ExcelObject(filename);
String s = ex.getSheetName();
lblReport.setText(s);
所以问题是:当在eclipse(3.4.2)中运行时,我得到了一个正确的值,当编译jar时,没有返回任何值!我的意思是lblReport是空的,没有异常和警告
记住:所有其他外部罐子都可以正常工作
我试了很多东西,但都没用
还有,如果我做了类似的事情
ExcelObject ex = new ExcelObject(filename);
String s = ex.getSheetName();
// lblReportRun.setText(s);
lblReportRun.setText("Test");
lblAnyOtherLabel.setText("Test");
标签中没有显示文本,编译后的jar中也没有显示文本,eclipse中也没有显示文本。这可能是因为如果在打开工作簿时出现异常,您将捕获它,打印堆栈跟踪,然后在finally块中关闭工作簿。但是,由于调用
Workbook.getWorkbook
时发生异常,wb
变量仍然为空,您正试图对其调用close
。因此,在finally块中发生NullPointerException
注意你的控制台,你一定会出现一些异常
另外,请注意,fileName应该是类的唯一实例变量,Java变量通常不包含下划线和用例,并且fileName变量应该是File类型,而不是String:从文件选择器获取文件,将其转换为字符串,然后将其转换回文件
另一种可能性是,由于它在Eclipse中工作,而不是在外部运行时,您忘记将jXL jar放在类路径中,这会在尝试使用ExcelObject类时导致一些ClassNotFoundException。与代码相关的excel文件在哪里?您使用的是完全限定的文件名吗?是的,我通过JFileChooser获取:无法在此处插入代码…JFileChooser chooser=new JFileChooser();选择器.setAcceptableFileFilterUsed(false);setFileFilter(新的xlsFilter());int state=chooser.showOpenDialog(null);File File=chooser.getSelectedFile();如果(file!=null&&state==JFileChooser.APPROVE_选项){String filename=file.getAbsolutePath();txtFilePath.setText(文件名);ExcelObject ex=new ExcelObject(文件名);String s=ex.getSheetName();很抱歉使用这种难看的格式…不,不,不,再次:在eclipse中没有异常/警告等!我总是从我选择的任何excel文件中获得正确的值。但是,当编译jar时,标签是空的。请参阅我编辑的答案。即使第一个解释对这个问题不是很好的解释,以后也可能会导致问题。你最好修复这个问题让我试试File选项,但这显然不是类路径问题(eclipse不会让您编译jar!)你说你没有从Eclipse运行应用程序。Eclipse编译的jar包含你的类,而不是jXL中的类。当你运行应用程序时,你需要在类路径中包含你的jar和jXL jar。你能告诉我具体是怎么做的吗???是standart jar编译还是其他什么?