簡體   English   中英

沒有Office套件的ComObject Excel.Application

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM