You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android读取Excel后TextView仅显示最后一个单元格值的问题

解决Android读取Excel仅显示最后一个单元格的问题

嗨,这问题我之前也踩过坑!咱们来拆解下代码里的问题:

问题根源

  1. 内容被覆盖而非累加:你在循环里用了xx = z.getContents();,这会直接把之前存的内容替换成当前单元格的值,最后自然只剩最后一个单元格的内容。
  2. 频繁更新UI导致覆盖:你把textView.setText(xx);放在了内层循环里,每读一个单元格就更新一次TextView,前面的内容都会被后面的覆盖,最终只显示最后一次设置的内容。

修改后的代码

咱们调整拼接逻辑和setText的位置,就能显示所有单元格内容了:

textView=(TextView)findViewById(R.id.textview);
textView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        try {
            AssetManager am = getAssets();
            InputStream is = am.open("Book1.xls");
            Workbook wb = null;
            try {
                wb = Workbook.getWorkbook(is);
                Sheet s = wb.getSheet(0);
                int row = s.getRows();
                int col = s.getColumns();
                StringBuilder xx = new StringBuilder(); // 用StringBuilder更高效
                for (int i = 0; i < row; i++) {
                    for (int c = 0; c < col; c++) {
                        Cell z = s.getCell(c,i);
                        xx.append(z.getContents()).append("\t"); // 累加内容,加制表符分隔单元格
                    }
                    xx.append("\n"); // 每行结束加换行,区分不同行
                }
                textView.setText(xx.toString()); // 循环结束后一次性设置文本
            } catch (BiffException e) {
                e.printStackTrace();
            } finally {
                // 记得关闭资源,避免内存泄漏
                if (is != null) {
                    try {
                        is.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (wb != null) {
                    wb.close();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
});

关键修改说明

  • 改用StringBuilder拼接内容:比直接用String累加更高效,尤其是数据量较大时
  • 用append()替代赋值:把每个单元格的内容累加到字符串里,添加制表符和换行让排版更清晰
  • 把textView.setText()移到循环外:等所有内容拼接完成后一次性设置,避免频繁更新UI导致的覆盖问题
  • 增加资源关闭操作:养成良好的资源释放习惯,防止内存泄漏

这样修改后,TextView就能完整显示Excel里的所有单元格内容啦~

内容的提问来源于stack exchange,提问作者Madhusudan Pandey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:24:04