缺少 Office 套件的 ComObject Excel.Application

4


我需要从Powershell中读取Excel文件。
我正在使用下面这个对象:

$objExcel=New-Object -ComObject Excel.Application

在安装了Office的计算机上,它可以正常运行。但如果没有安装Office,将会出现以下错误:
Retrieving the COM class factory for component with CLSID {} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

Office是否有可用的运行时环境?

3个回答

4
没有可用的Excel“运行时”可以在未获得Excel适当许可(并安装Excel在机器上)的情况下使用。如果您正在尝试在具有多个用户的服务器操作系统上执行此操作,则还需要考虑特殊许可证(因为单个Excel许可证很可能无法覆盖多个用户)。
您可以考虑使用Office的OpenXML SDK作为在Excel文件中执行某些常见操作的方法,如此处所述。由于它是一个.NET库,因此您将能够从PowerShell中使用它。

1

警告:Excel Viewer已经停用。

与Access不同,没有运行时。

如果有需要,可以使用查看器。

概述

使用Excel Viewer,即使您没有安装Excel,也可以打开、查看和打印Excel工作簿。您还可以将数据从Excel Viewer复制到另一个程序中。但是,您无法编辑数据、保存工作簿或创建新的工作簿。


1

可以使用Active X数据对象(ADO)代替COM,例如:

$strFileName = "C:\Data\scriptingGuys\Servers.xls"
$strSheetName = 'ServerList$'
$strProvider = "Provider=Microsoft.Jet.OLEDB.4.0"
$strDataSource = "Data Source = $strFileName"
$strExtend = "Extended Properties=Excel 8.0"
$strQuery = "Select * from [$strSheetName]"

$objConn = New-Object System.Data.OleDb.OleDbConnection("$strProvider;$strDataSource;$strExtend")
$sqlCommand = New-Object System.Data.OleDb.OleDbCommand($strQuery)
$sqlCommand.Connection = $objConn
$objConn.open()

$DataReader = $sqlCommand.ExecuteReader()

While($DataReader.read())
{
 $ComputerName = $DataReader[0].Tostring() 
 "Querying $computerName ..."
 Get-WmiObject -Class Win32_Bios -computername $ComputerName
}  
$dataReader.close()
$objConn.close()

来源:http://blogs.technet.com/b/heyscriptingguy/archive/2008/09/11/how-can-i-read-from-excel-without-using-excel.aspx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接