[英]ComObject Excel.Application without Office Suite
我需要從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許可證不會覆蓋多個用戶)。
你可能會考慮使用的OpenXML SDK的辦公室像記錄的Excel文件中執行的一些常規操作的方式在這里 。 因為它是一個.NET庫,所以您可以在PowerShell中使用它。
沒有運行時,比如Access。
有一個觀眾,如果有任何幫助。
概觀
使用Excel Viewer,即使未安裝Excel,也可以打開,查看和打印Excel工作簿。 您還可以將Excel Viewer中的數據復制到另一個程序。 但是,您無法編輯數據,保存工作簿或創建新工作簿。
而不是COM,可以使用Active X數據對象(ADO),例如
$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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.