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

如何用Java获取Google Spreadsheet所有工作表的数据?

嘿,我来帮你搞定这个问题!你已经能成功打印所有工作表的名称,这已经迈出一大步啦~之所以默认只能拿到第一个工作表的数据,大概率是你的代码里只针对第一个工作表(比如用了get(0))做了数据获取,只要改成遍历所有工作表,逐个处理就行,很简单的!

我给你整理了具体的代码思路和示例:

首先,你已经能通过spreadsheet.getSheets()拿到所有工作表的列表了,对吧?接下来只需要循环这个列表里的每一个工作表对象,对每个工作表重复执行你之前获取第一个工作表数据的逻辑就好。

比如,假设你之前获取第一个工作表数据的代码是这样的:

Sheet firstSheet = spreadsheet.getSheets().get(0);
List<List<Object>> firstData = firstSheet.getData().getValues();
// 打印数据
for (List<Object> row : firstData) {
    System.out.println(row);
}

那现在修改成遍历所有工作表的版本:

// 第一步:获取所有工作表的列表
List<Sheet> allSheets = spreadsheet.getSheets();

// 第二步:循环遍历每个工作表
for (Sheet sheet : allSheets) {
    // 先打印当前工作表的名称,方便区分
    System.out.println("===== 工作表 [" + sheet.getProperties().getTitle() + "] 的数据 =====");
    
    // 获取当前工作表的所有数据行
    List<List<Object>> sheetData = sheet.getData().getValues();
    
    // 逐行打印数据,这里可以根据你的需求格式化输出
    for (List<Object> row : sheetData) {
        // 比如把每行的单元格用逗号分隔,看起来更整洁
        String formattedRow = String.join(", ", row.stream().map(Object::toString).toArray(String[]::new));
        System.out.println(formattedRow);
    }
    
    // 打印分隔线,让不同工作表的内容更清晰
    System.out.println("========================================\n");
}

这里有几个小细节要提醒你:

  • 如果某个工作表是空的,getData().getValues()会返回空列表,所以打印的时候不会有内容,这是正常的
  • 如果不需要全表数据,而是特定范围(比如A1到Z100),可以用sheet.getRange("A1:Z100").getValues()来替换getData().getValues()
  • 你已经能获取所有工作表名称,说明权限没问题,不用担心访问受限的问题

这样改完之后,就能一次性打印所有工作表的数据啦😉

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:16:55