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

如何用Java及Azure SDK无需本地下载直接读取Azure Blob中的.xlsx文件?

直接从Azure Blob读取Excel文件(Apache POI + Azure SDK)

完全可以实现直接读取,核心思路是通过Azure Blob SDK获取文件的输入流(InputStream),直接将这个流传入Apache POI的WorkbookFactory,无需将文件下载到本地磁盘。

步骤1:添加依赖

确保你的项目中引入了Azure Blob存储SDK和Apache POI的相关依赖(以Maven为例):

<!-- Azure Blob Storage SDK -->
<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-storage-blob</artifactId>
    <version>12.25.0</version>
</dependency>

<!-- Apache POI 处理XLSX -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.5</version>
</dependency>

步骤2:核心实现代码

import com.azure.storage.blob.BlobClient;
import com.azure.storage.blob.BlobContainerClient;
import com.azure.storage.blob.BlobServiceClient;
import com.azure.storage.blob.BlobServiceClientBuilder;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

import java.io.InputStream;

public class BlobExcelReader {
    public static void main(String[] args) {
        // 配置Azure Blob信息
        String connectionString = "你的Azure Blob存储连接字符串";
        String containerName = "存储容器名称";
        String blobName = "目标Excel文件名称(比如test.xlsx)";

        // 初始化BlobClient
        BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
                .connectionString(connectionString)
                .build();
        BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient(containerName);
        BlobClient blobClient = containerClient.getBlobClient(blobName);

        // 直接读取Blob流并解析Excel
        try (InputStream blobInputStream = blobClient.openInputStream();
             Workbook workbook = WorkbookFactory.create(blobInputStream)) {

            // 示例:读取第一个Sheet的内容
            workbook.getSheetAt(0).forEach(row -> {
                row.forEach(cell -> {
                    System.out.print(cell.toString() + "\t");
                });
                System.out.println();
            });

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

关键说明

  • blobClient.openInputStream():直接获取Blob的输入流,不会将文件下载到本地,数据会通过网络流实时传输。
  • 必须使用try-with-resources语法:确保InputStream和Workbook资源自动关闭,避免内存泄漏。
  • 对于大体积的Excel文件,这种方式也能有效减少本地磁盘占用,同时Apache POI的WorkbookFactory会自动处理流的解析。

注意事项

  • 确保你的Azure Blob存储账户有足够的读取权限,避免出现权限拒绝错误。
  • 如果需要处理加密的Blob,需要在初始化BlobClient时配置对应的加密参数。

内容的提问来源于stack exchange,提问作者Ashok.N

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:19:57