首页 > 解决方案 > 通过 PowerShell 将 .odc 文件导入 Excel

问题描述

我在 excel 中创建了一个 PowerQuery,它从 API 获取数据、修改数据并将其呈现在表格中。我已将 PowerQuery 导出到一个.odc名为Query - Singles - Template.odc.

我还有一个 PowerShell 脚本,它可以在需要的地方动态创建 excel,以及获取.odc模板、替换 API URL 并.odc为每个创建的 excel 创建一个新的。

我尝试主要将其导入.odc到创建的 excel 中,并且它按预期工作。但是我找不到.odc通过 PowerShell 脚本将这些文件导入 excel 的方法。

PowerShell 脚本:

$Excel = New-Object -ComObject excel.application
$Excel.DisplayAlerts = $False
$Excel.visible = $False
$WorkBook = $Excel.Workbooks.Add()
$WorkSheet = $WorkBook.worksheets.item(1)
$WorkSheet.name = "data"

((Get-Content -path "$Path\Query - Singles - Template.odc" -Raw) -replace "TempSetCode",$Set) | Set-Content -Path  "$Path\$Set\Query - Singles - $Set.odc"

### Code to import .odc file into excel

$WorkBook.SaveAs("$SetPath\$Set-main-$ReleaseDate.xlsx", 51) 
$WorkBook.Close($True)

$Excel.Quit()
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($WorkSheet)
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($WorkBook)
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($Excel)
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()

标签: excelpowershell

解决方案


我解决了这个问题,不是通过将.odc文件导入excel,而是通过将.odc文件打开到excel然后保存该文件。

$InFile = Get-Item("$Path\$Set\Query - Singles - $Set.odc")

$Excel = New-Object -ComObject excel.application
$Excel.DisplayAlerts = $False
$Excel.visible = $False
$WorkBook = $Excel.Workbooks.Open($InFile.FullName)
$WorkSheet = $WorkBook.worksheets.item(1)
$WorkSheet.name = "data"

$WorkBook.RefreshAll()

$WorkBook.SaveAs("$SetPath\$Set-main-$ReleaseDate.xlsx", 51) 
$WorkBook.Close($True)

$Excel.Quit()
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($WorkSheet)
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($WorkBook)
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($Excel)
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()

推荐阅读