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(форма); }
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); }
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, "Построение модели формы"); процесса.Закрыть(); } }