Добрый день
Сегодня я расскажу, как я решал задачу с телефонным справочником.
Проблема
Для удобство пользователей решили разместить телефонный
справочник в виде Excel таблицы. Данные из
учетной системы выгружаются в файл и этот файл необходимо визуализировать.
В начале, т.к. данные
выгружались в файл Excel,
я решил использовать веб чать отображения Excel. Но веб часть не масштабировалась под размер таблицы, нужно
было руками указывать высоту или была прокрутка в веб части (что не совсем удобно).
Посмотрев учетную систему, увидели что можно выгружать данные в html. Кажется, что может быть
легче, положил на страницу веб часть «Редактор контента» или «Просмотр HTML» и все, но оказалось
немного сложнее. В файле HTML находился блок со стилем, который не только делал таблицу
телефонного справочника приятной к просмотру, но и ломал разметку страницы SharePoint (логотип
скрывался, окно для поиска становилось маленьким, на рибоне все становилось
жирным шрифтом и т.д.)
Пример рибона
Пример изменения шрифтов в параметрах веб части
В начале я решил создать файлик CSS в котором
указывал тот блок который «ехал», файл сохранил в библиотеке, на страницу с
телефонным справочником клал еще одну веб часть «Редактор контента» и открывая
ею файлик CSS. Частично
мне это помогло. Результат все равно еще меня не устраивал.
Решение
Потом я вспомнил про замечательную программу PowerShell.
Написал скрипт, который брал файлы, выгруженные из учетной
системы, удалял из них строки не нужного кода, модифицировал и сохранял их в библиотеку SharePoint. А дальше файлы открывал веб частью
«Редактор контента».
Создал задание на сервере, которое запускается с определённым
периодом и выполняет PowerShell скрипт.
Поясню код:
(get-content "C:\export\$file") – путь откуда берутся файлы
| where {$_ -ne ‘ не
нужная строка'} – удаляем не нужную строку, таким образом можно удалять много
строк.
| Foreach-Object {$_ -replace 'table-layout: fixed','table-layout: auto'} – меняем
значения в строке, в моем случае «fixed» на «auto»
| out-file \\server\davWWWroot\Shared%20Documents\$file - конечная библиотека в SharePoint
| out-file \\server\davWWWroot\Shared%20Documents\$file - конечная библиотека в SharePoint
Сам код:
# перечень нужных мне файлов
$files=
"Телефонный справочник_Москва.htm",
"Телефонный справочник_Филиалы.htm"
foreach
($file in $files)
{
(get-content
"C:\export\$file") | where {$_ -ne 'body { background: #ffffff;
margin: 0; font-family: Arial; font-size: 8pt; font-style: normal; }'} | where
{$_ -ne '<BODY STYLE="background: #ffffff; margin: 0; font-family:
Arial; font-size: 8pt; font-style: normal; ">'} | where {$_ -ne
'<BODY STYLE="background: #ffffff; margin: 0; font-family: Calibri;
font-size: 10pt; font-style: normal; font-weight: bold; ">'} | where
{$_ -ne'td { padding: 0px; padding-left: 2px; overflow:hidden; }'} | where {$_
-ne '</BODY>'}| where {$_ -ne 'body { background: #ffffff; margin: 0;
font-family: Calibri; font-size: 10pt; font-style: normal; font-weight: bold;
}'} | where {$_ -ne'body {background: #ffffff; margin: 0; font-family: Calibri;
font-size: 10pt; font-style: normal; font-weight: bold; }'} | Foreach-Object
{$_ -replace 'table-layout: fixed','table-layout: auto' -replace '<TABLE
style="width:0px; height:0px; " CELLSPACING=0>' ,
'<TABLE>'} | out-file "\\server\davWWWroot\Shared%20Documents\$file"
write-host $file "- загружен"
}
Комментариев нет:
Отправить комментарий