Уважаемые коллеги-программисты,
Я изо всех сил старался найти решение этой проблемы, но в конце концов решил создать учетную запись stackoverflow и попросить о помощи.
Что яя пытаюсь сделать:
1. Получить входные данные из нескольких источников.
2. Поместите эти данные в таблицы и отформатируйте их как «Сетка Таблица 5 Dark Accent 5».
3. Выведите этитаблицы в электронном письме.
С какой проблемой я сталкиваюсь:
- Так как количество столбцов и строк меняется каждый раз, когда я хочу генерировать электронное письмо, кажется, что невозможно получить "Таблица таблицы 5Dark Accent 5 ", который будет применяться ко всем таблицам и при этом выводиться в виде электронного письма.
Что я сделал до сих пор:
1. Я пытался применить css в целомк таблицам, которые работали бы, если бы я знал все столбцы и строки заранее, чего, к сожалению, я не знаю.Я не смог реализовать html-теги TR, но только TH и TD.
2. Я также пытался применить css к каждому фрагменту html (= таблица), используя параметр -CSSUri, но это, по-видимому, недопустимо вкомбинация с параметром фрагмента.
CODE
Код, приведенный ниже, представляет собой пример результата, но вместо простого html css, примененного в начале, следует применять «Сетка Таблица 5 Dark Accent 5»во все таблицы.
Скопируйте и вставьте приведенные ниже фрагменты кода по порядку в IDE Powershell и запустите их целиком.Письмо придет.Вместо общего синего цвета «Таблица 5 Темный Акцент 5» следует применять ко всем таблицам.
Применение универсального стиля ко всем таблицам (вместо этого следует использовать «Сетка Таблица 5 Темный Акцент 5»).):
function table_style {
$style = "<head><style>BODY{font-size: 12pt;}";
$style += "TABLE{border: 3px solid black; border-collapse: collapse; overflow-x:auto;}";
$style += "TH{border: 2px solid black; background: #4472C4; padding: 4px; }";
$style += "TD{border: 2px solid black; padding: 7px; }";
$style += "</style></head>";
return $style;
}
Создание первой таблицы (будет извлекать данные из API):
function Table1_creation {
$Table = New-Object System.Data.DataTable
$col1 = New-Object system.Data.DataColumn Table1_Column1,([string]);
$col2 = New-Object system.Data.DataColumn Table1_Column2,([string]);
$col3 = New-Object system.Data.DataColumn Table1_Column3,([string]);
$Table.columns.add($col1);
$Table.columns.add($col2);
$Table.columns.add($col3);
$Tablerows = "Table1_Column1_Row2","Table1_Column1_Row3","Table1_Column1_Row4","Table1_Column1_Row5","Table1_Column1_Row6";
foreach ($Row in $Tablerows) {
$row = $Row;
$Table.rows.add($row) | Out-Null;
}
return $Table | Select Table1_Column1, Table1_Column2, Table1_Column3 | ConvertTo-Html -Fragment ;
}
Создание второй таблицы (будетизвлечение данных из API):
function Table2_creation {
$Table = New-Object System.Data.DataTable
$col1 = New-Object system.Data.DataColumn Table2_Column1,([string]);
$col2 = New-Object system.Data.DataColumn Tabl2_Column2,([string]);
$Table.columns.add($col1);
$Table.columns.add($col2);
$Tablerows = "Table2_Column1_Row2","Table2_Column1_Row3","Table2_Column1_Row4";
foreach ($Row in $Tablerows) {
$row = $Row;
$Table.rows.add($row) | Out-Null;
}
return $Table | Select Table2_Column1, Tabl2_Column2 | ConvertTo-Html -Fragment;
}
Создание третьей таблицы (получение данных из API):
function Table3_creation {
$Table = New-Object System.Data.DataTable
$col1 = New-Object system.Data.DataColumn Table3_Column1,([string]);
$col2 = New-Object system.Data.DataColumn Table3_Column2,([string]);
$col3 = New-Object system.Data.DataColumn Table3_Column3,([string]);
$col4 = New-Object system.Data.DataColumn Table3_Column4,([string]);
$col5 = New-Object system.Data.DataColumn Table3_Column5,([string]);
$col6 = New-Object system.Data.DataColumn Table3_Column6,([string]);
$Table.columns.add($col1);
$Table.columns.add($col2);
$Table.columns.add($col3);
$Table.columns.add($col4);
$Table.columns.add($col5);
$Table.columns.add($col6);
$Tablerows = "Table3_Column1_Row2","Table3_Column1_Row3";
foreach ($Row in $Tablerows) {
$row = $Row;
$Table.rows.add($row) | Out-Null;
}
return $Table | Select Table3_Column1, Table3_Column2, Table3_Column3, Table3_Column4, Table3_Column5, Table3_Column6 | ConvertTo-Html -Fragment;
}
Создание xthтаблица с неизвестными столбцами и строками с данными из API:
#Create tables
Создание всех таблиц и добавление заголовков:
function generate_Table1 {
$html = insert_heading "THIS IS TABLE 1";
$html += Table1_creation;
return $html;
}
function generate_Table2 {
$html = insert_heading "THIS IS TABLE 2";
$html += Table2_creation;
return $html;
}
function generate_Table3 {
$html = insert_heading "THIS IS TABLE 3";
$html += Table3_creation;
return $html;
}
Генерация электронной почты:
function generate_Email {
$mail = $Outlook.CreateItem(0);
$emailHTML = $(table_style);
$emailHTML += if (!$tables) {
generate_Table1;
generate_Table2;
generate_Table3;
} else {
Write-Host -ForegroundColor Red "Error...";
}
Write-Host -ForegroundColor Green "Generating Email...";
$mail.HTMLBody = "$emailHTML";
$inspector = $mail.GetInspector;
$inspector.Display();
}
generate_Email;