193.49K
Категория: ПрограммированиеПрограммирование

Надстройка Excel

1.

Надстройка Excel

2.

Установка

3.

Подключение к службе управления

4.

Редактор сценариев

5.

Параметры запуска

6.

Сценарий отчета Excel
• Преамбула
• Параметры отчета
• Параметры таблицы
• Заголовок таблицы
• Функции необходимые для отчета
• Построение таблицы
• Форматирование таблицы

7.

Входные параметры отчета
ReportParams.StartDt = ReportParams.StartDt.AlignToDay();
ReportParams.EndDt = ReportParams.EndDt.AlignToDay();
DayIntervalData interval = new DayIntervalData() {
StartDt = ReportParams.StartDt,
EndDt = ReportParams.EndDt};
MeterPoint[] meterPoints = ReportParams
.ClassifierNodes
.SelectMany(x => x.GetAllChildrenOfClass(MeterPoint.GetClassInfo()))
.OfType<MeterPoint>().Distinct().ToArray();

8.

Preload Manager
• для ТУ
using (PreloadManager.Current.RegisterCache(() => new
MeterPointGetEnergyValueCache(mpList,prms,dInterval2)))
• для ПУ
using (PreloadManager.Current.RegisterCache(() => new
DataSourceReceiveDataBatchCache(emList,prms,dInterval2)))
• для событий
//eventSources - это массив MeterPoint или ElectricityMeter
using (PreloadEventsManager.Preload(() => new EventsCache(eventSources, interval)))

9.

Получение данных по точке учёта
var sourceParameters = new Dictionary<TariffZoneBasedParameter, string>
{
{TariffZoneBasedParameter.Instances.EnergyActiveForwardTotalFixDay, "A+, кВт*ч" },
{TariffZoneBasedParameter.Instances.EnergyActiveReverseTotalFixDay, "A-, кВт*ч"},
{TariffZoneBasedParameter.Instances.EnergyReactiveForwardTotalFixDay, "R+, кВАр*ч"},
{TariffZoneBasedParameter.Instances.EnergyReactiveReverseTotalFixDay, "R-, кВАр*ч"},
};
var data = meterPoint.GetMeterPointFinalData(parametr, interval);
var startValue = data.FirstOrDefault(x => x.ValueDt != null && x.ValueDt == startDate);
var stopValue = data.FirstOrDefault(x => x.ValueDt != null && x.ValueDt == stopDate);

10.

Форматирование Excel
• Установить рамки вокруг всех ячеек
var dataCells = sheet.Cells.GetSubrangeAbsolute(dataRow, 0, currentRow - 1, 8);
dataCells.SetBorder();
dataCells.SetBorders(MultipleBorders.All, Color.Black, LineStyle.Thin);
• Разрешить перенос по словам
dataCells.Style.WrapText = true;
• В заголовке таблицы установить жирный шрифт и цвет ячеек:
var header = sheet.Cells.GetSubrangeAbsolute(startRow, 0, startRow + 1, 8);
header.Style.Font.Weight = ExcelFont.BoldWeight;
header.Style.FillPattern.SetSolid(Color.FromArgb(0, 189, 215, 238));

11.

Полезные ссылки
1. Подробный справочник API и пошаговое руководство по
разработке сценариев отчётов с примерами доступны по
адресу:
http://psdn.sicon.ru
2. Документация от Microsoft:
https://learn.microsoft.com/ru-Ru/dotnet/api/
3. Русскоязычный портал по обучению C#
https://metanit.com/sharp/tutorial/
English     Русский Правила