基本上,我有大约50个excels工作表的信息要处理。每个工作表都有一个power查询脚本来清理信息。我需要以任何可能的方式自动化这个过程。
我已经下载了power query SDK,在visual studio中我运行了.pq文件,它可以工作,但是我找不到一种方法将查询结果写到文件中(或者直接插入到sql server表中)。
我尝试过this approach,它很有效(在一本高级BI书上使用R,通过write.table命令将其导出到一个文件中)。问题是我不知道如何在不打开书的情况下触发刷新。(这样我就可以将其添加到作业列表中)。
power BI中的每X次刷新选项在这里没有用,我需要在部分sql作业完成后触发刷新。所以我需要通过某种类型的API来触发。
欢迎任何类型的解决方案。
发布于 2021-08-17 07:36:37
我有一个类似的任务,我正在使用Powershell脚本打开excel文件,刷新所有工作表,然后将每个工作表导出为CSV。然后,只需按您喜欢的方式安排作业即可。
#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()
https://stackoverflow.com/questions/68805072
复制相似问题