如何从powershell打开excel工作簿进行自动化

ryoqjall  于 2023-06-25  发布在  Shell
关注(0)|答案(4)|浏览(190)

我想打开一个excel工作簿并读出数据,进行其他类型的操作等我知道我必须添加一个程序集引用:

[Reflection.Assembly]::LoadFile("C:\Program Files\Microsoft Office\Office16\ADDINS\Microsoft Power Query for Excel Integrated\bin\Microsoft.Office.Interop.Excel.dll")

然后我需要示例化一个Application对象。

$workbook = New-Object -TypeName Microsoft.Office.Interop.Excel.Application

然而,这将返回一个错误“A constructor was not found”难道Microsoft.Office.Interop.Excel.Application不是一个接口吗?我想知道如何在this场景中示例化它。

von4xj4u

von4xj4u1#

您需要将其作为ComObject打开。

$Excel = New-Object -ComObject Excel.Application
$Workbook = $Excel.Workbooks.Open($FilePath)

在该示例中,您需要将$FilePath定义为您试图打开的Excel文件的完整路径。

qyzbxkaa

qyzbxkaa2#

我发现了一个很好的代码片段,它也运行一个宏here

# start Excel
$excel = New-Object -comobject Excel.Application

#open file
$FilePath = 'C:\temp\Book1.xlsm'
$workbook = $excel.Workbooks.Open($FilePath)

#make it visible (just to check what is happening)
$excel.Visible = $true

#access the Application object and run a macro
$app = $excel.Application
$app.Run("Macro1")
xwbd5t1u

xwbd5t1u3#

让Windows为您处理最困难的部分:
explorer.exe $filename
Simples:)

tjjdgumg

tjjdgumg4#

如果你只是将路径添加到变量$FilePath中,不加引号,它将自动打开:

$FilePath = C:\temp\tempfile.csv

唯一的问题是,如果您没有在Excel上正确关闭该文件,那么下次运行它时,它将以READ ONLY的形式打开,并且您必须在任务管理器上杀死该进程。
根据需要和编码,有时简单的工作效果最好。

相关问题