TMS FlexCel Studio 6.0.2.0 FullSource 安装与编译配置指南 简介TMS FlexCel Studio v6.0.2.0 for Delphi BCB Full Source 是面向 Delphi 与 C Builder 开发者的表格处理库完整源码包适合需要在桌面应用中集成 Excel 级读写、公式计算、渲染打印与报表输出能力的开发者尤其便于做二次定制和排错研究。压缩包共 1157 个文件约 9.5MB以 hpp、inc、pas 等头文件与 Pascal 源码为主体并含 dpk/dproj/cbproj 工程、bpl/dcp 编译包、lfm/dfm 窗体、res/rc 资源及 xls 示例表格覆盖库编译、示例演示与文档说明。已有 327 人学习下载。借助全源代码可查看公式引擎、样式格式、分页打印与跨平台封装的实现细节结合示例工程和帮助文档快速验证功能适合深入理解表格组件架构并完成定制开发。1. TMS FlexCel Studio 6.0.2.0 安装解压这一步就能让不少人放弃上周远程查看一台开发机老项目要在 Delphi 7 里导出 Excel 报表同事把 TMS FlexCel Studio 6.0.2.0 的 FullSource 包解压到「桌面\新建文件夹」然后双击里面的 dpk 一路下一步IDE 重启后报找不到FlexCel.Core.dcu。包本身没问题问题出在三件事解压路径带中文、运行时包没先编译、32 位和 64 位的搜索路径填混了。FlexCel 在 Delphi 和 CBuilder 圈子里用得极广读写 xls/xlsx、套模板出报表、导出 PDF 都靠它装不顺的后遗症是整条报表链卡在「编译不过」上动弹不得。下面按我自己的习惯把这套 FullSource 包从解压到跑通完整走一遍。2. 装前对表Delphi 与 CBuilder 的版本、位数和 7z 解压2.1 先确认 packages 目录里有没有你的 IDEFullSource 版的意思是不给 exe 安装器源码、包工程、Demo、离线帮助全塞进压缩包里编译和安装都得自己动手。好处是能改源码、能跟着 IDE 版本重编代价是选错目录就白忙一场。所以第一步不要急着双击而是先看packages下面有哪些子目录。FlexCel 的习惯是按 IDE 版本分文件夹Delphi 7、2007、2010、XE 系列、10.x 各占一个CBuilder 的包工程通常和对应 Delphi 版本放在一起。你的 IDE 在不在里面直接决定后面是「编译现成的包」还是「自己新建包工程」。IDE 版本包目录常见写法目标平台我一般怎么处理Delphi 7packages\Delphi7仅 Win32直接编注意没有 UnicodeDelphi 2007 ~ 2010packages\Delphi2007 / Delphi2010仅 Win322010 起 string 变 Unicode老代码要看过XE ~ XE8packages\DelphiXE…Win32 / Win64先编 Win32成功后再补 Win6410.x 系列packages\Delphi10…Win32 / Win64同上别一次性两个平台一起编CBuilder与对应 Delphi 版本同目录Win32 / Win64用 IDE 打开包工程别手改扩展名表里的目录名是常见写法具体到这份 6.0.2.0以你解压后实际看到的文件夹名为准。找不到完全对应的就选比你 IDE 稍新的那个目录打开先试着编译能过就用报一堆语法错说明版本差太远这时候要么降 IDE要么干脆只引源码、不装组件面板。位数这件事要提前想清楚。很多项目长期只出 32 位 exe你顺手把包编成 64 位组件面板上能看见工程一编译就报找不到单元——因为 Library Path 是分平台保存的。我的建议是先把 Win32 走通确认 Demo 能跑出 xlsx再回头补 Win64出问题也容易定位是哪一步引入的。2.2 解压这一步7z 版本、路径字符和完整性校验7z 是 LZMA 系压缩必须用能识别这个格式的工具。WinRAR 4.x 及更早版本对 7z 支持不完整双击进去很可能只看到一层空目录或者直接弹「不支持的方法」很多人到这一步以为是包坏了其实是解压器太老。7-Zip 官方客户端或者较新的压缩软件都行。# 第一步先测完整性别等解压到一半才报 CRC 错误 C:\Program Files\7-Zip\7z.exe t D:\pkg\TMS.FlexCel.Studio.v6.0.2.0.for.Delphi.BCB.FullSource.7z # 第二步解压到纯 ASCII 路径-o 后面紧跟目录名、中间不能有空格 C:\Program Files\7-Zip\7z.exe x D:\pkg\TMS.FlexCel.Studio.v6.0.2.0.for.Delphi.BCB.FullSource.7z -oD:\Dev\FlexCel602 -yt是只测试不解压几秒钟就能告诉你压缩包有没有在传输中损坏x是带完整目录结构解压删掉这个参数会把所有文件平铺到一层源码目录结构就没了-o指定输出目录必须紧贴路径、不能写成-o D:\...中间带空格会被当成另一个参数-y是全部覆盖不询问方便重复执行。解压目标路径我坚持用纯英文、不带空格、不要放在 OneDrive 或任何自动同步目录里——中文路径在旧版 dcc32 上会出各种找不到单元的怪问题同步目录会在编译期间锁住 bpl 文件。解压完先核对一下骨架正常应该是这个结构D:\Dev\FlexCel602\ ├─ source\ 所有 .pas 单元Library Path 最终指这里 ├─ packages\ 按 IDE 版本分的包工程 ├─ demos\ 示例工程后面验证跑通正好用 └─ help\ 离线文档source目录里的单元名都是带点号的比如FlexCel.Core、FlexCel.XlsAdapter这个细节决定了后面 Unit Scope Names 怎么填先记住。demos不要删验证阶段比任何文档都好使。注意解压后不要直接拿压缩包里的路径当工作路径。压缩包放在下载目录杀毒软件和同步盘都盯着那里编译输出写到同目录迟早出问题先挪到D:\Dev\这类干净位置再动手。3. 编译包顺序先运行期包再设计期包反了这一路就会很折腾3.1 运行时包和设计期包是两个东西FlexCel 的包里有两类 bpl运行时包里装的是真正干活的代码你的 exe 要么动态链接它要么把 dcu 静态链进去设计期包只负责把TXlsFile、TFlexCelReport这些组件注册到 IDE 的组件面板上运行时完全不需要它。关键在于设计期包 uses 运行时包。运行期包没编出来设计期包一编译就是「Never-build package must be recompiled」或者装进去之后 IDE 启动弹「Cannot load package它包含的单元同时也存在于另一个包里」。所以顺序是死的先 Build 运行时包再 Build 设计期包最后 Install 设计期包。从文件名区分运行时包一般就叫 FlexCel 或者带版本后缀设计期包带 Design 后缀。看不出来就看工程里有没有Register过程——有Register的那个是设计期包。3.2 命令行 msbuild 与 IDE 里点 Build 两条路IDE 里操作是打开包工程右键 Build然后 Component → Install Packages → Add 把设计期 bpl 加进去。这条路直观但换机器、换 IDE 版本就得重来一遍我更喜欢命令行能写进脚本。:: 32 位运行时包必须先编它 msbuild D:\Dev\FlexCel602\packages\Delphi10x\FlexCel.dproj /t:Build /p:PlatformWin32 /p:ConfigRelease :: 设计期包依赖上一步产物顺序不能反 msbuild D:\Dev\FlexCel602\packages\Delphi10x\FlexCelDesign.dproj /t:Build /p:PlatformWin32 /p:ConfigRelease/t:Build是增量编译只重编有改动的单元不要图省事用/t:Rebuild它会先清空输出目录一旦设计期包的构建失败你连上一次编好的 bpl 都没了。/p:PlatformWin32明确指定平台不写的话取工程默认值经常和你想的不是一个。/p:ConfigRelease让输出落到 Release 目录避免和 Debug 的 dcu 混在一起——这两套 dcu 混用编译器会报「单元是用不同版本的 System 编译的」排查起来很费时间。编译成功与否看输出目录有没有生成 bpl 和对应的 dcp。生成位置由工程的输出路径决定我一般统一改到D:\Dev\FlexCel602\dcu\Win32\Release后面填路径时只有一处要对。3.3 Library Path 与 Unit Scope Names 怎么填包编完了工程还是找不到单元问题就在搜索路径。Delphi 的 Library Path 是分平台存的选中 Win32 填一份选中 Win64 再填一份别指望一份通吃。; Win32 平台 D:\Dev\FlexCel602\source D:\Dev\FlexCel602\dcu\Win32\Release ; Win64 平台 D:\Dev\FlexCel602\source D:\Dev\FlexCel602\dcu\Win64\Release第一行是源码路径FlexCel 的 full source 版允许你直接编源码不依赖预编译 dcu第二行是你自己编出来的 dcu 输出目录。两行都留着的好处是源码没改动时编译器直接命中 dcu改过源码它自动重编不用手动切。第二件事是 Unit Scope Names。FlexCel 的单元名带点号uses FlexCel.Core写全当然能过但工程里会到处都是长名字。在 Project → Options → Delphi Compiler 里把FlexCel加进 Unit Scope Names分号分隔之后uses Core, XlsAdapter也能解析。这个设置是跟着工程走的团队协作时记得跟着 dproj 一起提交不然别人拉下来就一片红线。提示改完路径立刻做一次 Build不是 Compile。Compile 只编当前单元会把之前缓存的错误搜索结果一直带下去那种「明明路径填对了还是报找不到」的情况九成是缓存。4. 路径配置全局搜索路径、工程级引用和 BCB 的 include4.1 全局 Library Path 还是工程级搜索路径两种放法各有代价。放在 IDE 的全局 Library Path 里所有工程都能用但换台机器、换个人就得重新配一遍而且多个 Delphi 版本共存时特别容易指错。放在工程级搜索路径里跟着 dproj 走谁拉代码谁就有但会把绝对路径写进版本库别人机器上路径不一样照样报错。我一般这么做机器上建一个系统环境变量IDE 的路径里引用它。系统环境变量FLEXCEL D:\Dev\FlexCel602 IDE 搜索路径$(FLEXCEL)\source $(FLEXCEL)\dcu\$(Platform)\Release$(FLEXCEL)这种写法 IDE 和 msbuild 都能展开换机器只要改变量值工程文件一个字不用动。$(Platform)在较新版本的 IDE 路径里能识别老版本不认就老老实实写 Win32 / Win64 两条。如果必须写在工程里用相对路径或者环境变量别写死D:\。我见过一个项目把作者本机的绝对路径提交上去其他人拉下来全员编译失败最后是靠全局搜索才定位到问题。4.2 CBuilder 侧的包与 include / library 路径BCB 用户麻烦一点因为 C 编译器要先看到.hpp才能编。最省事的做法不是把源码目录直接怼进 C 工程而是让 FlexCel 以运行时包的形式参与链接工程里勾上「Link with runtime packages」包名列表加上 FlexCel头文件由包提供链接期只认 bpl。要走静态链接的话就得把路径配对PropertyGroup Condition$(Platform)Win32 IncludePath$(FLEXCEL)\source;$(IncludePath)/IncludePath LibraryPath$(FLEXCEL)\dcu\Win32\Release;$(LibraryPath)/LibraryPath /PropertyGroupIncludePath是给编译器找.hpp的LibraryPath是给链接器找.dcu/.obj/.lib的两个都要填只填一个的表现是「编译过了但链接报 Unresolved external」。C 侧引用时写全名// 只包含主单元的头其余依赖由它带进来 #include FlexCel.XlsAdapter.hpp如果链接阶段报一大堆找不到符号先别怀疑包坏了八成是 Delphi 单元没按 C 模式重新生成 hpp把 dcu 输出目录清空重编一次包问题基本消失。4.3 多版本 Delphi 共存时的路径隔离一台机器上装 Delphi 7、XE2、10.x 三个版本太常见了。这时最大的坑是所有版本共用一个 dcu 输出目录后果是 A 版本编出来的 dcu 被 B 版本读到报「单元是用不同版本编译的」然后你就开始怀疑人生。我的做法是按 IDE 版本分目录dcu\D7\、dcu\XE2\、dcu\10x\每个版本在各自的 IDE 里配各自的搜索路径互不干扰。同时在 Component → Install Packages 里检查一遍把指向旧版本 bpl 的条目全去掉——那些残留项平时不吭声一旦你换版本就跳出来报重复包。5. 排查清单装完编译报错的五种现场5.1 编译期找不到单元、版本不匹配现象一F1026 File not found: FlexCel.Core.dcu路径明明填了。原因搜索路径填在了别的平台下或者填的是源码目录但源码里还有子目录被漏掉也有可能是路径里带了中文旧版 dcc32 解析失败。 解决切到目标平台Win32/Win64分别确认路径把source整目录加进去再用命令行dcc32 -U路径单独验证一次能定位是 IDE 配置问题还是路径本身有问题。现象二Unit FlexCel.Core was compiled with a different version of System.Classes。原因读到的是别的 Delphi 版本编出来的 dcu通常是多版本共用输出目录或者全局 Library Path 里还留着旧路径。 解决清空当前版本的 dcu 输出目录重编运行时包然后逐个检查 IDE 的搜索路径把不属于当前版本的条目删掉。这条最容易被忽略因为报错信息指向的是 System 单元跟 FlexCel 看起来毫无关系。5.2 加载期包装不上、组件面板重复现象三安装设计期包时弹「Cannot load package FlexCelDesign找不到指定的模块」。原因设计期 bpl 依赖运行时 bpl而运行时 bpl 所在目录不在系统 PATH 里IDE 加载时找不到依赖。 解决把 bpl 输出目录加进系统 PATH 并重启 IDE或者干脆让两个包都输出到 IDE 默认的 bin 目录下省掉这一层。现象四组件面板上出现两套 TMS FlexCelIDE 启动还提示重复包。原因以前装过试用版或旧版本注册表里的包条目没清干净。 解决Component → Install Packages 里把旧路径的条目取消勾选并 Remove重启 IDE 后重新 Add 新编的 bpl。别直接删文件注册表条目还在IDE 照样会去加载。5.3 环境类解压和目标平台现象五解压报CRC Failed或「不支持的方法」。原因压缩软件版本太老或者下载过程被截断。 解决换新版 7-Zip先跑7z t测一遍确认包完整再解压反复失败就重新拿一次压缩包别在坏包上浪费半小时。现象六Win32 编得过一切到 Win64 就报找不到单元。原因Library Path 是分平台存的Win64 那一栏是空的。 解决在 IDE 里把目标平台切到 Win64重新填一遍搜索路径并确认 Win64 的包也编译过。这一步没有捷径两个平台就是两份配置。注意FlexCel 这套 full source 包不需要在线激活装完即用。如果启动 IDE 后仍然弹评估或试用提示说明加载的是旧试用版残留的 bpl去 Install Packages 里清一遍。6. 验证跑通一个最小 xlsx 读写 Demo 的三次编译装完别急着开新工程先用最小代码验证链路通不通。新建一个控制台工程uses里加上 FlexCel 的两个核心单元写一个文件再读回来program FlexCelSmoke; {$APPTYPE CONSOLE} uses SysUtils, // XE2 之前写 SysUtils之后写 System.SysUtils FlexCel.Core, FlexCel.XlsAdapter; var Xls, Book: TXlsFile; begin // 1) 新建工作簿1 个 sheetxlsx 格式允许覆盖同名文件 Xls : TXlsFile.Create(1, TExcelFileFormat.v2007, True); try Xls.SetCellValue(1, 1, Hello FlexCel); Xls.SetCellValue(2, 1, 42); Xls.Save(D:\temp\flexcel_smoke.xlsx); // 目录要提前建好 finally Xls.Free; end; // 2) 读回来确认写出的不是空文件 Book : TXlsFile.Create(D:\temp\flexcel_smoke.xlsx, True); try Writeln(Book.GetCellValue(1, 1).ToString); Writeln(Book.GetCellValue(2, 1).ToString); finally Book.Free; end; end.TExcelFileFormat.v2007就是 xlsx老版本里这个枚举最稳妥构造函数第三个参数是「允许覆盖已存在文件」写成 False 时文件已存在会直接抛异常调试阶段反而好用。取值那两行不同小版本的 TCellValue 提供了ToString和AsString两种写法编译不过就按代码补全换一个不影响验证结论。第一次编译大概率会失败把报错分三类看找不到单元是搜索路径没配好找不到符号是包没链接上运行时报「文件被占用」是路径被 Excel 或同步盘锁着。三类对应三个不同的修法别混着改。检查点期望结果不正常时先看哪里组件面板出现 TMS FlexCel 页能看到 TXlsFile设计期包没装或装了旧版控制台 Demo 编译通过0 errorUnit Scope Names 与搜索路径生成的 xlsx 能正常打开两个单元格有值Save 路径、文件是否被占用切到 Win64 再编一次依然 0 errorWin64 的 Library Path 是否单独填过IDE 启动无重复包提示只有一套组件Install Packages 里的残留条目五条全部对上这套环境就算真正跑通了之后再去碰模板报表、PDF 导出这些进阶用法才有意义。这份包里的source、packages、demos都在压缩包里按上面的顺序走一遍正常半小时内能完成安装。从那以后我每次装这类 full source 组件包都强制走一遍「测压缩包完整性 → 解压到纯英文短路径 → 编运行时包 → 编设计期包 → 分平台填搜索路径 → 控制台 Demo 验一遍」这个流程一次也没再出现过编译不过却不知道从哪下手的情况。希望帮到你。本文还有配套的精品资源点击获取