0

AndroidでExcelのコンテンツを読み込もうとしていますが、常にファイルが見つからないという例外が発生します。プロジェクトは次のとおりです。

C:\AndroidWorkSpace\AntenaProject

そして、コードは次のとおりです。

public void TestClick(View view)
{
    File inputWorkbook = new File("shidur.xls");
    Workbook w;
    StringBuilder sb = new StringBuilder("starting");
    try {

        w = Workbook.getWorkbook(inputWorkbook);
        // Get the first sheet
        Sheet sheet = w.getSheet(0);
        // Loop over first 10 column and lines

        for (int j = 0; j < sheet.getColumns(); j++) {
            for (int i = 0; i < sheet.getRows(); i++) {
                Cell cell = sheet.getCell(j, i);
                //CellType type = cell.getType();

                sb.append(cell.getContents());



            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }


    TextView tv = (TextView)findViewById(R.id.testText);
    tv.setText(sb.toString());


}

私はshidur.xlsを次のフォルダに入れようとしました:

C:\AndroidWorkSpace\AntenaProject\res\raw
C:\AndroidWorkSpace\AntenaProject\res

しかし、それでもこの例外が発生します。http://jexcelapi.sourceforge.net/のjxl.jarを使用し ています。助けてくれてありがとう

4

2 に答える 2

0

File コンストラクターに指定するパスは、ファイルの絶対パスである必要があります。または、ファイルが存在するディレクトリを表す最初のパラメーターとして別の File オブジェクトを取るオーバーロードを使用する必要があります。

つまり、この方法でファイルを作成するのは、ローカル ストレージ (つまり、電話のメイン メモリ) または外部ストレージ (つまり、SD カード) のいずれかにあるファイル用です。

res/raw ディレクトリからファイルを開くには、次の方法で InputStream を取得します。

    InputStream in = getResources().openRawResource(R.raw.file_name);

次に、入力ストリームの内容を読み取るコードが必要になります。このような静的ヘルパー メソッドを使用しますが、ファイルが巨大な場合、問題が発生する可能性があります。まだ私には起こっていませんが、原則として、ファイルのコンテンツ全体をメモリにロードするときは常にリスクがあります

public static String readStream(InputStream in)
{
    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    StringBuilder sb = new StringBuilder();
    String line = null;
    try
    {
        while((line = reader.readLine()) != null)
        {
            sb.append(line + "\n");
        }
    }
    catch(Exception ex) { }
    finally
    {
        // NOTE: you don't have my IOUtils class, 
        // but all these methods do is check for null and catch the exceptions that Closeable.close() can throw
        IOUtils.safeClose(in);
        IOUtils.safeClose(reader);
    }
    return sb.toString();
}
于 2012-06-02T12:23:49.093 に答える
0

/res/raw のファイルを開くには、次のコードを使用する必要があります。

getResources().openRawResource(R.raw.shidur.xls)
于 2012-06-02T12:24:15.210 に答える