LabVIEW 开 发 技 术 丛 书 边 干 边 学 报 表 生 成
录 目 录 序 言 1 初 识 LabVIEW Office 报 告 生 成 工 具 包 2-10 再 识 LabVIEW Office 报 告 生 成 工 具 包 11-17 后 记 18
序 言 在 自 动 化 测 试 领 域, 生 成 的 Office 报 表 (Word,Excel) 几 乎 是 每 个 专 业 的 自 动 化 测 试 程 序 的 标 配 不 具 备 自 动 报 表 生 成 的 自 动 化 测 试 程 序 通 常 被 视 作 入 门 级 程 序, 就 像 汽 车 里 面 的 奔 奔 或 者 QQ 先 前, 生 成 专 业 的 office 报 表 几 乎 被 少 数 几 个 VB 或 VC 高 手 垄 断, 因 为 你 除 了 要 熟 悉 VB 或 VC 外, 还 要 熟 悉 Windows 下 的 ActiveX 机 制 以 及 Word 和 Excel 导 出 的 属 性 和 方 法 NI Office 报 告 生 成 工 具 包 的 出 现 打 破 了 上 述 的 技 术 壁 垒, 使 得 仸 何 一 个 非 计 算 机 专 业 毕 业 且 并 不 精 通 Windows ActiveX 机 制 的 工 程 师 都 能 做 出 一 仹 能 与 VB VC 高 手 媲 美 的 专 业 的 Office 报 表 我 向 大 家 介 绍 这 个 工 具 包, 并 不 是 想 要 剥 夺 大 家 学 习 ActiveX 的 机 会, 成 为 某 些 偏 执 程 序 员 所 宣 称 的 LabVIEW 依 赖 者 相 反, 我 内 心 所 考 虑 却 是 希 望 尽 我 所 能, 帮 助 大 家 把 宝 贵 的 时 间 从 繁 琐 的 技 术 细 节 中 解 脱 出 来, 投 入 到 核 心 价 值 的 创 造 中 去 另 外,NI Office 报 告 生 成 工 具 包 并 不 是 以 dll 的 形 式 给 出, 而 是 以 源 代 码 的 形 式 给 出 只 要 你 愿 意, 你 可 以 在 完 整 的 商 业 源 代 码 的 基 础 上 随 时 研 究 office 报 告 生 成 的 所 有 细 节 本 篇 教 程 适 合 的 读 者 是 : 勤 奋 且 愿 意 在 业 余 时 间 专 研 新 技 术 的 工 程 师 ; 正 在 使 用 LabVIEW 编 写 自 动 化 测 试 代 码 的 工 程 师 ; 想 学 习 如 何 生 成 Office 报 表 的 工 程 师 ; 不 想 阅 读 office 报 告 生 成 工 具 包 英 文 帮 助 文 档 的 工 程 师 1
刜 识 LabVIEW Office 报 告 生 成 工 具 包 LabVIEW Office 报 告 生 成 工 具 包 升 级 到 1.1.2 版 本 后 就 变 得 非 常 可 爱 了, 因 为 它 提 供 了 一 个 基 于 交 互 式 配 置 的 Express VI MS Office Report, 如 图 2.1 所 示 本 章 就 从 这 个 Express VI 开 始, 与 大 家 一 起 迚 入 LabVIEW Office 报 告 生 成 的 世 界 图 2.1 MS office Report 毛 主 席 说 过, 要 在 战 略 上 藐 视 敌 人, 在 战 术 上 重 视 敌 人, 对 于 刚 接 触 LabVIEW office 报 告 生 成 工 具 包 的 工 程 师 来 说, 由 于 陌 生 而 产 生 一 点 畏 难 情 绪 是 非 常 正 常 的, 就 像 台 儿 庄 战 役 以 前 感 觉 日 本 鬼 子 很 难 打 一 样 其 实 打 过 了 就 觉 得 不 难 打 了 LabVIEW office 报 告 生 成 工 具 包 也 是 一 样, 用 过 了 就 觉 得 很 好 用 了 总 的 来 说, 要 用 好 LabVIEW office 报 告 生 成 工 具 包 需 要 做 好 两 件 事 Where 和 What, 即 告 诉 LabVIEW office 报 告 生 成 工 具 包, 在 Office 文 档 的 哪 个 位 置, 放 上 什 么 内 容 即 可 请 告 诉 我 内 容 放 在 哪 里? Excel 版 请 大 家 打 开 Excel, 在 Excel 的 左 上 角 有 一 个 name box, 如 图 2.2 所 示 Name box 相 当 于 给 单 元 格 起 了 一 个 名 字, 方 便 开 发 人 员 记 忆 和 在 程 序 中 使 用 比 如, 我 们 给 A2 单 元 格 起 个 名 字 叫 Operator Name, 那 么 在 LabVIEW 里 面 告 诉 MS office report.vi, 刘 邦 的 位 置 是 Operator Name, 则 MS office report.vi 就 会 把 刘 邦 写 入 A2 单 元 格 了 使 用 Namebox 还 有 一 个 好 处 是, 当 你 想 把 更 改 刘 邦 的 写 入 位 置 时, 只 需 要 把 对 应 的 单 元 格 命 名 为 Operator Name 即 可, 而 不 需 要 更 改 LabVIEW 程 序 2
图 2.2 Excel 里 面 的 Name box 为 了 使 我 们 的 第 一 个 报 告 看 起 来 专 业 一 点, 我 们 在 A1 单 元 格 中 输 入 报 表 的 名 字 美 国 国 家 仪 器 测 试 报 告, 然 后 把 A3 单 元 格 命 名 为 OperatorName, 如 图 2.3 所 示 Excel 的 Name box 输 入 还 有 点 儿 小 小 的 顺 序 性 技 巧 : 1. 单 击 选 中 Excel 单 元 格 2. 在 Name box 里 面 输 入 名 字 并 敲 回 车 点 击 Name box 右 边 的 下 拉 箭 头 ( 如 图 2.4 所 示 ), 会 发 现 名 字 已 经 在 Name box 里 面 了 Name box 里 面 的 命 名 觃 则 请 见 Google 图 2.3 把 A3 命 名 为 OperatorName 接 着 把 A4 单 元 格 命 名 为 Time, 把 A5 单 元 格 命 名 为 Value, 如 图 2.4 所 示 3
图 2.4 单 元 格 的 别 名 完 成 上 述 步 骤 后, 请 把 该 文 件 以 Excel97-2003 模 板 的 形 式 保 存, 如 图 2.5 所 示 图 2.5 保 存 成 Excel97-2003 模 板 成 功 完 成 上 述 步 骤 之 后, 恭 喜 大 家, 已 经 完 成 了 整 个 报 告 生 成 工 作 量 的 90%, 以 后 大 家 会 体 会 到, 基 于 LabVIEW 的 报 告 生 成, 大 量 的 工 作 是 在 设 计 报 告 模 板 上 请 打 开 LabVIEW, 并 在 程 序 框 图 中 放 入 MS Office Report.vi, 这 时 会 弹 出 配 置 对 话 框, 如 图 2.6 所 示, 然 后 在 第 一 项 中 选 择 Custom Report for Excel 4
图 2.6 MS Office Report.vi 配 置 对 话 框 接 着 在 Path to template 里 面 选 中 刚 才 保 存 的 模 板, 如 图 2.7 所 示, 大 家 可 以 发 现,MS office report.vi 会 自 动 找 到 命 过 名 的 单 元 格 点 击 OK 按 钮, 完 成 配 置 到 这 里, Where 就 完 成 了, 即 完 成 了 告 诉 LabVIEW 在 哪 里 放 置 你 想 插 入 的 内 容 5
图 2.7 选 择 报 告 模 板 在 LabVIEW 程 序 框 图 中, 我 们 为 OperatorName 输 入 刘 邦 ; 为 Time 输 入 当 前 日 期 ; 为 Value 输 入 一 个 随 机 数, 如 图 2.8 所 示 MS office Report.vi 可 以 接 受 各 种 类 型 的 输 入, 大 大 方 便 了 我 们 编 程 图 2.8 报 告 生 成 程 序 6
运 行 程 序, 结 果 如 图 2.9 所 示, 可 见 MS office Report.vi 已 经 把 数 据 插 入 了 我 们 指 定 的 地 方, 第 一 次 尝 试, 圆 满 成 功!~ 图 2.9 运 行 结 果 对 于 简 单 的 报 告 应 用, 大 家 学 到 这 里 就 可 以 了 想 做 出 格 式 精 美 专 业 的 报 告, 请 继 续 阅 读 第 三 章, 这 时 候, 除 了 Where 和 What 外, 还 需 要 告 诉 LabVIEW, How, 即 以 什 么 格 式 把 内 容 插 到 指 定 位 置 去 请 告 诉 我 内 容 放 在 哪 里? Word 版 与 Excel 中 的 Namebox 作 用 相 同,Word 中 用 Bookmark 来 为 一 个 位 置 命 名, 如 图 2.10 所 示 MS office report.vi 可 以 找 到 Word 模 板 中 有 Bookmark 的 位 置 图 2.10 Word Bookmark 与 上 节 相 同, 我 们 开 始 做 一 个 简 单 的 Word 模 板, 第 一 行 键 入 美 国 国 家 仪 器 测 试 报 告, 第 二 行 键 入 操 作 员 姓 名, 这 时, 光 标 停 留 在 操 作 员 姓 名, 我 们 为 这 个 位 置 添 加 一 个 Bookmark, 如 图 2.11 所 示 7
图 2.11 插 入 Bookmark 同 Excel, 为 Word 创 建 测 试 时 间, 测 试 值 的 Bookmark, 如 图 2.12 所 示 : 图 2.12 Word 报 告 模 板 8
制 作 好 Word 模 板 后, 请 保 存 为 Word97-2003 template 格 式, 如 图 2.13 所 示 图 2.13 保 存 为 Word97-2003 template 格 式 当 Word 模 板 做 好 后, 我 们 可 以 像 上 节 中 那 样, 使 用 MS Office Report.vi 向 模 板 插 入 内 容 在 MS Office Report.vi 的 配 置 窗 口 中, 可 以 看 到 我 们 创 建 的 Bookmark, 如 图 2.15 所 示 同 样, 我 们 可 以 为 MS Office Report.vi 输 入 参 数, 如 图 2.14 所 示 图 2.14 LabVIEW 报 告 生 成 程 序 运 行 程 序, 可 以 看 到 生 成 的 报 告 如 图 2.16 所 示 第 二 次 尝 试, 再 次 成 功! 通 过 上 面 的 实 战, 我 们 可 以 看 到,LabVIEW Office 报 告 生 成 工 具 包 的 精 髓 就 是 Where 和 What, Excel 中 通 过 Namebox 来 定 位,Word 中 通 过 Bookmark 来 定 位 准 备 好 内 容, 并 告 诉 MS Office Report.vi 位 置 在 哪 里,MS Office Report.vi 就 会 把 内 容 精 准 的 插 到 您 指 定 的 位 置 中 去 9
了 在 下 节 中, 我 们 将 再 识 Office 报 告 生 成 工 具 包, 我 们 会 使 用 Office 报 告 生 成 工 具 包 中 的 普 通 VI 来 创 建 更 加 漂 亮 的 文 档 图 2.15 从 MS Office Report 配 置 窗 口 看 到 的 Bookmark 图 2.16 自 动 生 成 的 报 告 10
再 识 LabVIEW Office 报 告 生 成 工 具 包 俗 话 说 做 事 做 细, 当 我 们 能 利 用 MS Office Report.vi 成 功 生 成 报 告 之 后, 接 下 来 的 想 法 肯 定 是 如 何 把 这 个 报 告 做 的 更 漂 亮 本 章 主 要 与 大 家 分 享 如 何 编 辑 单 元 格 / 字 体 的 格 式, 下 一 章 会 与 大 家 分 享 如 何 插 入 图 片, 表 格 通 过 编 辑 单 元 格 / 字 体 的 格 式 和 插 入 图 片 和 表 格, 可 以 使 报 告 变 得 更 加 漂 亮, 更 加 专 业 MS Office Report.vi 这 个 Express VI 中 没 有 格 式 设 置 选 项, 所 以 格 式 的 编 辑 都 将 用 普 通 VI 实 现 本 章 使 用 的 开 发 环 境 是 LabVIEW8.6,MS Office report generation toolkit 1.1.3 使 用 普 通 VI 生 成 报 告 在 使 用 普 通 VI 前, 先 看 看 MS Office report generation toolkit 函 数 面 板 的 构 成, 如 图 3.1 所 示 Part I 是 一 些 基 础 性 的 报 表 生 成 VI, 最 常 用 的 是 新 建 报 表 如 同 打 开 文 件 一 样, 保 存 报 表 至 保 存 报 表, 如 同 保 存 文 件 一 样, 和 处 置 报 表 释 放 资 源, 如 同 关 闭 文 件 一 样 图 3.1 MS Office report generation toolkit 函 数 面 板 的 构 成 Part II 是 与 Word 和 Excel 操 作 相 关 的 VI, 向 Word/Excel 插 入 文 本, 图 片, 表 格 以 及 编 辑 格 式 等 都 在 这 里 Part III 是 插 入 VI 说 明 信 息 以 及 设 置 打 印 格 式 的 VI 了 解 这 些 VI 的 功 能 后, 我 们 可 以 使 用 新 建 报 表, Excel Easy Text.vi, 保 存 报 表 至 和 处 置 报 表 来 实 现 先 前 MS Office Report.vi 实 现 的 功 能, 如 图 3.2 所 示 11
图 3.2 生 成 简 单 的 Excel 报 告 LabVIEW8.6 中 文 版 有 一 个 非 常 好 的 特 性 帮 助 文 档 都 是 中 文, 这 就 非 常 方 便 刜 学 者 学 习 图 3.3 是 新 建 报 表 VI 的 帮 助 文 档 截 图 通 过 中 文 帮 助 文 档, 我 们 可 以 很 容 易 理 解 上 面 的 程 序 的 意 思 我 们 通 过 New Report.vi 告 诉 程 序 按 照 Report Template.xlt 模 板 生 成 一 个 新 的 Excel 格 式 的 报 告, 通 过 Excel Easy Text.vi 告 诉 程 序 在 OperatorName 的 位 置 插 入 内 容 刘 邦, 通 过 Save Report to File.vi 告 诉 程 序 把 生 成 的 报 告 保 存 在 C:\Test.xls, 最 后 释 放 所 有 占 用 的 资 源 图 3.3 新 建 报 表 帮 助 文 档 到 此 为 止, 我 们 具 备 了 用 普 通 VI 来 生 成 报 告 的 能 力 感 兴 趣 的 读 者 请 利 用 普 通 VI 把 Time 和 Value 也 插 入 到 报 告 中 去 在 工 程 实 践 过 程 中, 我 发 现 绝 大 部 分 用 户 都 倾 向 于 使 用 Excel 来 制 作 产 品 测 试 报 告, 理 由 有 : Excel 里 面 有 丰 富 的 数 学 和 图 表 工 具 ;Excel 方 便 做 统 计 ;Excel 形 式 的 报 表 符 合 自 动 化 测 试 结 果 的 表 达 习 惯 为 减 少 冗 余 的 文 字, 本 文 从 现 在 开 始 仅 以 Excel 报 表 为 范 例 来 讲 述 各 种 报 告 生 成 技 术,Word 形 式 的 报 告 生 成 技 术 与 Excel 大 致 相 同, 大 家 可 以 参 考 第 二 章 的 模 式, 自 行 研 究, 当 做 学 完 本 文 之 后 的 作 业 12
设 置 字 体 设 置 Excel 单 元 格 的 字 体, 最 常 用 也 是 最 容 易 的 方 法 是 调 用 报 告 生 成 工 具 包 中,Excel Format 子 集 下 面 的 Excel Set Cell Font.vi, 如 图 3.4 所 示 图 3.4 Excel Set Cell Font.vi 在 Excel Set Cell Font.vi 的 即 时 帮 助 窗 口 ( 图 3.5) 中 可 以 看 到,Excel Set Cell Font.vi 用 法 很 简 单, 只 需 要 告 诉 Excel Set Cell Font.vi 以 什 么 样 的 字 体 (font) 格 式 化 哪 个 单 元 格 (name/start) 即 可, 用 法 与 Excel Easy Text.vi 很 相 似 图 3.5 Excel Set Cell Font.vi 我 们 在 图 3.2 的 程 序 的 Excel Easy Text.vi 前 面 加 入 Excel Set Cell Font.vi, 即 可 以 控 制 该 单 元 格 的 字 体 了, 如 图 3.6 所 示 13
Excel Easy Text.vi 中 的 字 体 设 置 图 3.6 设 置 单 元 格 字 体 范 例 每 一 个 刚 接 触 报 告 生 成 工 具 包 的 工 程 师 都 会 问 同 一 个 问 题 为 什 么 Excel Easy Text.vi 中 有 font 参 数 输 入 ( 如 所 示 ), 还 要 另 外 使 用 Excel Set Cell Font.vi 设 置 字 体? 为 什 么 不 能 直 接 给 Excel Easy Text.vi 的 font 参 数 直 接 赋 值 来 实 现 字 体 设 置? 图 3.7 Excel Easy Text.vi 中 的 font 参 数 这 是 因 为 Excel Easy Text.vi 中 的 font 参 数 不 能 影 响 从 模 板 创 建 的 Excel 文 档 中 的 单 元 格, 只 能 对 新 建 的 Excel 文 档 起 作 用, 如 图 3.8 所 示 图 3.8 使 用 font 参 数 设 置 字 体 格 式 14
设 置 单 元 格 对 齐 设 置 完 字 体 后, 下 一 个 编 辑 操 作 就 是 单 元 格 对 齐, 同 上, 借 助 报 告 生 成 工 具 包 中 Set Excel Format 选 板 下 的 Excel Set Cell Alignment.vi 即 可 完 成, 如 图 3.9 所 示 图 3.9 Excel Set Cell Alignment.vi 在 使 用 Excel Set Cell Alignment.vi 前, 应 该 先 把 内 容 插 入 单 元 格, 然 后 在 对 齐, 即 Excel Set Cell Alignment.vi 应 该 在 Excel Easy Text.vi 后 面 使 用, 如 图 3.10 所 示 设 置 单 元 格 边 框 和 背 景 色 图 3.10 设 置 单 元 格 对 齐 按 图 索 骥, 在 报 告 生 成 工 具 包 中 Set Excel Format 选 板 下, 我 们 可 以 找 到 设 置 单 元 格 边 框 和 背 景 色 的 VI,Excel Set Cell Color and Border.vi, 如 图 3.11 所 示 图 3.11 Excel Set Cell Color and Border.vi 使 用 Excel Set Cell Color and Border.vi 与 Excel Set Cell Alignment.vi 类 似, 如 图 3.12 所 示 15
图 3.12 设 置 单 元 格 背 景 精 通 LabVIEW 报 告 生 成 工 具 包 通 过 上 面 的 练 习, 我 们 对 报 告 生 成 工 具 包 的 陌 生 感 应 该 大 大 降 低 了, 另 外, 我 们 也 发 现, 报 告 生 成 工 具 包 的 使 用 并 不 难, 它 也 遵 从 打 开 -> 操 作 -> 关 闭 的 文 件 编 程 模 式 我 们 还 发 现, 在 LabVIEW 这 样 一 个 所 编 即 所 得 的 友 好 的 开 发 环 境 中, 很 容 易 掌 握 一 个 全 新 的 功 能 只 需 要 借 助 帮 助 文 档 多 尝 试 这 也 印 证 了 一 个 LabVIEW 大 牛 的 话 学 好 LabVIEW 仅 仅 需 要 大 胆 去 尝 试 俗 话 说 观 众 器 者 为 良 将, 观 千 方 者 为 良 医, 精 通 LabVIEW 报 告 生 成 工 具 包 的 不 二 法 门 则 是 看 完 LabVIEW 报 告 生 成 工 具 包 自 带 的 范 例 程 序, 如 图 3.13 所 示 图 3.13 LabVIEW 报 告 生 成 工 具 包 经 典 范 例 另 外 一 个 值 得 学 习 的 范 例 程 序 就 是 由 NI 公 司 方 慧 敏 女 士 写 的 范 例 程 序 16
图 3.14 报 告 生 成 经 典 范 例 17
I hear and I forget; I see and I remember; I do and I understand. 后 记 眼 见 为 实, 耳 听 为 虚, 仸 何 事 都 要 亲 自 付 以 行 动 才 能 真 真 正 正 的 理 解 在 LabVIEW 这 样 一 个 非 常 适 合 工 程 师 和 科 学 家 的 平 台 上, 多 尝 试, 多 实 践 是 工 程 能 力 增 长 的 不 二 法 门 拙 作 肯 定 存 在 不 少 问 题, 有 仸 何 问 题, 可 以 给 我 Email: jing.zhang.zju@gmail.com, 真 心 希 望 能 与 大 家 一 起 分 享 一 起 讨 论 18