首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过.odc将PowerShell文件导入Excel

通过.odc将PowerShell文件导入Excel
EN

Stack Overflow用户
提问于 2020-07-24 12:39:18
回答 1查看 247关注 0票数 1

我在excel中创建了一个PowerQuery,它从API中获取数据,对其进行修改,并将其显示在表中。我已经将PowerQuery导出到一个名为Query - Singles - Template.odc.odc文件中。

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

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

PowerShell脚本:

代码语言:javascript
运行
复制
$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()
EN

回答 1

Stack Overflow用户

发布于 2020-07-24 13:06:03

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

代码语言:javascript
运行
复制
$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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63073756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档