如何用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
相关产品推荐
相关产品推荐

