Пример #1
0
        private static void UnclosedProtocolsAddPivotTableDepartments(Excel.Workbook wb, Excel.Worksheet ws, Excel.Application xlApp)
        {
            ws.Cells[1, 1].Select();

            string pivotTableName = @"WorkTimePivotTable";

            Excel.Worksheet wsPivote = wb.Sheets["Сводная по отделениям"];

            Excel.PivotCache pivotCache = wb.PivotCaches().Create(Excel.XlPivotTableSourceType.xlDatabase, ws.UsedRange, 6);
            Excel.PivotTable pivotTable = pivotCache.CreatePivotTable(wsPivote.Cells[1, 1], pivotTableName, true, 6);

            pivotTable = (Excel.PivotTable)wsPivote.PivotTables(pivotTableName);

            pivotTable.PivotFields("Филиал").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            pivotTable.PivotFields("Филиал").Position    = 1;

            pivotTable.PivotFields("Подразделение").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            pivotTable.PivotFields("Подразделение").Position    = 2;

            pivotTable.PivotFields("ФИО врача").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            pivotTable.PivotFields("ФИО врача").Position    = 3;
            pivotTable.PivotFields("ФИО врача").Subtotals   =
                new bool[] { false, false, false, false, false, false, false, false, false, false, false, false };
            pivotTable.PivotFields("ФИО врача").LayoutForm = Excel.XlLayoutFormType.xlTabular;

            pivotTable.PivotFields("DCODE").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            pivotTable.PivotFields("DCODE").Position    = 4;
            pivotTable.PivotFields("DCODE").Subtotals   =
                new bool[] { false, false, false, false, false, false, false, false, false, false, false, false };
            pivotTable.PivotFields("DCODE").LayoutForm = Excel.XlLayoutFormType.xlTabular;

            pivotTable.AddDataField(pivotTable.PivotFields("Уникальное лечение"), "Кол-во лечений", Excel.XlConsolidationFunction.xlSum);

            pivotTable.CalculatedFields().Add("Всего протоколов", "='Протокол подписан' +'Протокол не подписан'", true);
            pivotTable.PivotFields("Всего протоколов").Orientation           = Excel.XlPivotFieldOrientation.xlDataField;
            pivotTable.PivotFields("Сумма по полю Всего протоколов").Caption = "Общее кол-во протоколов";

            pivotTable.AddDataField(pivotTable.PivotFields("Протокол не подписан"), "Кол-во неподписанных протоколов", Excel.XlConsolidationFunction.xlSum);

            pivotTable.CalculatedFields().Add("Процент неподписанных", "='Протокол не подписан' /'Всего протоколов'", true);
            pivotTable.PivotFields("Процент неподписанных").Orientation           = Excel.XlPivotFieldOrientation.xlDataField;
            pivotTable.PivotFields("Сумма по полю Процент неподписанных").Caption = "Доля неподписанных протоколов";
            pivotTable.PivotFields("Доля неподписанных протоколов").NumberFormat  = "0,00%";

            pivotTable.PivotFields("Филиал").AutoSort(Excel.XlSortOrder.xlDescending, "Доля неподписанных протоколов");
            pivotTable.PivotFields("Подразделение").AutoSort(Excel.XlSortOrder.xlDescending, "Доля неподписанных протоколов");
            pivotTable.PivotFields("ФИО врача").AutoSort(Excel.XlSortOrder.xlDescending, "Доля неподписанных протоколов");

            pivotTable.PivotFields("Статус сотрудника").Orientation = Excel.XlPivotFieldOrientation.xlPageField;
            pivotTable.PivotFields("Статус сотрудника").Position    = 1;

            pivotTable.PivotFields("Подразделение").ShowDetail = false;
            pivotTable.PivotFields("Филиал").ShowDetail        = false;

            pivotTable.HasAutoFormat = false;

            wsPivote.Columns[1].ColumnWidth = 60;
            wsPivote.Columns[2].ColumnWidth = 12;
            wb.ShowPivotTableFieldList      = false;
        }
