Powershell – выводит три оператора выбора на три листа EXCEL

У меня есть код, который может считывать вывод инструкции выбора SQL в рабочий лист и сохранять его.

Теперь я пытаюсь создать три оператора select и экспортировать их в три листа в EXCEL.

К сожалению, код извлекает только выходные данные из первого оператора SELECT и сохраняет его в первом сводке EXCEL

# SQL string with multiple SELECT statements $SQL = "SELECT Statement 1 SELECT Statement 2 SELECT Statement 3" # Create Excel file to save the data if (!(Test-Path -path "$DirectoryToSave")) #create it if not existing { New-Item "$DirectoryToSave" -type directory | out-null } $excel = New-Object -Com Excel.Application $excel.Visible = $True $wb = $Excel.Workbooks.Add() $currentWorksheet=1 if ($currentWorksheet -lt 4){ $ws = $wb.Worksheets.Item($currentWorksheet) } else { $ws = $wb.Worksheets.Add() } $currentWorksheet += 1 $qt = $ws.QueryTables.Add("ODBC;DSN=$DSN;UID=$username;PWD=$password", $ws.Range("A1"), $SQL) if ($qt.Refresh()){ $ws.Activate() $ws.Select() $excel.Rows.Item(1).HorizontalAlignment = $xlCenter $excel.Rows.Item(1).VerticalAlignment = $xlTop $excel.Rows.Item("1:1").Font.Name = "Calibri" $excel.Rows.Item("1:1").Font.Size = 11 $excel.Rows.Item("1:1").Font.Bold = $true $Excel.Columns.Item(1).Font.Bold = $true } $filename = "D:\Script\Database_stuff.xlsx" if (test-path $filename ) { rm $filename } $wb.SaveAs($filename, $xlOpenXMLWorkbook) #save as an XML Workbook (xslx) $wb.Saved = $True #flag it as being saved $wb.Close() #close the document $Excel.Quit() #and the instance of Excel $wb = $Null #set all variables that point to Excel objects to null $ws = $Null #makes sure Excel deflates $Excel=$Null #let the air out 

Как мне решить Google? Спасибо!

ОБНОВИТЬ

Решение для краткосрочных

 SQL1 = "SELECT Statement 1" SQL2 = "SELECT Statement 2" SQL3 = "Select Statement 3" if (!(Test-Path -path "$DirectoryToSave")) #create it if not existing { New-Item "$DirectoryToSave" -type directory | out-null } $excel = New-Object -Com Excel.Application $excel.Visible = $True $wb = $Excel.Workbooks.Add() $currentWorksheet=1 $ws = $wb.Worksheets.Item(1) $ws.name = "GUP Download Activity" $qt = $ws.QueryTables.Add("ODBC;DSN=$DSN;UID=$username;PWD=$password", $ws.Range("A1"), $SQL1) if ($qt.Refresh()){ $ws.Activate() $ws.Select() $excel.Rows.Item(1).HorizontalAlignment = $xlCenter $excel.Rows.Item(1).VerticalAlignment = $xlTop $excel.Rows.Item("1:1").Font.Name = "Calibri" $excel.Rows.Item("1:1").Font.Size = 11 $excel.Rows.Item("1:1").Font.Bold = $true } $ws = $wb.Worksheets.Item(2) $ws.name = "Distinct" $qt = $ws.QueryTables.Add("ODBC;DSN=$DSN;UID=$username;PWD=$password", $ws.Range("A1"), $SQL2) if ($qt.Refresh()){ $ws.Activate() $ws.Select() $excel.Rows.Item(1).HorizontalAlignment = $xlCenter $excel.Rows.Item(1).VerticalAlignment = $xlTop $excel.Rows.Item("1:1").Font.Name = "Calibri" $excel.Rows.Item("1:1").Font.Size = 11 $excel.Rows.Item("1:1").Font.Bold = $true } $ws = $wb.Worksheets.Item(3) $ws.name = "Computers in GUP Downloads" $qt = $ws.QueryTables.Add("ODBC;DSN=$DSN;UID=$username;PWD=$password", $ws.Range("A1"), $SQL3) if ($qt.Refresh()){ $ws.Activate() $ws.Select() $excel.Rows.Item(1).HorizontalAlignment = $xlCenter $excel.Rows.Item(1).VerticalAlignment = $xlTop $excel.Rows.Item("1:1").Font.Name = "Calibri" $excel.Rows.Item("1:1").Font.Size = 11 $excel.Rows.Item("1:1").Font.Bold = $true } $filename = "D:\Script\Daily_GUP_Report.xlsx" if (test-path $filename ) { rm $filename } $wb.SaveAs($filename, $xlOpenXMLWorkbook) #save as an XML Workbook (xslx) $wb.Saved = $True #flag it as being saved $wb.Close() #close the document $Excel.Quit() #and the instance of Excel $wb = $Null #set all variables that point to Excel objects to null $ws = $Null #makes sure Excel deflates $Excel=$Null #let the air out 

Если вы не замените это:

 $SQL = "SELECT Statement 1 SELECT Statement 2 SELECT Statement 3" 

