使用powershell进行excel创建

时间:2015-07-28 13:04:50

标签: excel powershell

我尝试使用以下代码在powershell脚本中创建一个excel文件:

$xl = New-Object -ComObject "Excel.Application"
$xl.Visible = $false
$xl.DisplayAlerts = $false
$wb = $xl.Workbooks.Open($scriptPath + "\..\..\NeededTools\ExploitationApplication.xlsm")
$global:ws = $wb.sheets.Item(3)

我面对这个例外:

  

New-Object:使用CLSID检索组件的COM类工厂   {00000000-0000-0000-0000-000000000000}由于以下原因而失败   错误:80040154未注册类(HRESULT异常:   0x80040154(REGDB_E_CLASSNOTREG))。

有人有关于此异常的信息或用于正确生成excel文件的示例吗? 是否有可能出现此错误,因为我在这台服务器上没有excel?

3 个答案:

答案 0 :(得分:0)

您没有安装Excel

答案 1 :(得分:0)

从我的公司 IT (Office16) 更新 Windows/Office 后,我在 C# 应用程序的桌面中遇到了同样的问题。它工作了 5 年没有任何问题。

我创建了一个 Powershell 脚本,用于启动 excel 以更新一个在我的笔记本电脑上运行良好但在我的桌面上仍然无法运行的表格。

经过长时间搜索并按照此链接 (https://social.technet.microsoft.com/Forums/lync/en-US/05a1635d-142c-4866-8455-1341280967fd/windows-explorer-preview-of-office-2016-files-does-not-work?forum=Office2016setupdeploy) 中的指示进行操作。

我发现 Windows 注册表中缺少某些信息。

详细说明:比较笔记本电脑上的注册表项“Computer\HKEY_CLASSES_ROOT\WOW6432Node\CLSID{00024500-0000-0000-C000-000000000046}”,在我的台式机中,我只有一个键“InprocServer52”而不是“InprocServer52” .

我在“Computer\HKEY_CLASSES_ROOT\WOW6432Node\CLSID{00024500-0000-0000-C000-000000000046}”下添加了以下关键文件夹和值:

"LocalServer32" => default: "C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE /automation"
"ProgID" => default: "Excel.Application.16"
"VersionIndependentProgID" => default: "Excel.Application"
"InprocHandler32" => default: "ole32.dll"

注意:“LocalServer32”足以运行脚本

Registry key structure

答案 2 :(得分:-1)

您没有安装Excel。或者,您必须修理它。