Пример #2
0
        private static void AddPivotTableFreeCells(Excel.Workbook wb, Excel.Worksheet ws, Excel.Application xlApp,
                                                   bool isMonth, DateTime date, DateTime?dateMonthEnd = null, bool removeCrossing = false)
        {
            ws.Cells[1, 1].Select();

            string sheetName;

            if (isMonth)
            {
                sheetName = "Сводная таблица текущий месяц";
            }
            else
            {
                sheetName = "Сводная таблица";
            }

            string pivotTableName = @"PivotTable";

            Excel.Worksheet wsPivote = wb.Sheets[sheetName];
            wsPivote.Activate();

            Excel.PivotCache pivotCache = wb.PivotCaches().Create(Excel.XlPivotTableSourceType.xlDatabase, ws.UsedRange, 6);
            Excel.PivotTable pivotTable = pivotCache.CreatePivotTable(wsPivote.Cells[1, 1], pivotTableName, true, 6);

            pivotTable = (Excel.PivotTable)wsPivote.PivotTables(pivotTableName);

            int position = 1;

            pivotTable.PivotFields("Филиал").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            pivotTable.PivotFields("Филиал").Position    = position;
            position++;

            if (!removeCrossing)
            {
                pivotTable.PivotFields("Пересечение").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
                pivotTable.PivotFields("Пересечение").Position    = position;
                position++;
            }

            pivotTable.PivotFields("Отделение").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            pivotTable.PivotFields("Отделение").Position    = position;
            position++;

            pivotTable.PivotFields("Врач").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            pivotTable.PivotFields("Врач").Position    = position;
            position++;

            pivotTable.PivotFields("Должность").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            pivotTable.PivotFields("Должность").Position    = position;
            position++;

            pivotTable.AddDataField(pivotTable.PivotFields("Всего"), "(Всего)", Excel.XlConsolidationFunction.xlSum);
            pivotTable.AddDataField(pivotTable.PivotFields("Занято"), "(Занято)", Excel.XlConsolidationFunction.xlSum);

            pivotTable.CalculatedFields().Add("% занятых слотов", "='Занято'/'Всего'", true);
            pivotTable.PivotFields("% занятых слотов").Orientation = Excel.XlPivotFieldOrientation.xlDataField;

            pivotTable.PivotFields("Сумма по полю % занятых слотов").Caption =
                " % занятых слотов";

            //pivotTable.AddDataField(pivotTable.PivotFields("% занятых слотов"), "(% занятых слотов)", Excel.XlConsolidationFunction.xlAverage);

            pivotTable.PivotFields(" % занятых слотов").NumberFormat = "0,00%";

            //   ActiveSheet.PivotTables("PivotTable").CalculatedFields.Add "Поле2", _
            //    "=Занято/Всего", True
            //ActiveSheet.PivotTables("PivotTable").PivotFields("Поле2").Orientation = _
            //    xlDataField
            //Columns("F:F").Select
            // Selection.Style = "Percent"
            // Range("F3").Select



            if (isMonth)
            {
                CultureInfo cultureInfoOriginal = Thread.CurrentThread.CurrentCulture;
                Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
                for (DateTime dateToHide = date; dateToHide.Date <= dateMonthEnd.Value.Date; dateToHide = dateToHide.AddDays(1))
                {
                    string pivotItem = dateToHide.ToShortDateString();
                    Console.WriteLine("pivotItem: " + pivotItem);
                    pivotTable.PivotFields("Дата").PivotItems(pivotItem).Visible = false;
                }
                Thread.CurrentThread.CurrentCulture = cultureInfoOriginal;
            }
            else
            {
                pivotTable.PivotFields("Дата").Orientation = Excel.XlPivotFieldOrientation.xlColumnField;
                pivotTable.PivotFields("Дата").Position    = 1;
                pivotTable.PivotFields("Дата").AutoGroup();
                pivotTable.PivotFields("Дата").PivotFilters.Add2(Excel.XlPivotFilterType.xlAfter, null,
                                                                 date.AddDays(-1).ToShortDateString(), null, null, null, null, null, true);
                try { pivotTable.PivotFields("Месяцы").Orientation = Excel.XlPivotFieldOrientation.xlHidden; } catch (Exception) { }
            }

            pivotTable.RowGrand             = false;
            pivotTable.ColumnGrand          = false;
            pivotTable.DisplayFieldCaptions = false;

            pivotTable.PivotFields("(Всего)").NumberFormat  = "0,00";
            pivotTable.PivotFields("(Занято)").NumberFormat = "0,00";
            //pivotTable.PivotFields("(% занятых слотов)").NumberFormat = "0,0%";
            pivotTable.PivotSelect("' % занятых слотов'", Excel.XlPTSelectionMode.xlDataAndLabel, true);

            xlApp.Selection.FormatConditions.AddColorScale(3);
            xlApp.Selection.FormatConditions(xlApp.Selection.FormatConditions.Count).SetFirstPriority();

            xlApp.Selection.FormatConditions[1].ColorScaleCriteria[1].Type =
                Excel.XlConditionValueTypes.xlConditionValueLowestValue;
            xlApp.Selection.FormatConditions[1].ColorScaleCriteria[1].FormatColor.Color        = 5287936;
            xlApp.Selection.FormatConditions[1].ColorScaleCriteria[1].FormatColor.TintAndShade = 0;


            xlApp.Selection.FormatConditions[1].ColorScaleCriteria[2].Type =
                Excel.XlConditionValueTypes.xlConditionValuePercentile;
            xlApp.Selection.FormatConditions[1].ColorScaleCriteria[2].Value                    = 65;
            xlApp.Selection.FormatConditions[1].ColorScaleCriteria[2].FormatColor.Color        = 8711167;
            xlApp.Selection.FormatConditions[1].ColorScaleCriteria[2].FormatColor.TintAndShade = 0;

            xlApp.Selection.FormatConditions[1].ColorScaleCriteria[3].Type =
                Excel.XlConditionValueTypes.xlConditionValueHighestValue;
            xlApp.Selection.FormatConditions[1].ColorScaleCriteria[3].FormatColor.Color        = 255;
            xlApp.Selection.FormatConditions[1].ColorScaleCriteria[3].FormatColor.TintAndShade = 0;

            xlApp.Selection.FormatConditions[1].ScopeType = Excel.XlPivotConditionScope.xlDataFieldScope;

            pivotTable.PivotFields("Порядок сортировки").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            pivotTable.PivotFields("Порядок сортировки").Position    = 1;
            pivotTable.PivotFields("Порядок сортировки").Subtotals   =
                new bool[] { false, false, false, false, false, false, false, false, false, false, false, false };
            pivotTable.PivotFields("Порядок сортировки").LayoutForm = Excel.XlLayoutFormType.xlTabular;

            pivotTable.PivotFields("Отделение").ShowDetail = false;

            if (!removeCrossing)
            {
                pivotTable.PivotFields("Пересечение").ShowDetail = false;
            }

            pivotTable.PivotFields("Филиал").ShowDetail = false;
            pivotTable.DisplayErrorString = true;

            wsPivote.Range["A1"].Select();
            wb.ShowPivotTableFieldList = false;

            wsPivote.Range["C1"].Select();

            try {
                xlApp.Selection.Ungroup();
            } catch (Exception) {}
        }
        private static void AddPivotTableReferralUsage(Excel.Workbook wb, Excel.Worksheet ws, Excel.Application xlApp)
        {
            string pivotTableName = @"RefUsage";

            Excel.Worksheet wsPivote = wb.Sheets["Использование направлений"];

            int rowsUsed = ws.UsedRange.Rows.Count;

            wsPivote.Activate();

            Excel.PivotCache pivotCache = wb.PivotCaches().Create(Excel.XlPivotTableSourceType.xlDatabase, "Данные!R1C1:R" + rowsUsed + "C44", 6);
            Excel.PivotTable pivotTable = pivotCache.CreatePivotTable(wsPivote.Cells[1, 1], pivotTableName, true, 6);

            pivotTable = (Excel.PivotTable)wsPivote.PivotTables(pivotTableName);

            //pivotTable.PivotFields("Дата").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            //pivotTable.PivotFields("Дата").Position = 1;

            pivotTable.PivotFields("Филиал").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            pivotTable.PivotFields("Филиал").Position    = 1;

            pivotTable.PivotFields("Отделение").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            pivotTable.PivotFields("Отделение").Position    = 2;

            pivotTable.PivotFields("ФИО Сотрудника").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            pivotTable.PivotFields("ФИО Сотрудника").Position    = 3;


            pivotTable.PivotFields("Услуга").Orientation = Excel.XlPivotFieldOrientation.xlPageField;
            pivotTable.PivotFields("Услуга").Position    = 1;
            pivotTable.PivotFields("Услуга").CurrentPage = "Итого по услугам";
            //pivotTable.PivotFields("Услуга").PivotItems("Итого по услугам").Visible = true;
            //pivotTable.PivotFields("Услуга").EnableMultiplePageItems = false;


            pivotTable.AddDataField(pivotTable.PivotFields("ФИО Пациента"), "Кол-во приемов", Excel.XlConsolidationFunction.xlCount);
            pivotTable.PivotFields("Кол-во приемов").NumberFormat = "# ##0";

            pivotTable.AddDataField(pivotTable.PivotFields("Стоимость, всего"), "Сумма оказанных услуг", Excel.XlConsolidationFunction.xlSum);
            pivotTable.PivotFields("Сумма оказанных услуг").NumberFormat = "# ##0,00 ?";

            pivotTable.CalculatedFields().Add("СрЧек", "='Стоимость, всего'/'Кол-во приемов, исходных'", true);
            pivotTable.PivotFields("СрЧек").Orientation = Excel.XlPivotFieldOrientation.xlDataField;
            pivotTable.PivotFields("Сумма по полю СрЧек").NumberFormat = "# ##0,00 ?";
            pivotTable.PivotFields("Сумма по полю СрЧек").Caption      = "СрЧек (по приемам)";


            pivotTable.AddDataField(pivotTable.PivotFields("Refid"), "Кол-во созданных направлений", Excel.XlConsolidationFunction.xlSum);
            pivotTable.PivotFields("Кол-во приемов").NumberFormat = "# ##0";

            pivotTable.AddDataField(pivotTable.PivotFields("Schedid"), "Кол-во записей (по направлениям)", Excel.XlConsolidationFunction.xlSum);
            pivotTable.PivotFields("Кол-во записей (по направлениям)").NumberFormat = "# ##0";

            pivotTable.AddDataField(pivotTable.PivotFields("Treatcode2"), "Кол-во приемов (по направлениям)", Excel.XlConsolidationFunction.xlSum);
            pivotTable.PivotFields("Кол-во приемов (по направлениям)").NumberFormat = "# ##0";

            pivotTable.CalculatedFields().Add("% Исполнено направлений_", "=Treatcode2/Refid", true);
            pivotTable.PivotFields("% Исполнено направлений_").Orientation = Excel.XlPivotFieldOrientation.xlDataField;
            pivotTable.PivotFields("Сумма по полю % Исполнено направлений_").NumberFormat = "0,00%";
            pivotTable.PivotFields("Сумма по полю % Исполнено направлений_").Caption      = "% Исполнено направлений";

            pivotTable.PivotFields("Отделение").ShowDetail = false;
            pivotTable.PivotFields("Филиал").ShowDetail    = false;
            //pivotTable.PivotFields("Дата").ShowDetail = false;

            wb.ShowPivotTableFieldList = false;
            //pivotTable.DisplayFieldCaptions = false;

            wsPivote.Range["A1"].Select();
        }
        private static void AddPivotTableReferralResult(Excel.Workbook wb, Excel.Worksheet ws, Excel.Application xlApp)
        {
            string pivotTableName = @"RefResult";

            Excel.Worksheet wsPivote = wb.Sheets["Реализация направлений"];

            int rowsUsed = ws.UsedRange.Rows.Count;

            wsPivote.Activate();

            Excel.PivotCache pivotCache = wb.PivotCaches().Create(Excel.XlPivotTableSourceType.xlDatabase, "Данные!R1C1:R" + rowsUsed + "C44", 6);
            Excel.PivotTable pivotTable = pivotCache.CreatePivotTable(wsPivote.Cells[1, 1], pivotTableName, true, 6);

            pivotTable = (Excel.PivotTable)wsPivote.PivotTables(pivotTableName);

            //pivotTable.PivotFields("Дата").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            //pivotTable.PivotFields("Дата").Position = 1;

            pivotTable.PivotFields("Филиал").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            pivotTable.PivotFields("Филиал").Position    = 1;

            pivotTable.AddDataField(pivotTable.PivotFields("Refid"), "Кол-во направлений (всего)", Excel.XlConsolidationFunction.xlCount);
            pivotTable.PivotFields("Кол-во направлений (всего)").NumberFormat = "# ##0";

            pivotTable.AddDataField(pivotTable.PivotFields("Schedid"), "Кол-во записей (по направлениям)", Excel.XlConsolidationFunction.xlCount);
            pivotTable.PivotFields("Кол-во записей (по направлениям)").NumberFormat = "# ##0";

            pivotTable.CalculatedFields().Add("% Записей_", "='Кол-во записей'/'Кол-во приемов, исходных'", true);
            pivotTable.PivotFields("% Записей_").Orientation = Excel.XlPivotFieldOrientation.xlDataField;
            pivotTable.PivotFields("Сумма по полю % Записей_").NumberFormat = "0,00%";
            pivotTable.PivotFields("Сумма по полю % Записей_").Caption      = "% Записей";

            pivotTable.AddDataField(pivotTable.PivotFields("Treatcode2"), "Кол-во приемов (по направлениям)", Excel.XlConsolidationFunction.xlCount);
            pivotTable.PivotFields("Кол-во приемов (по направлениям)").NumberFormat = "# ##0";

            pivotTable.CalculatedFields().Add("% Приемов (по направлениям)_", "='Кол-во приемов, по направлениям'/'Кол-во приемов, исходных'", true);
            pivotTable.PivotFields("% Приемов (по направлениям)_").Orientation = Excel.XlPivotFieldOrientation.xlDataField;
            pivotTable.PivotFields("Сумма по полю % Приемов (по направлениям)_").NumberFormat = "0,00%";
            pivotTable.PivotFields("Сумма по полю % Приемов (по направлениям)_").Caption      = "% Приемов (по направлениям)";

            pivotTable.AddDataField(pivotTable.PivotFields("Стоимость, всего2"), "Сумма оказанных услуг (по направлениям)", Excel.XlConsolidationFunction.xlSum);
            pivotTable.PivotFields("Сумма оказанных услуг (по направлениям)").NumberFormat = "# ##0,00 ?";

            pivotTable.AddDataField(pivotTable.PivotFields("Уникальность пациента, исходный прием"), "Кол-во уникальных пациентов (всего)", Excel.XlConsolidationFunction.xlSum);
            pivotTable.PivotFields("Кол-во уникальных пациентов (всего)").NumberFormat = "# ##0 ?";

            pivotTable.AddDataField(pivotTable.PivotFields("Уникальность пациента, запись"), "Кол-во уникальных пациентов (запись)", Excel.XlConsolidationFunction.xlSum);
            pivotTable.PivotFields("Кол-во уникальных пациентов (запись)").NumberFormat = "# ##0";

            pivotTable.CalculatedFields().Add("% Записанных пациентов_", "='Уникальность пациента, запись'/'Уникальность пациента, исходный прием'", true);
            pivotTable.PivotFields("% Записанных пациентов_").Orientation = Excel.XlPivotFieldOrientation.xlDataField;
            pivotTable.PivotFields("Сумма по полю % Записанных пациентов_").NumberFormat = "0,00%";
            pivotTable.PivotFields("Сумма по полю % Записанных пациентов_").Caption      = "% Записанных пациентов";

            pivotTable.AddDataField(pivotTable.PivotFields("Уникальность пациента, прием по направлению"), "Кол-во уникальных пациентов (прием по направлениям)", Excel.XlConsolidationFunction.xlSum);
            pivotTable.PivotFields("Кол-во уникальных пациентов (прием по направлениям)").NumberFormat = "# ##0";

            pivotTable.CalculatedFields().Add("% Принятых по направлению пациентов_", "='Уникальность пациента, прием по направлению'/'Уникальность пациента, исходный прием'", true);
            pivotTable.PivotFields("% Принятых по направлению пациентов_").Orientation = Excel.XlPivotFieldOrientation.xlDataField;
            pivotTable.PivotFields("Сумма по полю % Принятых по направлению пациентов_").NumberFormat = "0,00%";
            pivotTable.PivotFields("Сумма по полю % Принятых по направлению пациентов_").Caption      = "% Принятых по направлению пациентов";


            //ActiveSheet.PivotTables("RefResult").CalculatedFields.Add "% Записей", "='Кол-во записей'/'Кол-во приемов, исходных'", True
            //ActiveSheet.PivotTables("RefResult").PivotFields("% Записей").Orientation = xlDataField

            //ActiveSheet.PivotTables("RefResult").CalculatedFields.Add "% Приемов (по направлениям)", "='Кол-во приемов, по направлениям'/'Кол-во приемов, исходных'", True
            //ActiveSheet.PivotTables("RefResult").PivotFields("% Приемов (по направлениям)").Orientation = xlDataField

            //ActiveSheet.PivotTables("RefResult").CalculatedFields.Add "% Записанных пациентов", "='Уникальность пациента, запись'/'Уникальность пациента, исходный прием'", True
            //ActiveSheet.PivotTables("RefResult").PivotFields("% Записанных пациентов").Orientation = xlDataField

            //ActiveSheet.PivotTables("RefResult").CalculatedFields.Add "% Принятых по направлению пациентов", "='Уникальность пациента, прием по направлению'/'Уникальность пациента, исходный прием'", True
            //ActiveSheet.PivotTables("RefResult").PivotFields("% Принятых по направлению пациентов").Orientation = xlDataField

            pivotTable.PivotFields("Услуга").Orientation = Excel.XlPivotFieldOrientation.xlPageField;
            pivotTable.PivotFields("Услуга").Position    = 1;
            pivotTable.PivotFields("Услуга").CurrentPage = "All";
            pivotTable.PivotFields("Услуга").PivotItems("Итого по услугам").Visible = false;
            pivotTable.PivotFields("Услуга").EnableMultiplePageItems = true;

            //pivotTable.AddDataField(pivotTable.PivotFields("№ ИБ"), "Кол-во записей", Excel.XlConsolidationFunction.xlCount);

            //pivotTable.PivotFields("Дата").ShowDetail = false;

            wb.ShowPivotTableFieldList = false;
            //pivotTable.DisplayFieldCaptions = false;

            pivotTable.HasAutoFormat                  = false;
            wsPivote.Columns["B:L"].ColumnWidth       = 15;
            wsPivote.Range["B3:L3"].VerticalAlignment = Excel.Constants.xlTop;
            wsPivote.Range["B3:L3"].WrapText          = true;

            wsPivote.Range["A1"].Select();
        }
