1

我是java新手,但是学得很快。我正在尝试让我的 Android 应用程序从 EditText 获取用户输入,在 Excel 列中搜索匹配的字符串,然后返回另一列(同一行)的值。

我在构建路径上添加了一个 jxl.jar,我的代码似乎应该可以工作。自学,我正在慢慢弄清楚调试。问题似乎是找不到源android.jar(如果我没记错的话)。我找到了它,现在我得到“源附件不包含文件 instrumentation.class 的源”

这是我第一个使用 excel 的应用程序。我是否需要以某种方式解决 Android 清单?

这是我的代码,以防万一,非常感谢任何帮助!:

public class Frame_Bore extends Activity {
private String inputFile;

public void setInputFile(String inputFile) {
    this.inputFile = "c:/Desktop/AAS Work/PDA Programs/JBDB.xls";
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.framebore);

    Button Btn1 = (Button) findViewById(R.id.button1);
    final EditText T1 = (EditText) findViewById(R.id.et1);
    final EditText T2 = (EditText) findViewById(R.id.et2);

    Btn1.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub

            String t1Value = T1.getText().toString();
            File inputWorkbook = new File(inputFile);
            Workbook w;
            String bore = null;

            try {
                w = Workbook.getWorkbook(inputWorkbook);
                Sheet sheet = w.getSheet("Frame-Bore");

                int y = 6;
                while (y < 200) {
                    int x = 2;
                    Cell columnB = sheet.getCell(x, y);
                    String motorframe = columnB.getContents();

                    if (motorframe == t1Value) {
                        Cell columnC = sheet.getCell(x + 1, y);
                        bore = columnC.getContents();
                    } else {
                        y = y + 1;
                    }

                }
            } catch (BiffException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                T2.setText("" + bore);
            }
        }
    });
}
4

2 回答 2

0

将文件放入 assets 文件夹并像这样访问它:

InputStream is = null;
        try {
            is = context.getAssets().open("JBDB.xls");
            workbook = Workbook.getWorkbook(is);

        } catch (IOException e) {

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

            e.printStackTrace();

        }
        if(workbook!=null)
        sheet = workbook.getSheet("Frame-bore");

context是您的主要活动上下文。

于 2012-09-13T21:24:53.220 回答
0

您正在尝试从您的模拟器访问 c: 驱动器(“c:/Desktop/AAS Work/PDA Programs/JBDB.xls”),这是不可能的。如果您在设备中运行它,您需要将您的 excel 文件放在资源文件夹或 SD 卡中。

模拟器具有虚拟 SD 卡,其局限性在于它不能直接从计算机访问任何其他驱动器。但是,您可以通过创建一个代表您的 android 应用程序执行操作的 web 服务来做到这一点。您需要从您的 android 应用程序中调用此 Web 服务。

于 2012-09-01T03:01:49.387 回答