如何用gsheets Dart库获取工作表有数据的总行数(无需拉取数据)
如何通过gsheets库不获取全量数据获取工作表总行数?
问题描述
我目前使用gsheets库计算指定工作表总行数的代码如下:
final sheet = ss.worksheetByTitle('test'); final rows = await sheet?.values.map.allRows(); final totalRows = rows?.length;
但这段代码需要拉取所有行数据,效率较低,想知道有没有办法不用获取实际数据就能拿到总行数?
解决方案
分两种场景给出不同的实现方式:
1. 获取工作表的总容量行数(含空行)
如果需要的是该工作表的最大可容纳行数(比如默认新建的工作表有1000行),可以直接读取工作表的属性,无需拉取任何数据:
final sheet = ss.worksheetByTitle('test'); // 先获取工作表属性 await sheet?.getProperties(); // 获取总容量行数 final totalCapacityRows = sheet?.properties.rowCount;
2. 获取有实际数据的总行数
Google Sheets API本身没有直接提供非空行总数的接口,gsheets库也没有封装对应的方法,但可以用获取最后一行行号的方式替代,这种方式仅请求最后一个有数据单元格的位置,远比重载全量数据高效:
final sheet = ss.worksheetByTitle('test'); // 获取最后一个有数据的单元格 final lastCell = await sheet?.values.lastRow(); // 最后一行的行号即为有数据的总行数 final totalDataRows = lastCell?.row;
内容的提问来源于stack exchange,提问作者Meysam
相关产品推荐
相关产品推荐

