在Android中读取xlsx文件,使用apache-poi读取文件的时候会内存溢出,查资料说是数据量大会导致内存溢出。使用easyExcel和monitorjbl每次都会出现一堆问题,网上查资料我都查不到,能帮助下或提供可用的demo吗
2条回答 默认 最新
- 蓝色心灵-海 2023-05-29 15:47关注
在 Android 中读取 Excel 文件并不是一件容易的事情,因为 Excel 文件通常很大,可能会导致内存溢出。Apache POI 库通常用于读写 Excel 文件,但是它在 Android 系统上的内存处理效率较低,易导致内存溢出。因此,我们可以选择使用其他库来读取 Excel 文件,比如 jExcelApi 和 ExcelReader 等。下面提供使用 jExcelApi 读取 Excel 文件的示例代码,供参考:
- 导入 jExcelApi 库
将以下依赖添加到模块的 build.gradle 文件中:
implementation 'net.sourceforge.jexcelapi:jxl:2.6.12' - 读取 Excel 文件
以下是读取 Excel 文件的代码示例:
public class ReadExcelActivity extends AppCompatActivity { private Button btnReadExcel; private TextView tvShowExcelData; private Workbook workbook; private Sheet sheet; private int rows; private int columns; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_read_excel); btnReadExcel = findViewById(R.id.btn_read_excel); tvShowExcelData = findViewById(R.id.tv_show_excel_data); btnReadExcel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { readExcel(); } }); } private void readExcel() { try { InputStream inputStream = getAssets().open("test.xls"); workbook = Workbook.getWorkbook(inputStream); sheet = workbook.getSheet(0); rows = sheet.getRows(); columns = sheet.getColumns(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { Cell cell = sheet.getCell(j, i); sb.append(cell.getContents()).append("\t"); } sb.append("\n"); } tvShowExcelData.setText(sb.toString()); } catch (IOException e) { e.printStackTrace(); } catch (BiffException e) { e.printStackTrace(); } finally { workbook.close(); } } }
上述代码读取 Excel 文件
test.xls
,并将其显示在 TextView 中。这段代码使用了 jExcelApi 库,这个库的运行效率比 Apache POI 库要高,可以有效避免内存溢出的问题。
希望上述代码可以帮助你解决问题,如果仍然有问题或其他疑问,请随时提出。解决 无用评论 打赏 举报 - 导入 jExcelApi 库
悬赏问题
- ¥15 孟德尔随机化结果不一致
- ¥20 求用stm32f103c6t6在lcd1206上显示Door is open和password:
- ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
- ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
- ¥15 谁有desed数据集呀
- ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
- ¥15 关于#hadoop#的问题
- ¥15 (标签-Python|关键词-socket)
- ¥15 keil里为什么main.c定义的函数在it.c调用不了
- ¥50 切换TabTip键盘的输入法