个人理解 dataview 没把 “md 表格” 作为默认的可解析对象,
即, 虽然笔记内的 列表 (任务条目), 文档属性, 标签, … 都可以拿 DQL 直接访问到,
但 md table 不行
所以还是得自己读文本内容, 把 table 解析出来再输出,
这事 dql 没戏, 还是写 dataviewjs 吧
可以参考 DataviewJS 的提取与汇总 - 经验分享 尤其可以借鉴 汇总原文 那一节, 比如搜 "汇总代码块、Callout"
那里
个人建议是把 table 转成 json, 比较能抗数据结构的变化, 例 (以下函数把文本形式的 table 解析为 [{name: xx, col1: yy, col2: zz}, {name: x2, col1: y2, col2: z2}, ...]
)
const parseTable = (content, noteFileName) => {
const lines = content.trim().split('\n');
// 查找表头行并确定列名
const headers = lines[0].slice(1, -1).split('|').map(cell => cell.trim());
// 查找数据行并提取信息,每一行为一个对象
let dataRows = lines.slice(2).map(row => {
const rowData = {};
const cells = row.slice(1, -1).split('|').map(cell => cell.trim());
headers.forEach((header, index) => {
rowData[header] = cells[index];
});
rowData['filename'] = noteFileName;
return rowData;
});
return dataRows;
};
如果确定表格结构不会改, 那也可以写简单点, 笔记里直接过滤以 |
起头的行, 对所有这种行, 切分后把固定位置的某几个元素取出, 就是所需数据