Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        public BuiltInCellTypesDemo()
        {
            InitializeComponent();

            this.worksheet = grid.CurrentWorksheet;

            // ワークシート全体のスタイルを設定
            worksheet.SetRangeStyles(RangePosition.EntireRange, new WorksheetRangeStyle
            {
                // フォント名と縦位置の揃え方を設定
                Flag     = PlainStyleFlag.FontName | PlainStyleFlag.VerticalAlign,
                FontName = "Arial",
                VAlign   = ReoGridVerAlign.Middle,
            });

            // グリッドラインを非表示
            worksheet.SetSettings(WorksheetSettings.View_ShowGridLine | WorksheetSettings.Edit_DragSelectionToMoveCells, false);

            // 選択モードを単一セルのみに設定
            worksheet.SelectionMode = WorksheetSelectionMode.Cell;

            // 選択スタイルを Focus に設定
            worksheet.SelectionStyle = WorksheetSelectionStyle.FocusRect;

            var grayTextStyle = new WorksheetRangeStyle
            {
                Flag      = PlainStyleFlag.TextColor,
                TextColor = Color.DimGray
            };

            worksheet.MergeRange(1, 1, 1, 6);             // B2:G2

            worksheet.SetRangeStyles(1, 1, 1, 6, new WorksheetRangeStyle
            {
                Flag      = PlainStyleFlag.TextColor | PlainStyleFlag.FontSize,
                TextColor = Color.DarkGreen,
                FontSize  = 18,
            });

            worksheet[1, 1] = "内蔵セル型";

            // 列幅を調整
            worksheet.SetColumnsWidth(1, 1, 100);
            worksheet.SetColumnsWidth(2, 1, 30);
            worksheet.SetColumnsWidth(3, 1, 100);
            worksheet.SetColumnsWidth(6, 2, 65);

            // ボタン
            worksheet.MergeRange(3, 2, 1, 2);             // C4:D4
            var btn = new ButtonCell("ボタン");

            worksheet[3, 1] = new object[] { "ボタン: ", btn };
            btn.Click      += (s, e) => ShowText("ボタンがクリックされた。");

            // リンク
            worksheet.MergeRange(5, 2, 1, 3);             // C6:E6
            var link = new HyperlinkCell("https://www.google.com")
            {
                AutoNavigate = false
            };

            worksheet[5, 1] = new object[] { "ハイパーリンク", link };
            link.Click     += (s, e) => RGUtility.OpenFileOrLink(worksheet.GetCellText(5, 2));

            // チェックボックス
            var checkbox = new CheckBoxCell();

            worksheet.SetRangeStyles(8, 2, 1, 1, grayTextStyle);             // C9:C9
            worksheet[7, 1]        = new object[] { "チェックボックス", checkbox, "テキストは別のセルを利用します" };
            worksheet[8, 2]        = "(セル型の編集はキーボードでも変更できます)";
            checkbox.CheckChanged += (s, e) => ShowText("チェックステータスが変更された: " + checkbox.IsChecked.ToString());

            // ラジオボタン
            worksheet[10, 1] = "Radio Button";              // B11
            var radioGroup = new RadioButtonGroup();        // ラジオボタングループを作成

            worksheet[10, 2] = new object[, ] {             // C11
                { new RadioButtonCell()
                  {
                      RadioGroup = radioGroup
                  }, "リンゴ" },
                { new RadioButtonCell()
                  {
                      RadioGroup = radioGroup
                  }, "ミカン" },
                { new RadioButtonCell()
                  {
                      RadioGroup = radioGroup
                  }, "バナナ" }
            };
            radioGroup.RadioButtons.ForEach(rb => rb.CheckChanged += (s, e) =>
                                                                     ShowText("ラジオボタンのステータスが変更された:" + worksheet[rb.Cell.Row, rb.Cell.Column + 1]));
            worksheet[10, 2] = true;
            worksheet[13, 2] = "(RadioGroup に複数のラジオボタンを追加するとお互いに切り替えることができます)";
            worksheet.SetRangeStyles(13, 2, 1, 1, grayTextStyle);               //C14

            // ドロップダウンリスト
            worksheet.MergeRange(15, 2, 1, 3);               // C16:E16
            var dropdown = new DropdownListCell("リンゴ", "ミカン", "バナナ", "ナシ", "カボチャ", "チェリー", "ココナッツ");

            worksheet[15, 1] = new object[] { "ドロップダウン", dropdown };
            worksheet.SetRangeBorders(15, 2, 1, 3, BorderPositions.Outside, RangeBorderStyle.GraySolid);
            dropdown.SelectedItemChanged += (s, e) => ShowText("ドロップダウンの項目が選択された:" + dropdown.SelectedItem);

            // イメージ
            worksheet.MergeRange(2, 6, 5, 2);              // G3:H7
            worksheet[2, 6] = new ImageCell(Resources.computer_laptop);

            // イベント情報
            worksheet.SetRangeBorders("A20:J20", BorderPositions.Top, RangeBorderStyle.GraySolid);
        }
