首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将M( power query )查询结果导出到csv

将M( power query )查询结果导出到csv
EN

Stack Overflow用户
提问于 2021-08-16 15:01:05
回答 1查看 696关注 0票数 0

基本上,我有大约50个excels工作表的信息要处理。每个工作表都有一个power查询脚本来清理信息。我需要以任何可能的方式自动化这个过程。

我已经下载了power query SDK,在visual studio中我运行了.pq文件,它可以工作,但是我找不到一种方法将查询结果写到文件中(或者直接插入到sql server表中)。

我尝试过this approach,它很有效(在一本高级BI书上使用R,通过write.table命令将其导出到一个文件中)。问题是我不知道如何在不打开书的情况下触发刷新。(这样我就可以将其添加到作业列表中)。

power BI中的每X次刷新选项在这里没有用,我需要在部分sql作业完成后触发刷新。所以我需要通过某种类型的API来触发。

欢迎任何类型的解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-17 07:36:37

我有一个类似的任务,我正在使用Powershell脚本打开excel文件,刷新所有工作表,然后将每个工作表导出为CSV。然后,只需按您喜欢的方式安排作业即可。

代码语言:javascript
运行
复制
#Open XLSX Processor
$E = new-object -comobject excel.application
$E.Visible = $false
$E.DisplayAlerts = $true
$Workbook = $E.Workbooks.Open($File_XLSX)  

#Refresh all Queries
foreach ($conn in $Workbook.Connections){
  try{ $conn.OLEDBConnection.BackgroundQuery = $false } catch {}
  try{$conn.ODBCConnection.BackgroundQuery = $false } catch {}
}
$Workbook.RefreshAll()
$E.CalculateUntilAsyncQueriesDone()

# Export XLSX to CSV 
foreach ($Worksheet in $Workbook.Worksheets)
{
    $n = $File_XLSX + "_" + $Worksheet.Name
    $Worksheet.SaveAs($csvLoc + $n + ".csv", 6)
}
$Workbook.Close($false)

#Closing Excel
Start-Sleep 1
# Cleanup COM
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($Worksheet)|out-null
$Worksheet=$null
Start-Sleep 1
# Cleanup COM
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($Workbook)|out-null
$Workbook=$null
# Close Excel
$E.quit()
Start-Sleep 1
# Cleanup COM
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($E)|out-null
$E=$null
[GC]::Collect()
[GC]::WaitForPendingFinalizers()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68805072

复制
相关文章

相似问题

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