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。当有新数据时,点击全部刷新,就完成了。

+0

此报告需要每天通过电子邮件发送给不同的客户。我不希望用户浪费时间创建工作表和发送电子邮件。顾客希望床单能够被郊区隔开,并且能够满足所有需求。不幸的是没有透视表。谢谢 – user3618691