# Sheet 读取数据 ## 读取路径 | 需求 | 首选 | 结果形态 | |---|---|---| | Agent 快速查看值、低 token | dws sheet csv-get | CSV 文本加范围/截断元数据 | | 必须完整且截断即失败 | dws sheet +read | 严格完整读取 | | columns/data/dtypes/formats | dws sheet table-get | typed table/dataframe | | 需要公式、富文本、链接、验证等逐格结构 | dws sheet range read | per-cell JSON | | 合并、冻结、分组和尺寸 | dws sheet info | 工作表结构 | 当前没有 sheetId 时只执行一次 +list-sheets,并把真实 sheetId 传播到后续阶段。不要为不需要 sheetId 的命令额外探活。 ## CSV 快速读取 dws sheet csv-get --node --sheet-id --range "A1:H200" --format json 返回契约必须按字段解释: - csv 每行带 `[row=N]` 定位前缀,该前缀不是单元格数据;真正 CSV 内容仍按 RFC 4180 解析。 - `rowIndices[i]` 是第 i 个返回行的真实行号,`colIndices[j]` 是第 j 列的真实列字母。后续定位单元格必须使用这两个映射,禁止通过 CSV 中逗号数量推算列号。 - `resolvedRange` 是未显式传 range 时服务端解析出的完整目标范围;`returnedRange` 是本次实际完整返回的范围,两者不能混用。 读取成功后必须检查: - returnedRange 是否覆盖请求范围; - hasMore 是否为 false; - truncationReasons 是否为空; - 返回行列数是否符合预期。 csv-get 单次最多 30000 单元格,并受 maxChars 约束。hasMore=true、范围缩短或出现截断原因时,只能说“当前块已读取”,不能说全量完成;按 returnedRange 的下一行构造下一块,保证无遗漏、无重叠并设置页数/块数上限。`max_cells` 不能靠增大 maxChars 解决。需要失败关闭时直接用 +read,避免由 Agent 手工实现完整性判断。 `forbidden.document.sizeOverLimit` 表示工作簿整体无法装载,不是范围过大或空结果;缩小 range 不能修复。应建议创建更小副本或拆分工作簿,不得不断缩小范围绕过。 csv-get 不返回合并单元格结构。合并区域的非左上角为空不能推导“没有内容”,需要 info 的 mergedRanges 配合解释。 ## 渲染选项 - formatted_value:面向展示,可能包含格式化日期、货币或百分比。 - raw_value:需要计算值或保留数值语义时使用。 - formula:需要确认写入的公式文本时使用。 公式验证通常分两次:先 formula 确认文本,再 raw_value 或 formula-verify 检查计算。不要把展示字符串当作原始数值,也不要把公式字符串当计算结果。 ## typed table 与逐格读取 table-get 用于后续明确需要 columns、data、dtypes、formats 的处理链;普通问答不应为了“结构化”增加 token。默认首行作为表头,确实没有表头时才用 `--no-header`;返回 data 中 `{}` 表示空位,不是待执行的单元格对象。table-get 不返回逐格超链接、验证或样式元数据。 range read 只在 CSV 无法承载的 per-cell 信息确实需要时调用,并尽量缩小范围和返回配置。其 cells 与 `rowIndices`/`colIndices` 对齐,可返回 value/formula/richText/hyperlink/dataValidation/cellStyles 等逐格结构;不能用它推断 mergedRanges。 dws sheet table-get --node --sheet-id --range "A1:D100" --format json dws sheet range read --node --sheet-id --range "A1:B5" --format json 如果命令返回非零、统一 envelope 的 ok=false、JSON 解析失败、条数不一致或分页游标不前进,立即失败。只有明确成功且终止状态成立时,空数组/空 CSV 才代表真实空结果。 ## 读取完成条件 最终答复前确认:profile 一致;ID 来自当前任务;所有块都已覆盖;无 hasMore、截断、重复块或游标停滞;涉及结构时另有 info/object list 证据。只报告已验证范围,不夸大到整张表。