С этим?:

 $SQL = "SELECT Statement 1 UNION ALL SELECT Statement 2 UNION ALL SELECT Statement 3" 

Однако я не понимаю проблему с тремя листами? Почему бы не простой цикл или Sub, который примет оператор и рабочий лист в качестве параметров?

Решение для краткосрочных

 SQL1 = "SELECT Statement 1" SQL2 = "SELECT Statement 2" SQL3 = "Select Statement 3" if (!(Test-Path -path "$DirectoryToSave")) #create it if not existing { New-Item "$DirectoryToSave" -type directory | out-null } $excel = New-Object -Com Excel.Application $excel.Visible = $True $wb = $Excel.Workbooks.Add() $currentWorksheet=1 $ws = $wb.Worksheets.Item(1) $ws.name = "GUP Download Activity" $qt = $ws.QueryTables.Add("ODBC;DSN=$DSN;UID=$username;PWD=$password", $ws.Range("A1"), $SQL1) if ($qt.Refresh()){ $ws.Activate() $ws.Select() $excel.Rows.Item(1).HorizontalAlignment = $xlCenter $excel.Rows.Item(1).VerticalAlignment = $xlTop $excel.Rows.Item("1:1").Font.Name = "Calibri" $excel.Rows.Item("1:1").Font.Size = 11 $excel.Rows.Item("1:1").Font.Bold = $true } $ws = $wb.Worksheets.Item(2) $ws.name = "Distinct" $qt = $ws.QueryTables.Add("ODBC;DSN=$DSN;UID=$username;PWD=$password", $ws.Range("A1"), $SQL2) if ($qt.Refresh()){ $ws.Activate() $ws.Select() $excel.Rows.Item(1).HorizontalAlignment = $xlCenter $excel.Rows.Item(1).VerticalAlignment = $xlTop $excel.Rows.Item("1:1").Font.Name = "Calibri" $excel.Rows.Item("1:1").Font.Size = 11 $excel.Rows.Item("1:1").Font.Bold = $true } $ws = $wb.Worksheets.Item(3) $ws.name = "Computers in GUP Downloads" $qt = $ws.QueryTables.Add("ODBC;DSN=$DSN;UID=$username;PWD=$password", $ws.Range("A1"), $SQL3) if ($qt.Refresh()){ $ws.Activate() $ws.Select() $excel.Rows.Item(1).HorizontalAlignment = $xlCenter $excel.Rows.Item(1).VerticalAlignment = $xlTop $excel.Rows.Item("1:1").Font.Name = "Calibri" $excel.Rows.Item("1:1").Font.Size = 11 $excel.Rows.Item("1:1").Font.Bold = $true } $filename = "D:\Script\Daily_GUP_Report.xlsx" if (test-path $filename ) { rm $filename } $wb.SaveAs($filename, $xlOpenXMLWorkbook) #save as an XML Workbook (xslx) $wb.Saved = $True #flag it as being saved $wb.Close() #close the document $Excel.Quit() #and the instance of Excel $wb = $Null #set all variables that point to Excel objects to null $ws = $Null #makes sure Excel deflates $Excel=$Null #let the air out 
  • Как получить дату и время в Excel 2010 при копировании в ячейки с SQL Server?
  • SSIS - загрузка Excel удаляет символ процента
  • Как загрузить столбец с несколькими значениями в отдельные строки в таблицу
  • Использовать параметр несколько раз в sql-запросе в электронной таблице Excel
  • MS Access 2010 SQL Select В расчетный столбец
  • Определение отношений с Access SQL в сочетании с инструкцией IN
  • Лучший способ выбора 8k + строк из таблицы
  • Подключение к Excel с помощью Ado
  • Как обновить все записи в таблице, которая не имеет нуля в начале SQL Server?
  • Сохранение результатов с заголовками в Sql Server Management Studio
  • Как я могу группировать записи и выполнять вычисления между первой и последней записями в каждой группе с использованием Oracle SQL?
  • Interesting Posts

    Как сделать среднюю формулу только количество чисел больше нуля?

    Использование COUNTIF в сочетании с ISNA для идентификации записей # N / A в диапазоне ячеек Excel

    Индекс совпадений в ошибке VBA

    Как удалить все после специального символа в каждом столбце в документе Excel и разделить два слова из одной ячейки на две отдельные ячейки?

    Что-то не так с ярлыком с помощью Macro Excel

    Потеря объединенной границы ячеек при редактировании файла Excel с помощью openpyxl

    Как скопировать текст из столбца А в столбец B в соответствии с размером шрифта

    Держите Excel от даты преобразования при открытии / сохранении CSV

    Как получить значение float из excel с помощью openpyxl в python?

    Удалить массивы строк, которые не содержат значений в ячейках I1 J1 K1

    Формула Vlookup не работает

    Установка объекта диапазона с определенного листа

    VBA копирует диаграмму Excel в Word, так как изображение меняет размер диаграммы

    Макрос Excel заполняет ячейку даты, но не соответствует реальной ячейке даты

    Может ли кто-нибудь направить меня к дополнительной информации о выборе «Действия» в меню надстройки Excel Options?

    Давайте будем гением компьютера.