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 回答