compiler.build.excelAddIn
只有 Windows® 操作系统才支持此函数。
语法
说明
compiler.build.excelAddIn( 使用由 FunctionFiles)FunctionFiles 指定的 MATLAB® 函数创建 Excel® 加载项。在创建 Excel 加载项之前,请安装支持的编译器。
compiler.build.excelAddIn( 使用由一个或多个名称-值参量指定的选项创建 Excel 加载项。选项包括加载项名称、输出目录,以及是否生成 Microsoft® Visual Basic® 文件。FunctionFiles,Name,Value)
compiler.build.excelAddIn( 使用由 opts)compiler.build.excelAddInOptions 对象 opts 指定的选项创建 Excel 加载项。不能使用名称-值参量指定任何其他选项。
示例
在 Windows 系统上使用生成幻方的函数文件创建一个 Excel 加载项。
确保您已安装了下列项:
Windows SDK。有关详细信息,请参阅 Windows SDK。
MinGW-w64。要从 MathWorks File Exchange 安装它,请参阅 MATLAB 对 MinGW-w64 C/C++/Fortran 编译器的支持。
使用
mbuild -setup -client mbuild_com来确保 MATLAB 能够创建 Excel 加载项。
在 MATLAB 中,找到要部署为 Excel 加载项的 MATLAB 函数。对于此示例,使用 中的文件 matlabroot\extern\examples\compilermagicsquare.m。
appFile = fullfile(matlabroot,'extern','examples','compiler','magicsquare.m');
使用 compiler.build.excelAddIn 命令编译 Excel 加载项。
compiler.build.excelAddIn(appFile);
该函数会在当前工作目录中名为 magicsquareexcelAddIn 的文件夹中生成以下文件:
dlldata.cGettingStarted.htmlincludedSupportPackages.txtmagicsquare.defmagicsquare.bas(仅当您启用'GenerateVisualBasicFile'选项时)magicsquare.rcmagicsquare.xla(仅当您启用'GenerateVisualBasicFile'选项时)magicsquare_1_0.dllmagicsquare_dll.cppmagicsquare_idl.hmagicsquare_idl.idlmagicsquare_idl.tlbmagicsquare_idl_i.cmagicsquare_idl_p.cmagicsquareClass_com.cppmagicsquareClass_com.hppmccExcludedFiles.logmwcomtypes.hmwcomtypes_i.cmwcomtypes_p.creadme.txtrequiredMCRProducts.txtunresolvedSymbols.txt
在 Windows 系统上创建一个 Excel 加载项并使用名称-值参量对它进行自定义。
对于此示例,使用 中的文件 matlabroot\extern\examples\compilermagicsquare.m。
appFile = fullfile(matlabroot,'extern','examples','compiler','magicsquare.m');
使用 compiler.build.excelAddIn 命令编译 Excel 加载项。使用名称-值参量指定加载项名称和版本,生成一个 Microsoft Visual Basic 文件并启用详尽输出。
compiler.build.excelAddIn(appFile,'AddInName','MyMagicSquare', ... 'AddInVersion','2.0', ... 'GenerateVisualBasicFile','on', ... 'Verbose','on');
该函数会在当前工作目录中名为 MyMagicSquareexcelAddIn 的文件夹中生成以下文件:
dlldata.cGettingStarted.htmlincludedSupportPackages.txtmagicsquareClass_com.cppmagicsquareClass_com.hppmccExcludedFiles.logmwcomtypes.hmwcomtypes_i.cmwcomtypes_p.cMyMagicSquare.basMyMagicSquare.defMyMagicSquare.rcMyMagicSquare.xlaMyMagicSquare_2_0.dllMyMagicSquare_dll.cppMyMagicSquare_idl.hMyMagicSquare_idl.idlMyMagicSquare_idl.tlbMyMagicSquare_idl_i.cMyMagicSquare_idl_p.creadme.txtrequiredMCRProducts.txtunresolvedSymbols.txt
使用 compiler.build.ExcelAddInOptions 对象在 Windows 系统上创建多个 Excel 加载项。
对于此示例,使用 中的文件 matlabroot\extern\examples\compilermagicsquare.m。
appFile = fullfile(matlabroot,'extern','examples','compiler','magicsquare.m');
使用 appFile 创建 ExcelAddInOptions 对象。使用名称-值参量指定一个共用输出目录,生成一个 Visual Basic 文件,并启用详尽输出。
opts = compiler.build.excelAddInOptions(appFile, ... 'OutputDir','D:\Documents\MATLAB\work\ExcelAddInBatch', ... 'GenerateVisualBasicFile','on', ... 'Verbose','on');
使用 ExcelAddInOptions 对象编译加载项。
compiler.build.excelAddIn(opts);
要使用具有相同选项的函数文件 myMagic2.m 来创建新加载项,请在再次运行编译函数之前,使用圆点表示法修改现有 ExcelAddInOptions 对象的 FunctionFiles 参量。
opts.FunctionFiles = 'myMagic2.m';
compiler.build.excelAddIn(opts);通过修改 FunctionFiles 参量并重新编译,您可以使用同一个选项对象创建多个加载项。
创建一个 Excel 加载项,并将有关编译类型、生成的文件、包含的支持包和编译选项的信息保存到 compiler.build.Results 对象中。
使用文件 magicsquare.m 进行编译。
results = compiler.build.excelAddIn('magicsquare.m')results =
Results with properties:
BuildType: 'excelAddIn'
Files: {2×1 cell}
IncludedSupportPackages: {}
Options: [1×1 compiler.build.ExcelAddInOptions]
RuntimeDependencies: [1×1 compiler.runtime.Dependencies]Files 属性包含以下编译文件的路径:
magicsquare_1_0.dllGettingStarted.html
注意
仅当您在编译命令中启用了 'GenerateVisualBasicFile' 选项时,文件 magicsquare.bas 和 magicsquare.xla 才会包括在 Files 中。
输入参数
实现 MATLAB 函数的文件,指定为字符向量、字符串标量、字符串数组或字符向量元胞数组。文件路径可以是相对于当前工作目录的路径,也可以是绝对路径。文件必须具有以下扩展名之一:.m、.p、.mlx 或 .mexa64。
示例: ["myfunc1.m","myfunc2.m"]
数据类型: char | string | cell
Excel 加载项编译选项,指定为 compiler.build.ExcelAddInOptions 对象。
名称-值参数
将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。
如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name 引起来。
示例: 'Verbose','on'
Excel 加载项的名称,指定为字符向量或字符串标量。生成的加载项的默认名称是 FunctionFiles 参量的第一个条目。名称必须以字母开头,并且只能包含字母字符和下划线。
示例: 'AddInName','myAddIn'
数据类型: char | string
加载项版本,指定为字符向量或字符串标量。
示例: 'AddInVersion','4.0'
数据类型: char | string
要包含在 Excel 加载项中的其他文件和文件夹,指定为字符向量、字符串标量、字符串数组或字符向量元胞数组。路径可以是相对于当前工作目录的路径,也可以是绝对路径。
示例: 'AdditionalFiles',["myvars.mat","data.txt"]
数据类型: char | string | cell
自动包含数据文件的标志,指定为 'on' 或 'off',或者指定为数值或逻辑 1 (true) 或 0 (false)。值 'on' 等效于 true,值 'off' 等效于 false。因此,可以将此属性的值用作逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。
如果将此属性设置为
'on',则您提供的作为特定函数(例如load和fopen)的输入的数据文件将自动包含在加载项中。如果将此属性设置为
'off',则必须使用AdditionalFiles属性将数据文件添加到加载项中。
示例: 'AutoDetectDataFiles','Off'
数据类型: logical
类的名称,指定为字符向量或字符串标量。类名称必须符合 Excel 加载项类名称要求。
默认值是 FunctionFiles 参量中列出的第一个文件的名称后跟 Class。
示例: 'ClassName','magicsquareClass'
数据类型: char | string
启用调试符号的标志,指定为 'on' 或 'off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true,值 'off' 等效于 false。因此,可以将此属性的值用作逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。
如果将此属性设置为
'on',则调试符号信息将包含在编译的工件中。此选项还会使mbuild将相应的调试标志传递到系统编译器。通过调试选项,您可以回溯到能够确定故障是发生在 MATLAB Runtime 初始化、函数调用还是终止例程中的时间点。此选项不允许您使用外部调试器调试 MATLAB 文件。如果将此属性设置为
'off',则不会包含调试符号。这是默认选项。
示例: 'DebugSymbols','on'
数据类型: logical
嵌入可部署存档的标志,指定为 'on' 或 'off',或指定为数值或逻辑 1 (true) 或 0 (false)。值 'on' 等效于 true,值 'off' 等效于 false。因此,可以将此属性的值用作逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。
如果将此属性设置为
'on',则此函数会将可部署存档嵌入在 Excel 加载项中。如果将此属性设置为
'off',则此函数会将可部署存档生成为单独的文件。
示例: 'EmbedArchive','Off'
数据类型: logical
自 R2024b 起
外部 AES 加密密钥和 MEX 密钥加载程序文件的路径,指定为标量结构体,其中恰好有两个分别名为 EncryptionKeyFile 和 RuntimeKeyLoaderFile 的行字符向量或字符串标量字段。两个结构体字段都是必需的。文件路径可以是相对于当前工作目录的路径,也可以是绝对路径。
例如,使用结构体 keyValueStruct 将加密密钥指定为 encrypt.key,将加载程序文件指定为 loader.mexw64。
keyValueStruct.EncryptionKeyFile='encrypt.key'; keyValueStruct.RuntimeKeyLoaderFile='loader.mexw64'
加密密钥文件必须采用以下受支持的格式之一:
二进制 256 位 AES 密钥,文件大小为 32 字节
十六进制编码的 AES 密钥,文件大小为 64 字节
MEX 文件加载程序在运行时检索解密密钥,并且必须是具有以下参量的接口:
prhs[0]- 输入,指定为静态值'get'的字符数组prhs[1]- 输入,指定为 CTF 组件 UUID 的字符数组plhs[0]- 输出,32 字节 UINT8 数字数组或 64 字节十六进制编码字符数组,具体取决于密钥格式
请勿在多个 CTF 之间共享同一个密钥。
示例: 'ExternalEncryptionKey',keyValueStruct
数据类型: struct
生成 Visual Basic 文件 (.bas) 和 Excel 加载项文件 (.xla) 的标志,指定为 'on' 或 'off',或者指定为数值或逻辑 1 (true) 或 0 (false)。值 'on' 等效于 true,值 'off' 等效于 false。因此,可以将此属性的值用作逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。
如果将此属性设置为
'on',则此函数会生成 Excel 加载项 XLA 文件和 Visual Basic BAS 文件,后者包含加载项的 Microsoft Excel Formula Function 接口。如果将此属性设置为
'off',则此函数不会生成 Visual Basic 文件或 Excel 加载项文件。
注意
要生成 Excel 加载项文件 (.xla),您必须启用 Excel 设置中的“信任对 VBA 工程对象模型的访问”。
示例: 'GenerateVisualBasicFile','on'
数据类型: logical
混淆可部署存档的标志,指定为 'on'/1/true 或 'off'/0/false。该值存储为 matlab.lang.onoffSwitchState 类型的 on/off 逻辑值。
如果将此属性设置为 'on',则会对最终用户混淆可部署存档中的文件夹结构和文件名,并且 .m、.mlapp、.p、.mat、MLX 文件、SFX 文件和 MEX 文件中包含的用户代码和数据将被放入存档内的用户包中。另外,所有 .m 文件在打包前会转换为 P 文件。
在运行时,系统会从用户包直接解密和加载 MATLAB 代码和数据,而不是将其提取到文件系统。在加载之前,系统会从用户包中临时提取 MEX 文件。
要在用户包中手动包含其他文件类型,请将每种文件类型以单独的扩展标记的形式添加到文件 中。matlabroot/toolbox/compiler/advanced_package_supported_files.xml
以下内容不受支持:
ver函数调用外部库,例如 DLL
进程外 MATLAB Runtime(用于 MATLAB Data Array 的 C++ 共享库)
进程外 MEX 文件执行(
mexhost、feval、matlab.mex.MexHost)在 R2023b 之前的版本中: v7.3 之外的
.mat文件
启用此选项等效于在指定了 -j 和 -s 的情况下使用 mcc。
如果将此属性设置为 'off',则不会混淆可部署存档。这是默认行为。
示例: 'ObfuscateArchive','on'
数据类型: logical
保存编译文件的输出目录的路径,指定为字符向量或字符串标量。该路径可以是相对于当前工作目录的路径,也可以是绝对路径。
编译文件夹的默认名称是加载项名称后跟 excelAddIn。
示例: 'OutputDir','D:\Documents\MATLAB\work\mymagicexcelAddIn'
数据类型: char | string
自 R2024b 起
机密清单 JSON 文件的路径,该文件指定要嵌入在可部署存档中的密钥,指定为字符向量或字符串标量。该路径可以是相对于当前工作目录的路径,也可以是绝对路径。
如果您的 MATLAB 代码调用 getSecret、getSecretMetadata 或 isSecret 函数,您必须在 JSON 机密清单文件中指定要嵌入可部署存档的密钥。如果您的代码调用 getSecret 并且您未指定 SecretsManifest 选项,则 MATLABCompiler™ 会发出警告,并在名为 的输出文件夹中生成一个模板 JSON 文件。通过在嵌入字段中指定密钥名称来修改此文件。<component_name>_secrets_manifest.json
setSecret 函数不可部署。要将密钥嵌入在可部署存档中,您必须在编译存档之前在 MATLAB 中调用 setSecret。
有关使用密钥进行部署的详细信息,请参阅处理已部署 App 中的敏感信息。
示例: 'SecretsManifest','D:\Documents\MATLAB\work\mycomponent\mycomponent_secrets_manifest.json'
数据类型: char | string
要包含的支持包,指定为以下选项之一:
'autodetect'(默认值)- 依赖关系分析过程会自动检测并包含所需的支持包。'none'- 不包括任何支持包。使用此选项可能会导致运行时错误。字符串标量、字符向量或字符向量元胞数组 - 仅包含指定的支持包。要列出已安装的支持包或特定文件使用的那些支持包,请参阅
compiler.codetools.deployableSupportPackages。
示例: 'SupportPackages',{'Deep Learning Toolbox Converter for TensorFlow Models','Deep Learning Toolbox Model for Places365-GoogLeNet Network'}
数据类型: char | string | cell
控制编译详细程度的标志,指定为 'on' 或 'off',或者指定为数值或逻辑 1 (true) 或 0 (false)。值 'on' 等效于 true,值 'off' 等效于 false。因此,可以将此属性的值用作逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。
如果将此属性设置为
'on',则 MATLAB 命令行窗口会显示进度信息,指示编译过程期间的编译器输出。如果将此属性设置为
'off',则命令行窗口不会显示进度信息。
示例: 'Verbose','on'
数据类型: logical
输出参量
编译结果,以 compiler.build.Results 对象形式返回。Results 对象包含:
编译类型,即
'excelAddIn'以下文件的路径:
GettingStarted.htmlAddInName_AddInVersion.dll(如果启用AddInName.bas'GenerateVisualBasicFile'选项)(如果启用AddInName.xla'GenerateVisualBasicFile'选项)
包含的支持包的列表
编译选项,指定为
ExcelAddInOptions对象必需和可选依赖项的列表,指定为
Dependencies对象
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)