0

私はJavaが初めてで、Excelファイルからデータにアクセスするプログラムを作成しようとしています。しかし、メッセージを取得する

スレッド「メイン」の例外java.lang.Error:未解決のコンパイルの問題:非静的フィールドへの静的参照を作成できません

コーディング:

package xl;

import java.io.File;
import java.io.IOException;
import java.util.Date;
import jxl.*;
import jxl.Workbook.*;
import jxl.read.biff.BiffException;

public class xl {

    public String path = "C:/Workbook.xls";
    public File wb = new File(path);

    public static void main(String[] args) throws IOException, BiffException {
        Workbook work;
        work = Workbook.getWorkbook(new java.io.File(wb));

        Sheet sheet1 = work.getSheet(0);
        Cell c1 = sheet1.getCell(0,0);

        String xreader = c1.getContents();
        System.out.println(xreader);
    }
}

私が間違っている任意のアイデア...

4

3 に答える 3

1

メイン メソッドは静的メソッドである必要がありますが、インスタンス変数は静的ではないため参照できません。インスタンス変数を静的として宣言することにより、インスタンス変数をクラス変数に変更できますが、この場合、変数はワークブックの特定のインスタンスに対応するため、これはお勧めできません。

より良い解決策は、ワークブックを読み込んで内容を出力するインスタンス メソッドを作成することです。現在のメイン メソッドのすべてのコードは、この新しいメソッドに入る必要があります。

次に、メイン メソッドで、クラスのインスタンスを作成し、新しいメソッドを呼び出すだけです。

public void printWorkbook() throws IOException, BiffException {
    Workbook work;
    work = Workbook.getWorkbook(new java.io.File(wb));

    Sheet sheet1 = work.getSheet(0);
    Cell c1 = sheet1.getCell(0,0);
    String xreader = c1.getContents();
    System.out.println(xreader);    
}

public static void main(String[] args) throws IOException, BiffException {
    xl instance = new xl();
    instance.printWorkBook();
}

さらに良いのはprintWorkbook、パスの文字列パラメーターを受け入れ、これをメイン メソッドから渡すことです。次に、このメソッドのローカル変数としてFileオブジェクトを作成します。wb次に、コマンド ラインから引数としてパスを読み取ることで、任意のファイルを出力するメイン メソッドを簡単に一般化できます。

また、大文字で始まり、クラスの目的を定義するクラス名を付けるのも通常です。したがって、代わりにxlクラスを呼び出すことができますWorkbookPrinter

于 2013-08-23T14:42:29.793 に答える