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

Android中如何加载并显示Assets文件夹内的XLSX文件

解决方案:Android加载并显示Assets中的XLSX文件

方案一:第三方解析库+原生UI展示

直接解析XLSX内容,用Android原生控件(如TableLayout、RecyclerView)渲染,推荐以下成熟库:

1. Apache POI

Java生态主流的Excel解析库,完整支持XLSX格式。

  • 集成依赖:
implementation 'org.apache.poi:poi-ooxml:5.2.5'

注:库体积较大,建议开启R8/ProGuard压缩,或改用精简版poi-ooxml-lite。

  • 核心实现步骤:
    1. 读取Assets中的文件流:
val inputStream = assets.open("asmls.xlsx")
val workbook = XSSFWorkbook(inputStream)
val targetSheet = workbook.getSheetAt(0) // 获取第一个工作表
  1. 遍历工作表的行与单元格,提取数据后填充到原生UI控件中。

2. EasyExcel(阿里开源)

轻量级、低内存的Excel解析库,适配移动端资源限制。

  • 集成依赖:
implementation 'com.alibaba:easyexcel:3.3.2'
  • 核心实现步骤:
    1. 定义对应Excel列的数据实体类:
data class ExcelRowData(
    @ExcelProperty(index = 0) val column1: String?,
    @ExcelProperty(index = 1) val column2: String?
    // 按需添加更多列定义
)
  1. 解析Assets文件并处理数据:
val inputStream = assets.open("asmls.xlsx")
EasyExcel.read(inputStream, ExcelRowData::class.java, object : AnalysisEventListener<ExcelRowData>() {
    override fun invoke(rowData: ExcelRowData, context: AnalysisContext?) {
        // 将每行数据加入数据源列表
    }

    override fun doAfterAllAnalysed(context: AnalysisContext?) {
        // 解析完成后更新UI展示
    }
}).sheet().doRead()

方案二:转HTML后用WebView加载

把XLSX内容转换为HTML格式,利用WebView渲染表格样式:

  • 结合Apache POI的XSSFExcelToHtmlConverter工具类实现:
val inputStream = assets.open("asmls.xlsx")
val workbook = XSSFWorkbook(inputStream)
val targetSheet = workbook.getSheetAt(0)

val converter = XSSFExcelToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument())
converter.processSheet(targetSheet)
val htmlContent = converter.document.outerHtml

webView.loadDataWithBaseURL(null, htmlContent, "text/html", "UTF-8", null)

方案三:在线预览(需网络)

将Assets文件复制到本地缓存,调用Google文档在线预览(依赖网络,部分地区可能无法访问):

  • 核心步骤:
    1. 复制Assets文件到缓存目录:
val tempFile = File(cacheDir, "temp_asmls.xlsx")
val inputStream = assets.open("asmls.xlsx")
val outputStream = FileOutputStream(tempFile)
inputStream.copyTo(outputStream)
inputStream.close()
outputStream.close()
  1. 加载预览链接:
val previewUrl = "https://docs.google.com/gview?url=${Uri.fromFile(tempFile).toString()}&embedded=true"
webView.loadUrl(previewUrl)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 12:29:52