Пример #1
0
        public ЭкраннаяФорма ИмпортироватьЭкраннуюФорму(string Файл)
        {
            ЭкраннаяФорма форма = new ЭкраннаяФорма();

            this.sheetFamilyID = GridFormulaEngine.CreateSheetFamilyID();
            ExcelEngine  engine   = new ExcelEngine();
            IApplication excel    = engine.Excel;
            IWorkbook    workbook = engine.Excel.Workbooks.Open(Файл);

            foreach (IWorksheet worksheet in workbook.Worksheets)
            {
                if (worksheet.Name.Trim().ToLower() == "code")
                {
                    continue;
                }
                if (worksheet.Name.Trim().ToLower() == "шапка")
                {
                    ШапкаЭкраннойФормы формы = new ШапкаЭкраннойФормы();
                    GridFormulaEngine.RegisterGridAsSheet("sys_шапка", формы.Представление, this.sheetFamilyID);
                    base.ExcelToGrid(worksheet, формы.Представление);
                    формы.УстановитьСтилевыеНастройкиТаблицы();
                    this.ОбработатьЯчейкиТаблицы(формы);
                    форма.Шапка = формы;
                }
                else
                {
                    this.ПолучитьТаблицыФормы(worksheet, форма);
                }
            }
            return(форма);
        }
Пример #2
0
        private List <ТаблицаОтчетнойФормы> ПолучитьТаблицыФормы(IWorksheet worksheet, ЭкраннаяФорма Форма)
        {
            ТаблицаОтчетнойФормы формы = new ТаблицаОтчетнойФормы();

            GridFormulaEngine.RegisterGridAsSheet("sys_общаяТаблица", формы.Представление, this.sheetFamilyID);
            base.ExcelToGrid(worksheet, формы.Представление);
            bool   flag   = false;
            int    top    = -1;
            string str    = string.Empty;
            int    length = worksheet.Rows.Length;
            int    right  = worksheet.Columns.Length;
            bool   flag2  = true;
            List <ТаблицаОтчетнойФормы> list = new List <ТаблицаОтчетнойФормы>();

            for (int i = 1; i <= length; i++)
            {
                string text = worksheet[i, 1].Text;
                if (string.IsNullOrEmpty(text))
                {
                    if ((i == length) && (top != -1))
                    {
                        text = "#Конец_Закладки";
                    }
                    else
                    {
                        continue;
                    }
                }
                if (text.ToLower().StartsWith("#закладка"))
                {
                    flag = false;
                    top  = i;
                    str  = text;
                }
                else if (text.ToLower().StartsWith("#динамическаятаблица"))
                {
                    flag = true;
                    top  = i;
                    str  = text;
                }
                else if (text.ToLower().StartsWith("#конец_закладки") && (top != -1))
                {
                    GridRangeInfo           range = GridRangeInfo.Cells(top, 1, i, right);
                    GridStyleInfoStoreTable cells = формы.GetCells(range);
                    int rowCount = cells.RowCount;
                    int colCount = cells.ColCount;
                    ТаблицаОтчетнойФормы формы2 = new ТаблицаОтчетнойФормы();
                    формы2.RowCount = rowCount;
                    формы2.ColCount = colCount;
                    this.ИдентифицироватьЗакладу(str, формы2);
                    string str3 = str.Trim().ToLower();
                    if (flag2)
                    {
                        формы2.ИмяЛиста = worksheet.Name;
                    }
                    else
                    {
                        формы2.ИмяЛиста = формы2.КодТаблицы;
                    }
                    flag2 = false;
                    GridFormulaEngine.RegisterGridAsSheet(формы2.ИмяЛиста, формы2.Представление, this.sheetFamilyID);
                    GridRangeInfo info2 = GridRangeInfo.Cells(1, 1, rowCount, colCount);
                    формы2.SetCells(info2, cells);
                    for (int j = 0; j <= colCount; j++)
                    {
                        формы2.ColWidths[j] = формы.ColWidths[j];
                    }
                    foreach (GridRangeInfo info3 in формы.CoveredRanges.Ranges)
                    {
                        формы2.CoveredRanges.Add(GridRangeInfo.Cells((info3.Top - top) + 1, info3.Left, (info3.Bottom - top) + 1, info3.Right));
                    }
                    формы2.RowHeights.ResizeToFit(GridRangeInfo.Rows(0, rowCount));
                    формы2.RowHeights[0]        = 0;
                    формы2.RowHeights[1]        = 0;
                    формы2.RowHeights[rowCount] = 0;
                    if (!flag)
                    {
                        this.ПроанализироватьТаблицуНаПеременные(формы2);
                        this.ОбработатьЯчейкиТаблицы(формы2);
                        Форма.ДобавитьТаблицу(формы2);
                    }
                    else
                    {
                        string[] strArray = формы2.КодТаблицы.Split(new char[] { ',' });
                        bool     flag3    = str3.Contains("размещатьназакладке");
                        foreach (string str4 in strArray)
                        {
                            ДинамическаяТаблица таблица = new ДинамическаяТаблица();
                            таблица.ПостроитьТаблицуПоМодели(формы2);
                            таблица.КодТаблицы         = str4;
                            таблица.азмещатьНаЗакладке = flag3;
                            Форма.ДобавитьДинамическуюТаблицу(таблица);
                        }
                    }
                    top = -1;
                }
            }
            GridFormulaEngine.UnregisterGridAsSheet("sys_общаяТаблица", формы.Представление);
            return(list);
        }