Пример #5
0
        private static void MesUsageAddPivotTable(Excel.Workbook wb, Excel.Worksheet ws, Excel.Application xlApp)
        {
            ws.Cells[1, 1].Select();

            string pivotTableName = @"MesUsagePivotTable";

            Excel.Worksheet wsPivote = wb.Sheets["Сводная таблица"];

            Excel.PivotCache pivotCache = wb.PivotCaches().Create(Excel.XlPivotTableSourceType.xlDatabase, ws.UsedRange, 6);
            Excel.PivotTable pivotTable = pivotCache.CreatePivotTable(wsPivote.Cells[1, 1], pivotTableName, true, 6);

            pivotTable = (Excel.PivotTable)wsPivote.PivotTables(pivotTableName);

            pivotTable.PivotFields("Тип приема").Orientation = Excel.XlPivotFieldOrientation.xlPageField;
            pivotTable.PivotFields("Тип приема").Position    = 1;

            pivotTable.PivotFields("Тип оплаты приема").Orientation = Excel.XlPivotFieldOrientation.xlPageField;
            pivotTable.PivotFields("Тип оплаты приема").Position    = 2;

            pivotTable.PivotFields("Филиал").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            pivotTable.PivotFields("Филиал").Position    = 1;

            pivotTable.PivotFields("Подразделение").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            pivotTable.PivotFields("Подразделение").Position    = 2;

            pivotTable.PivotFields("ФИО врача").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            pivotTable.PivotFields("ФИО врача").Position    = 3;

            pivotTable.AddDataField(pivotTable.PivotFields("Прием"),
                                    "Кол-во приемов, для которых загружен список МЭС", Excel.XlConsolidationFunction.xlSum);
            pivotTable.AddDataField(pivotTable.PivotFields("Есть направление, созданное с использованием МЭС"),
                                    "Кол-во приемов с направлением, созданным с использованием МЭС", Excel.XlConsolidationFunction.xlSum);

            pivotTable.CalculatedFields().Add("% приемов с направлением, созданным с использованием МЭС",
                                              "='Есть направление, созданное с использованием МЭС' /Прием", true);
            pivotTable.PivotFields("% приемов с направлением, созданным с использованием МЭС").Orientation =
                Excel.XlPivotFieldOrientation.xlDataField;
            pivotTable.PivotFields("Сумма по полю % приемов с направлением, созданным с использованием МЭС").Caption =
                " % приемов с направлением, созданным с использованием МЭС";
            pivotTable.PivotFields(" % приемов с направлением, созданным с использованием МЭС").NumberFormat = "0,00%";

            pivotTable.AddDataField(pivotTable.PivotFields("Есть направление, созданное самостоятельно"),
                                    "Кол-во приемов с направлениями, созданными самостоятельно", Excel.XlConsolidationFunction.xlSum);

            pivotTable.CalculatedFields().Add("% приемов с направлениями, соответствующими МЭС, но созданных самостоятельно",
                                              "='Есть направление, созданное самостоятельно' /Прием", true);
            pivotTable.PivotFields("% приемов с направлениями, соответствующими МЭС, но созданных самостоятельно").Orientation =
                Excel.XlPivotFieldOrientation.xlDataField;
            pivotTable.PivotFields("Сумма по полю % приемов с направлениями, соответствующими МЭС, но созданных самостоятельно").Caption =
                " % приемов с направлениями, соответствующими МЭС, но созданных самостоятельно";
            pivotTable.PivotFields(" % приемов с направлениями, соответствующими МЭС, но созданных самостоятельно").NumberFormat = "0,00%";

            pivotTable.AddDataField(pivotTable.PivotFields("Услуги из всех направлений соответсвуют МЭС на 100%"),
                                    "Кол-во приемов, обязательные услуги МЭС соответствуют в направлениях на 100%", Excel.XlConsolidationFunction.xlSum);

            pivotTable.CalculatedFields().Add("% приемов, обязательные услуги МЭС в направлениях соответствуют на 100%",
                                              "='Услуги из всех направлений соответсвуют МЭС на 100%' /Прием", true);
            pivotTable.PivotFields("% приемов, обязательные услуги МЭС в направлениях соответствуют на 100%").Orientation =
                Excel.XlPivotFieldOrientation.xlDataField;
            pivotTable.PivotFields("Сумма по полю % приемов, обязательные услуги МЭС в направлениях соответствуют на 100%").Caption =
                " % приемов, обязательные услуги МЭС в направлениях соответствуют на 100%";
            pivotTable.PivotFields(" % приемов, обязательные услуги МЭС в направлениях соответствуют на 100%").NumberFormat = "0,00%";

            pivotTable.AddDataField(pivotTable.PivotFields("% Соответствия МЭС"),
                                    "Средний % соответствия обязательных услуг МЭС услугам в направлениях", Excel.XlConsolidationFunction.xlAverage);
            pivotTable.PivotFields("Средний % соответствия обязательных услуг МЭС услугам в направлениях").NumberFormat = "0,00%";

            wsPivote.Activate();
            wsPivote.Columns["B:I"].Select();
            xlApp.Selection.ColumnWidth = 20;
            wsPivote.Range["B4:I4"].Select();
            xlApp.Selection.VerticalAlignment = Excel.Constants.xlTop;
            xlApp.Selection.WrapText          = true;

            pivotTable.PivotFields("ФИО врача").AutoSort(Excel.XlSortOrder.xlDescending,
                                                         "Средний % соответствия обязательных услуг МЭС услугам в направлениях");
            pivotTable.PivotFields("Подразделение").AutoSort(Excel.XlSortOrder.xlDescending,
                                                             "Средний % соответствия обязательных услуг МЭС услугам в направлениях");
            pivotTable.PivotFields("Филиал").AutoSort(Excel.XlSortOrder.xlDescending,
                                                      "Средний % соответствия обязательных услуг МЭС услугам в направлениях");

            int rowCount = wsPivote.UsedRange.Rows.Count;

            AddInteriorColor(wsPivote.Range["C4:D" + rowCount], Excel.XlThemeColor.xlThemeColorAccent4);
            AddInteriorColor(wsPivote.Range["E4:F" + rowCount], Excel.XlThemeColor.xlThemeColorAccent5);
            AddInteriorColor(wsPivote.Range["G4:H" + rowCount], Excel.XlThemeColor.xlThemeColorAccent6);

            wsPivote.Range["A1"].Select();

            pivotTable.HasAutoFormat = false;

            pivotTable.PivotFields("Подразделение").ShowDetail = false;
            pivotTable.PivotFields("Филиал").ShowDetail        = false;

            wb.ShowPivotTableFieldList = false;
        }
