Powershell SQL查询到Excel
问题描述:
我是Powershell的新手,我需要一些帮助。我有一个来自SQL的查询需要创建一个基于郊区的多个工作表的Excel,最后一个表格需要被称为所有Suburbs并具有所有数据。 到目前为止,我一直在创建多个查询,一旦保存文件,我使用另一个脚本将多个工作簿转换为一个excel并发送给它。自郊区每周更换以来,它变得非常耗时。 谢谢Powershell SQL查询到Excel
> # ADELAIDE
>
> $query = "
> SELECT
> Market
> ,Customer ID
> ,Suburb
> ,Product
> From A few tables
> Group By
> Market
> ,Customer ID
> ,Suburb
> ,Product
> "
> $csvFilePath = "c:\Scripts\CBA\CSV\Adelaide.txt"
> $excelFilePath = "c:\scripts\CBA\Excel\Adelaide.xls"
> $instanceName = "TestServer"
> $QueryDB = 'Test_Database'
> $Username = 'buggsbunny'
> $Password = 'looneytunes'
> $results = Invoke-Sqlcmd -Query $query -ServerInstance $instanceName -Database $QueryDB -Username $Username -Password $Password
> $results | Export-Csv -delimiter "`t" $csvFilePath -NoTypeInformation| % {$_.Replace('"','')}
> $excel = New-Object -ComObject excel.application
> $excel.visible = $False
> $excel.displayalerts=$False
> $workbook = $excel.Workbooks.Open($csvFilePath)
> $workSheet = $workbook.worksheets.Item(1)
> $resize = $workSheet.UsedRange
> $resize.EntireColumn.AutoFit() | Out-Null
> $xlExcel8 = 51
> $workbook.SaveAs($excelFilePath,$xlExcel8)
> $workbook.Close()
> $excel.quit()
> $excel = $null
答
为什么重复在不同的郊区片和“所有郊区”表中的数据?只需为所有郊区创建一张工作表,然后使用公式或数据透视表来过滤各个郊区的数据。你甚至不需要Powershell来做到这一点。 Excel可以访问SQL数据,您只需点击一个按钮即可刷新。
如果您坚持要将郊区拆分为单个工作表,请考虑为每个工作表创建Power Queries。当有新数据时,点击全部刷新,就完成了。
此报告需要每天通过电子邮件发送给不同的客户。我不希望用户浪费时间创建工作表和发送电子邮件。顾客希望床单能够被郊区隔开,并且能够满足所有需求。不幸的是没有透视表。谢谢 – user3618691