Пример #3
0
        private void ВыборОтчетнойФормы_EditValueChanged(object sender, EventArgs e)
        {
            едактируемаяФорма форма = this.ВыбранныйЭлемент;

            if (форма != null)
            {
                XtraTabPage            page2;
                ФормаИндикаторПроцесса процесса = new ФормаИндикаторПроцесса();
                процесса.Показать();
                процесса.УстановитьЗначениеИндикатора(0, "Построение модели формы");
                Application.DoEvents();
                this.ИдентификаторФормы = форма.Идентификатор;
                ЭкраннаяФорма форма2 = new ЭкраннаяФорма();
                форма2.ежимРаботы = ежимРаботыЭкраннойФормы.едакторУвязок;
                форма2.ОтчетнаяФорма.ЗагрузитьМетаструктуру(форма.ПутьКФайлуМетаструктуры, форма.НачалоДействия);
                XPathDocument document = new XPathDocument(ПровайдерФайловФормы.ПолучитьПутьКФайлуЭкраннойФормы(форма.ПутьКФайлуМетаструктуры));
                форма2.ЗагрузитьФорму(document);
                процесса.УстановитьЗначениеИндикатора(50, "Построение модели формы");
                this.tabТаблицы.BeginUpdate();
                this.tabТаблицы.SelectedTabPageIndex = 0;
                this.tabТаблицы.TabPages.Clear();
                ШапкаЭкраннойФормы формы = форма2.Шапка;
                if (формы != null)
                {
                    XtraTabPage page = this.tabТаблицы.TabPages.Add();
                    формы.Dock       = DockStyle.Fill;
                    формы.KeyDown   += new KeyEventHandler(this.MainView_KeyDown);
                    формы.KeyUp     += new KeyEventHandler(this.MainView_KeyUp);
                    формы.CellClick += new GridCellClickEventHandler(this.шапка_CellClick);
                    page.Controls.Add(формы);
                    page.Text = "Шапка";
                }
                foreach (ТаблицаОтчетнойФормы формы2 in форма2.Таблицы)
                {
                    page2             = this.tabТаблицы.TabPages.Add();
                    формы2.Dock       = DockStyle.Fill;
                    формы2.KeyDown   += new KeyEventHandler(this.MainView_KeyDown);
                    формы2.KeyUp     += new KeyEventHandler(this.MainView_KeyUp);
                    формы2.CellClick += new GridCellClickEventHandler(this.таблица_CellClick);
                    page2.Controls.Add(формы2);
                    page2.Text = формы2.ИмяЛиста;
                }
                foreach (ДинамическаяТаблица таблица in форма2.ДинамическиеТаблицы.Values)
                {
                    page2                     = this.tabТаблицы.TabPages.Add();
                    таблица.Dock              = DockStyle.Fill;
                    таблица.MainView.KeyUp   += new KeyEventHandler(this.MainView_KeyUp);
                    таблица.MainView.KeyDown += new KeyEventHandler(this.MainView_KeyDown);
                    таблица.MainView.Click   += new EventHandler(this.MainView_Click);
                    page2.Controls.Add(таблица);
                    page2.Text = таблица.КодТаблицы;
                }
                this.tabТаблицы.EndUpdate();
                if (this.ИспользоватьТолькоОднуФорму)
                {
                    this.textEditФормула.Text = string.Empty;
                }
                this.textEditФормула.Focus();
                this.textEditФормула.Select(this.textEditФормула.Text.Length, 0);
                процесса.УстановитьЗначениеИндикатора(100, "Построение модели формы");
                процесса.Закрыть();
            }
        }