2011-10-18 14 views
0

私はJavaにはまだまだ慣れていません(以前は常にC#になっていました)、xlsファイルからデータを読み込む必要のあるスイングアプリケーションを作成する必要があります。だから私はjXLを使用します。JXLライブラリの呼び出し

私は、jFileChooserで選択されたExcelファイルから最初のシートの名前を返すクラスを持っています。だから、問題がある

ExcelObject ex = new ExcelObject(filename); 
String s = ex.getSheetName(); 
lblReport.setText(s); 

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; 
    } 

} 

プログラム呼び出しで次のようになります。ここでは、コードで日食(3.4.2)私は正しい値を取得しています、瓶に実行したときNO VALUE IS RETURNED!がコンパイルされています。私はlblReportが空で、例外と警告がないことを意味します。

注意:他のすべての外部ジャーは正常に動作します。

私は多くのことを試しましたが、何も動いていません。

私は

      ExcelObject ex = new ExcelObject(filename); 
          String s = ex.getSheetName(); 
//       lblReportRun.setText(s); 

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

ような何かを行う場合も、テキストがコンパイルジャーに、いずれかのラベルに表示されていない、とEclipseの罰金されます。

+0

コードとの関係でExcelファイルはどこにありますか?完全修飾ファイル名を使用していますか? –

+0

はい、JFileChooserを使用しています: – user1001327

+0

ここにコードを挿入できません... – user1001327

答えて

0

これは、ブックを開くときに何らかの例外が発生した場合、スタックトレースを印刷してfinallyブロック内のブックを閉じるためです。しかし、Workbook.getWorkbookを呼び出すときに例外が発生したため、wb変数はまだヌルで、closeを呼び出そうとしています。したがって、NullPointerExceptionはfinallyブロック中に発生します。

あなたのコンソールを見て、いくつかの例外がポップアップする必要があります。

また、fileNameはクラスの唯一のインスタンス変数である必要があります。Java変数には通常アンダースコアが含まれていません。camelCaseを使用します。fileName変数は文字列ではなくファイル型である必要があります。ファイルチューザからファイルを取り出し、文字列に変換してファイルに変換し直します。

これはEclipseで動作し、外部では動作しないため、クラスパスにjXL jarを置くことを忘れてしまい、ExcelObjectクラスを使用しようとするとClassNotFoundExceptionが発生する可能性があります。

+0

いいえ、いいえ、もう一度:日食で例外/警告などはありません!常に私は正しいファイルを選択します。しかし、瓶がコンパイルされるとき、lablesは空です。 – user1001327

+0

私の編集した答えを見てください。最初の説明がこの問題の良い説明ではない場合でも、後で問題を引き起こす可能性があります。あなたはコードを修正するほうがいいでしょう。 –

+0

ファイルオプションを試してみましょう。しかし、明らかにclasspath paroblem(日食はあなたに瓶をコンパイルすることはありません!) – user1001327

関連する問題