面向关系型报表的开放格式与可嵌入引擎——在这里,每一份报表都是一个可移植的查询图、一张物化的 SQLite 表和一套参数化布局。
MAD 是一个用 Objective-C 从零构建的关系型报表平台,用于即席查询、报表和设计:面向 iOS 与原生 macOS(AppKit)的 MAD Designer 和 MAD Viewer 应用,在 Linux 与 macOS 上以无头方式运行它们的引擎,以及开放的 .mad 文档格式。一个 .mad 文件在不到 100 KB 的体积内保存报表的完整定义——数据库架构快照、查询图(表、连接、谓词、分组)以及各元素的带区布局——并与刷新时生成的物化 SQLite 表(.maddb + .mdcache)清晰分离。
代码位于 github.com/mthomason/MAD,采用 MIT 许可证;项目名称与应用美术资源不在该许可证的授权范围内(参见 NOTICE)。
在 macOS 上试用 MAD Designer(macOS 12.0+,Apple Silicon):
- Homebrew 安装:
brew install --cask mthomason/tap/mad-designer
直接下载: MAD-Designer-macOS.dmg MAD-Designer-macOS.zip (浏览器直接下载拖入 /Applications后,首次打开前可在终端执行一次xattr -cr "/Applications/MAD Designer.app")
适用于 macOS 的 MAD Designer——原生 AppKit 桌面应用(NSDocument、可视化的表与连接查询画布、可交互的节区缩略图与带区报表设计器,以及分页的 PDF/HTML/CSV/JSON 报表查看器):


适用于 iOS 的 MAD Designer,从选择数据源到在 MAD Viewer 中阅读完成的报表:
同一引擎在 Linux 上以无头方式运行:通过 mad CLI 执行 inspect、schema、query、refresh 和 export,无需数据库服务器,也无需凭据:

录像中导出的报表是纯 HTML,可在任意浏览器中打开。
.mad 文件把架构契约、查询 AST 和呈现布局打包成一个可检查、可 diff 的产物,在 Apple 与 Linux 上生成逐字节一致的 SQL 和导出结果。libpq、SQLite——以及用于条形码的 libarchive/bzip2 和 zint。没有转售任何专有报表 SDK。MADDataTableFast),并在其中计算两趟分组和聚合,因此分页渲染在手机的内存预算内依然很快。.mad 容器是一个 bzip2 tar 归档,内含可移植的 SQLite 存储;打开它不需要任何 Apple 框架。.mad 格式开放规范,每个文件一章:
文档是什么 ·
容器 ·
存储 ·
读取与写入 ·
伴随文件 ·
风险 ·
规范性 v1 ·
开放问题 ·
验证
AppKit 桌面应用:
可视化查询画布、带缩略图和检查器的带区报表设计器、分页查看器,以及如何从源码构建或打包。mad CLI——用一行 Docker 命令
检查、刷新并导出 .mad。.mad 并上传其导出结果;mthomason/mad-action@v1。MADDatabase、注册驱动、返回数据行。愿景——报表即组合式数据库表、单份报表中的多数据源查询、超越纸面范式的原生 UIKit 数据视图,以及把旧版 Crystal Reports(.rpt)转换为开放的 .mad 文件。
构建于该引擎之上的报表设计器 MAD Designer 应用有自己的站点:mad.everydayapps.com。
本页为英文原文的简体中文翻译;如有出入,以英文原文为准。