private void CreateSheetControls() { var sheet = reoGridControl.CurrentWorksheet; // 自動付番ボタンを追加 var bangoButton = new ButtonCell("A"); bangoButton.Click += (s, _e) => sheet["F3"] = rand.Next(100000) + 100000; sheet["K3"] = bangoButton; // 性別選択ラジオボタンを作成 var seibetsuRadioButtonGroup = new RadioButtonGroup(); var seibetsuOtoko = new RadioButtonCell() { RadioGroup = seibetsuRadioButtonGroup }; var seibetsuOna = new RadioButtonCell() { RadioGroup = seibetsuRadioButtonGroup }; var seibetsuFumei = new RadioButtonCell() { RadioGroup = seibetsuRadioButtonGroup }; // ラジオボタンをワークシートに追加 sheet["O6"] = seibetsuOtoko; sheet["Q6"] = seibetsuOna; sheet["S6"] = seibetsuFumei; // 性別選択ラジオボタンを作成 var ketsuekiGataGroup = new RadioButtonGroup(); var ketsuekiA = new RadioButtonCell() { RadioGroup = ketsuekiGataGroup }; var ketsuekiB = new RadioButtonCell() { RadioGroup = ketsuekiGataGroup }; var ketsuekiO = new RadioButtonCell() { RadioGroup = ketsuekiGataGroup }; var ketsuekiAB = new RadioButtonCell() { RadioGroup = ketsuekiGataGroup }; var ketsuekiFumei = new RadioButtonCell() { RadioGroup = ketsuekiGataGroup }; // ラジオボタンをワークシートに追加 sheet["F7"] = ketsuekiA; sheet["I7"] = ketsuekiB; sheet["L7"] = ketsuekiO; sheet["O7"] = ketsuekiAB; sheet["R7"] = ketsuekiFumei; var kokugaiSumiCheck = new CheckBoxCell(); sheet["X11"] = kokugaiSumiCheck; // すべてのラジオボタンとチェックボックスのスタイルを設定 foreach (var cell in sheet.Ranges["F6:X11"].Cells) { if (cell.Body is RadioButtonCell || cell.Body is CheckBoxCell) { // 余白を設定 cell.Style.Padding = new PaddingValue(2); // 真ん中に寄せる cell.Style.HAlign = ReoGridHorAlign.Center; cell.Style.VAlign = ReoGridVerAlign.Middle; } } // 国籍リストを追加 var kokusekiList = new DropdownListCell("日本", "アメリカ", "イギリス", "ドイツ", "フランス", "イタリア", "中国"); sheet["O8"] = kokusekiList; // 郵便番号検索ボタンを追加 var yubinKensakuButton = new ButtonCell("検索"); sheet["P12"] = yubinKensakuButton; // 入社日・退社日のカレンダーボタンを作成 var calendarImage = Resources.Calendar_16; var nyusyaDay1Button = new ImageButtonCell(calendarImage); var taisyaDay1Button = new ImageButtonCell(calendarImage); var nyusyaDay2Button = new ImageButtonCell(calendarImage); var taisyaDay2Button = new ImageButtonCell(calendarImage); var nyusyaDay3Button = new ImageButtonCell(calendarImage); var taisyaDay3Button = new ImageButtonCell(calendarImage); // 入社日・退社日のカレンダーボタンをワークシートに追加 sheet["P18"] = nyusyaDay1Button; sheet["AA18"] = taisyaDay1Button; sheet["P21"] = nyusyaDay2Button; sheet["AA21"] = taisyaDay2Button; sheet["P24"] = nyusyaDay3Button; sheet["AA24"] = taisyaDay3Button; }
public void Base64Load(string data) { var sheets = data.Split(';'); foreach (var sheetdata in sheets) { var nameAndSheet = sheetdata.Split(':'); var name = nameAndSheet[0]; var sheetbase64 = nameAndSheet[1]; var sheet = Grid.CreateWorksheet(name); var databytes = Convert.FromBase64String(sheetbase64); var xmltext = Encoding.UTF8.GetString(databytes); var xel = XElement.Parse(xmltext); AddWorksheetData(sheet, xdata => xdata.Xml = xel); var xml = new XmlDocument(); xml.LoadXml(xmltext); var origdecsep = xml["grid"]?["head"]?["meta"]?["decimalchar"]?.InnerText; if (origdecsep == null) { var origcultureid = xml["grid"]?["head"]?["meta"]?["culture"]?.InnerText ?? "en-US"; var origculture = new CultureInfo(origcultureid); origdecsep = origculture.NumberFormat.NumberDecimalSeparator; } ConvertCulture(xml, origdecsep); databytes = Encoding.UTF8.GetBytes(xml.InnerXml); var datastream = new MemoryStream(databytes); sheet.LoadRGF(datastream); Grid.AddWorksheet(sheet); var wsxd = _wsxdata[sheet]; foreach (var element in xel.XPathSelectElements("//cell[@body-type]")) { var btxattr = element.Attribute(XName.Get("body-type")); if (btxattr == null) { continue; } if (btxattr.Value.Equals("VerticalProgressCell")) { SetCellBodyFromXml(sheet, element, new VerticalProgressCell()); } if (btxattr.Value.Equals("HorizontalProgressCell")) { SetCellBodyFromXml(sheet, element, new HorizontalProgressCell()); } if (btxattr.Value.Equals("RadioButtonCell")) { var rc = ParseRowCol(element); var celldata = sheet.Cells[rc.r, rc.c].Data? .ToString() .Equals("True", StringComparison.InvariantCultureIgnoreCase) ?? false; var button = new RadioButtonCell { IsChecked = celldata }; var groupattr = element.Attribute(XName.Get("radio-group-range")); if (groupattr != null && RangePosition.IsValidAddress(groupattr.Value)) { var range = new RangePosition(groupattr.Value); if (wsxd.RadioGroups.ContainsKey(range)) { button.RadioGroup = wsxd.RadioGroups[range]; } else { var radiogroup = new RadioButtonGroup(); button.RadioGroup = radiogroup; wsxd.RadioGroups.Add(range, radiogroup); } } button.Click += (sender, eventArgs) => SaveChanges(); SetCellBodyFromXml(sheet, element, button); } if (btxattr.Value.Equals("CheckBoxCell")) { var rc = ParseRowCol(element); var celldata = sheet.Cells[rc.r, rc.c].Data? .ToString() .Equals("True", StringComparison.InvariantCultureIgnoreCase) ?? false; var button = new CheckBoxCell { IsChecked = celldata }; button.Click += (sender, eventArgs) => SaveChanges(); SetCellBodyFromXml(sheet, element, button); } if (btxattr.Value.Equals("DropdownListCell")) { var enumattr = element.Attribute(XName.Get("enum-name")); if (enumattr != null) { var rc = ParseRowCol(element); if (rc.r >= 0 && rc.c >= 0) { var button = new DropdownListCell(GetEnumEntries(enumattr.Value)); button.SelectedItemChanged += (sender, args) => SaveChanges(); sheet.Cells[rc.r, rc.c].Body = button; if (wsxd.EnumCells.ContainsKey(rc)) { wsxd.EnumCells[rc] = enumattr.Value; } else { wsxd.EnumCells.Add(rc, enumattr.Value); } } } } var formulael = element.Element(XName.Get("formula")); if (formulael != null) { var rc = ParseRowCol(element); if (rc.r >= 0 && rc.c >= 0) { sheet.SetCellFormula(rc.r, rc.c, formulael.Value); } } } } }