我想打开一个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
然而,这会返回错误“找不到构造函数” 实际上是不是通过Microsoft.Office.Interop.Excel.Application接口的方式?我想知道它如何在this场景中实例化。
答案 0 :(得分:7)
您需要将其作为ComObject打开。
$FilePath
在该示例中,您需要将curl -F file=@myfile.csv 'https://myserver/api/import/data_save.html'
定义为您尝试打开的Excel文件的完整路径。
答案 1 :(得分:4)
我找到了一个很好的代码片段,它也运行了一个宏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")
答案 2 :(得分:0)
如果仅将路径添加到变量$FilePath
中而不带引号,它将自动打开:
$FilePath = C:\temp\tempfile.csv
唯一的问题是,如果您没有在Excel上正确关闭文件,则下次运行该文件时,它将以READ ONLY
的形式打开,您必须在TASK Manager中终止该进程。
根据需求和编码,有时简单的方法效果最好。
答案 3 :(得分:-1)
让Windows为您处理最困难的部分:
explorer.exe $文件名
简单的:)