我需要从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是否使用某些运行时环境?
发布于 2014-04-30 14:24:43
没有Excel的“运行时”,您可以在没有获得适当的Excel许可证的情况下使用Excel (并在计算机上安装Excel)。如果您试图在有多个用户的Server上执行此操作,则还需要考虑使用特殊的许可(因为单个Excel许可证不太可能涵盖多个用户)。
您可能会考虑使用办公室OpenXML SDK作为在Excel文件中执行一些常见操作的方法,比如文档化的这里。因为它是一个.NET库,所以您可以在PowerShell中使用它。
发布于 2014-04-30 13:40:19
警告: Excel已退役。
没有运行时,比如访问。
有观众,如果有什么帮助的话。
概述 使用Excel,即使没有安装Excel,也可以打开、查看和打印Excel工作簿。还可以将数据从Excel复制到其他程序。但是,您不能编辑数据、保存工作簿或创建新的工作簿。
发布于 2015-07-27 11:12:20
可以使用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
https://stackoverflow.com/questions/23389582
复制相似问题