Пример #6
0
        private static void NonAppearanceAddPivotTableGeneral(Excel.Workbook wb, Excel.Worksheet ws, Excel.Application xlApp)
        {
            ws.Cells[1, 1].Select();

            string pivotTableName = @"NonAppearancePivotTable";

            Excel.Worksheet wsPivote = wb.Sheets["Сводная Таблица"];

            Excel.PivotCache pivotCache = wb.PivotCaches().Create(Excel.XlPivotTableSourceType.xlDatabase, ws.UsedRange, 6);
            Excel.PivotTable pivotTable = pivotCache.CreatePivotTable(wsPivote.Cells[1, 1], pivotTableName, true, 6);

            pivotTable = (Excel.PivotTable)wsPivote.PivotTables(pivotTableName);

            pivotTable.PivotFields("Филиал").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            pivotTable.PivotFields("Филиал").Position    = 1;

            pivotTable.PivotFields("Подразделение").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            pivotTable.PivotFields("Подразделение").Position    = 2;

            pivotTable.PivotFields("ФИО доктора").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            pivotTable.PivotFields("ФИО доктора").Position    = 3;

            pivotTable.PivotFields("Дата лечения").Orientation = Excel.XlPivotFieldOrientation.xlRowField;
            pivotTable.PivotFields("Дата лечения").Position    = 4;

            pivotTable.AddDataField(pivotTable.PivotFields("Записано пациентов"),
                                    "Всего записано пациентов", Excel.XlConsolidationFunction.xlSum);

            pivotTable.AddDataField(pivotTable.PivotFields("Отметки без лечений"),
                                    "Отметки без лечения (регистратура +, врач – )", Excel.XlConsolidationFunction.xlSum);
            pivotTable.CalculatedFields().Add("Общий % Неявок - Отметки без лечений",
                                              "= 'Отметки без лечений'/'Записано пациентов'", true);
            pivotTable.PivotFields("Общий % Неявок - Отметки без лечений").Orientation = Excel.XlPivotFieldOrientation.xlDataField;
            pivotTable.PivotFields("Сумма по полю Общий % Неявок - Отметки без лечений").NumberFormat = "0,00%";
            pivotTable.PivotFields("Сумма по полю Общий % Неявок - Отметки без лечений").Caption      =
                "% Неявок - Отметки без лечений (регистратура +, врач – )";

            pivotTable.AddDataField(pivotTable.PivotFields("Без отметок и без лечений"),
                                    "Без отметок и лечения (регистратура -, врач -)", Excel.XlConsolidationFunction.xlSum);
            pivotTable.CalculatedFields().Add("Общий % Неявок - Без отметок и без лечений",
                                              "= 'Без отметок и без лечений'/'Записано пациентов'", true);
            pivotTable.PivotFields("Общий % Неявок - Без отметок и без лечений").Orientation = Excel.XlPivotFieldOrientation.xlDataField;
            pivotTable.PivotFields("Сумма по полю Общий % Неявок - Без отметок и без лечений").NumberFormat = "0,00%";
            pivotTable.PivotFields("Сумма по полю Общий % Неявок - Без отметок и без лечений").Caption      =
                "% Неявок - Без отметок и без лечений (регистратура -, врач -)";

            pivotTable.CalculatedFields().Add("Общий % Неявки",
                                              "= ('Отметки без лечений' +'Без отметок и без лечений' )/'Записано пациентов'", true);
            pivotTable.PivotFields("Общий % Неявки").Orientation = Excel.XlPivotFieldOrientation.xlDataField;
            pivotTable.PivotFields("Сумма по полю Общий % Неявки").NumberFormat = "0,00%";
            pivotTable.PivotFields("Сумма по полю Общий % Неявки").Caption      = "% Неявки";

            pivotTable.HasAutoFormat = false;

            pivotTable.PivotFields("ФИО доктора").ShowDetail   = false;
            pivotTable.PivotFields("Подразделение").ShowDetail = false;
            pivotTable.PivotFields("Филиал").ShowDetail        = false;

            pivotTable.DisplayFieldCaptions = false;
            wb.ShowPivotTableFieldList      = false;
        }