Ejemplo n.º 3
0
        public BuiltInTypesDemo()
        {
            InitializeComponent();

            this.worksheet = grid.CurrentWorksheet;

            // set default sheet style
            worksheet.SetRangeStyles(RangePosition.EntireRange, new WorksheetRangeStyle
            {
                Flag     = PlainStyleFlag.FontName | PlainStyleFlag.VerticalAlign,
                FontName = "Arial",
                VAlign   = ReoGridVerAlign.Middle,
            });

            worksheet.SetSettings(WorksheetSettings.View_ShowGridLine |
                                  WorksheetSettings.Edit_DragSelectionToMoveCells, false);
            worksheet.SelectionMode  = WorksheetSelectionMode.Cell;
            worksheet.SelectionStyle = WorksheetSelectionStyle.FocusRect;

            var middleStyle = new WorksheetRangeStyle
            {
                Flag    = PlainStyleFlag.Padding | PlainStyleFlag.HorizontalAlign,
                Padding = new PaddingValue(2),
                HAlign  = ReoGridHorAlign.Center,
            };

            var grayTextStyle = new WorksheetRangeStyle
            {
                Flag      = PlainStyleFlag.TextColor,
                TextColor = Color.DimGray
            };

            worksheet.MergeRange(1, 1, 1, 6);

            worksheet.SetRangeStyles(1, 1, 1, 6, new WorksheetRangeStyle
            {
                Flag      = PlainStyleFlag.TextColor | PlainStyleFlag.FontSize,
                TextColor = Color.DarkGreen,
                FontSize  = 18,
            });

            worksheet[1, 1] = "Built-in Cell Bodies";

            worksheet.SetColumnsWidth(1, 1, 100);
            worksheet.SetColumnsWidth(2, 1, 30);
            worksheet.SetColumnsWidth(3, 1, 100);
            worksheet.SetColumnsWidth(6, 2, 65);

            // button
            worksheet.MergeRange(3, 2, 1, 2);
            var btn = new ButtonCell("Hello");

            worksheet[3, 1] = new object[] { "Button: ", btn };
            btn.Click      += (s, e) => ShowText("Button clicked.");

            // link
            worksheet.MergeRange(5, 2, 1, 3);
            var link = new HyperlinkCell("http://www.google.com")
            {
                AutoNavigate = false
            };

            worksheet[5, 1] = new object[] { "Hyperlink", link };
            link.Click     += (s, e) => System.Diagnostics.Process.Start(worksheet.GetCellText(5, 2));

            // checkbox
            var checkbox = new CheckBoxCell();

            worksheet.SetRangeStyles(7, 2, 1, 1, middleStyle);
            worksheet.SetRangeStyles(8, 2, 1, 1, grayTextStyle);
            worksheet[7, 1]        = new object[] { "Check box", checkbox, "Auto destroy after 5 minutes." };
            worksheet[8, 2]        = "(Keyboard is also supported to change the status of control)";
            checkbox.CheckChanged += (s, e) => ShowText("Check box switch to " + checkbox.IsChecked.ToString());

            // radio & radio group
            worksheet[10, 1] = "Radio Button";
            worksheet.SetRangeStyles(10, 2, 3, 1, middleStyle);
            var radioGroup = new RadioButtonGroup();

            worksheet[10, 2] = new object[, ] {
                { new RadioButtonCell()
                  {
                      RadioGroup = radioGroup
                  }, "Apple" },
                { new RadioButtonCell()
                  {
                      RadioGroup = radioGroup
                  }, "Orange" },
                { new RadioButtonCell()
                  {
                      RadioGroup = radioGroup
                  }, "Banana" }
            };
            radioGroup.RadioButtons.ForEach(rb => rb.CheckChanged += (s, e) =>
                                                                     ShowText("Radio button selected: " + worksheet[rb.Cell.Row, rb.Cell.Column + 1]));
            worksheet[10, 2] = true;
            worksheet[13, 2] = "(By adding radio buttons into same RadioGroup to make them toggle each other automatically)";
            worksheet.SetRangeStyles(13, 2, 1, 1, grayTextStyle);

            // dropdown
            worksheet.MergeRange(15, 2, 1, 3);
            var dropdown = new DropdownListCell("Apple", "Orange", "Banana", "Pear", "Pumpkin", "Cherry", "Coconut");

            worksheet[15, 1] = new object[] { "Dropdown", dropdown };
            worksheet.SetRangeBorders(15, 2, 1, 3, BorderPositions.Outside, RangeBorderStyle.GraySolid);
            dropdown.SelectedItemChanged += (s, e) => ShowText("Dropdown list selected: " + dropdown.SelectedItem);

            // image
            worksheet.MergeRange(2, 6, 5, 2);
            worksheet[2, 6] = new ImageCell(Resources.computer_laptop);

            // information cell
            worksheet.SetRangeBorders(19, 0, 1, 10, BorderPositions.Top, RangeBorderStyle.GraySolid);
        }
Ejemplo n.º 4
0
        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);
                        }
                    }
                }
            }
        }