我正在尝试在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 谢谢你的帮助
答案 0 :(得分: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();
}
答案 1 :(得分:0)
您应该使用以下代码在/ res / raw
中打开文件getResources().openRawResource(R.raw.shidur.xls)