没有Office套件的ComObject Excel.Application

我需要从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的运行时环境使用?

Excel没有“运行时”,您可以在没有获得适当的Excel许可的情况下使用Excel(并在机器上安装Excel)。 如果您尝试在具有多个用户的服务器操作系统上执行此操作,则需要考虑特殊许可(因为单个Excel许可证不会覆盖多个用户)。

您可以考虑使用OpenXML SDK for Office作为在Excel文件中执行一些常见操作的方式,如此处所述。 因为它是一个.NET库,所以你可以在PowerShell中使用它。

没有运行时,像Access。

有一个观众,如果这是任何帮助。

概观

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

可以使用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