博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# WinfForm 控件之dev电子表格 SpreadSheet
阅读量:5166 次
发布时间:2019-06-13

本文共 13783 字,大约阅读时间需要 45 分钟。

网上找了一些资料可是不得入门 只能再回过头来看demos

看了一点 例子大多继承自SpreadsheetRibbonTutorialControlBase 这个类,它又继承自SpreadSheetTutorialControlBase 再往前就不说了

SpreadSheetTutorialControlBase 这个类呢 只是定义了两个属性  可能就是运行语言格式的 没有注释

SpreadsheetRibbonTutorialControlBase 这个呢又定义了一个属性 selectPage  看样是选中的按钮页的意思,类型是 RibbonPage 又绑定了两个方法 一个是单元格值改变 另一个呢是 是最后编辑,我想是这样的 看名字 (spreadsheetControl1_CellValueChangedOverride、spreadsheetControl1_CellEndEditOverride)这个类就有所有的控件了,这是他的样子。有个doShow()(大约是显示的意思)方法 这个应继承自最基类的dll里先不管什么意思

再看他的子类们

1.AutoFilterModule 打开一个文档 看注释

namespace DevExpress.XtraSpreadsheet.Demos {    public partial class AutoFilterModule : SpreadsheetRibbonTutorialControlBase {        public AutoFilterModule() {            InitializeComponent();            // 这个是en-US 。。。英语的 (汉化的话 在程序入口加 en-Hans 这去百度用法)            spreadsheetControl1.Options.Culture = DefaultCulture;            //这个打开路径下的 auto...xlsx表格 getRelativePath是取程序路径 可以看到spreadsheetControl1.LoadDocument就是把文档加到spreadSheetControl中               spreadsheetControl1.LoadDocument(DemoUtils.GetRelativePath("AutoFilter_template.xlsx"));        }        #region Properties 重载了 选中dataribbonPage1        protected internal override RibbonPage SelectedRibbonPage { get { return dataRibbonPage1; } }        #endregion    }}
View Code

2。 BreakevenAnalysisModule 定义一个workBook 接收 ssc.document   ssc是spreadSheetControl下同 并加载excel表格 这个有点错误 ssc.docment 是取ssc上的sheet的意思

namespace DevExpress.XtraSpreadsheet.Demos {    public partial class BreakevenAnalysisModule : SpreadsheetRibbonTutorialControlBase {        public BreakevenAnalysisModule() {            InitializeComponent();            InitializeWorkbook();        }        #region Properties        protected internal override RibbonPage SelectedRibbonPage { get { return insertRibbonPage1; } }        #endregion        //新建一个空文档 并加入excel表格  IWorkbook=spreadsheetControl1.Document;        void InitializeWorkbook() {            IWorkbook workbook = spreadsheetControl1.Document;            workbook.LoadDocument(DemoUtils.GetRelativePath("BreakevenAnalysis.xlsx"));        }    }}
View Code

3.CellPropertiesViewerModule

using System;using System.Collections.Generic;using System.ComponentModel;using System.Drawing;using System.Data;using System.Linq;using System.Text;using System.Windows.Forms;using System.Globalization;using DevExpress.DXperience.Demos;using DevExpress.XtraVerticalGrid.Rows;using DevExpress.XtraEditors.Repository;using DevExpress.XtraVerticalGrid;using DevExpress.XtraVerticalGrid.Events;using DevExpress.Spreadsheet;using System.Diagnostics;namespace DevExpress.XtraSpreadsheet.Demos {    public partial class CellPropertiesViewerModule : SpreadsheetRibbonTutorialControlBase {        IWorkbook workbook;        Worksheet sheet;        Range selectedCell;        public CellPropertiesViewerModule() {            InitializeComponent();            InitializePropertyGrid();            InitializeWorkbook();            //清空历史文档  spreadsheetControl1.Document.History.Clear()            this.spreadsheetControl1.Document.History.Clear();        }        ///         /// 绑定 两个事件         ///         protected internal override void SubscribeEvents() {            base.SubscribeEvents();            spreadsheetControl1.ContentChanged += spreadsheetControl1_ContentChanged;            spreadsheetControl1.SelectionChanged += spreadsheetControl1_SelectionChanged;        }        //单元格改变是显示单元格属性        void spreadsheetControl1_ContentChanged(object sender, EventArgs e) {            workbook = spreadsheetControl1.Document;            sheet = workbook.Worksheets.ActiveWorksheet;//活动页            selectedCell = sheet.SelectedCell; //选中的单元格            propertyGridControl1.SelectedObject = new RangeAdapter(selectedCell);//选中表格的属性 类在下边;        }        ///         /// 不同步的话就同步过来        ///         ///         ///         void spreadsheetControl1_SelectionChanged(object sender, EventArgs e) {            workbook = spreadsheetControl1.Document;            sheet = workbook.Worksheets.ActiveWorksheet;            if (!sheet.SelectedCell.Equals(selectedCell)) {                selectedCell = sheet.SelectedCell;                propertyGridControl1.SelectedObject = new RangeAdapter(selectedCell);            }        }        #region PropertyGrid initialization 初始化属性表格        void InitializePropertyGrid() {            CategoryRow contentCategory = AddCategoryRow(null, "CellContent", "Cell content");//一级 cellContent            AddEditorRow(contentCategory, "Cell.Formula", "Formula"); // cellcontent的下一级            AddEditorRow(contentCategory, "Cell.ArrayFormula", "ArrayFormula");            CategoryRow valueCategory = AddCategoryRow(contentCategory, "Value", "Value");            AddEditorRow(valueCategory, "Value.TextValue", "TextValue");            AddEditorRow(valueCategory, "Value.BooleanValue", "BooleanValue");            AddEditorRow(valueCategory, "Value.NumericValue", "NumericValue");            AddEditorRow(valueCategory, "Value.ErrorValue", "ErrorValue");            AddEditorRow(valueCategory, "Value.Type", "Type");            CategoryRow formattingCategory = AddCategoryRow(null, "Formatting", "Formatting");            CategoryRow numberFormatCategory = AddCategoryRow(formattingCategory, "NumberFormat", "NumberFormat");            AddEditorRow(numberFormatCategory, "NumberFormat", "NumberFormat");            AddEditorRow(numberFormatCategory, "Cell.IsDisplayedAsDateTime", "IsDisplayedAsDateTime");            CategoryRow alignmentCategory = AddCategoryRow(formattingCategory, "Alignment", "Alignment");            AddEditorRow(alignmentCategory, "Alignment.Horizontal", "Horizontal");            AddEditorRow(alignmentCategory, "Alignment.Vertical", "Vertical");            AddEditorRow(alignmentCategory, "Alignment.Indent", "Indent");            AddEditorRow(alignmentCategory, "Alignment.WrapText", "WrapText");            CategoryRow fillCategory = AddCategoryRow(formattingCategory, "Fill", "Fill");            AddEditorRow(fillCategory, "Fill.BackgroundColor", "Color");            CategoryRow fontCategory = AddCategoryRow(formattingCategory, "Font", "Font");            AddEditorRow(fontCategory, "Font.Color", "Color");            AddEditorRow(fontCategory, "Font.Name", "Name");            AddEditorRow(fontCategory, "Font.FontStyle", "FontStyle");            AddEditorRow(fontCategory, "Font.Script", "Script");            AddEditorRow(fontCategory, "Font.Size", "Size");            AddEditorRow(fontCategory, "Font.Strikethrough", "Strikethrough");            AddEditorRow(fontCategory, "Font.UnderlineType", "UnderlineType");            CategoryRow bordersCategory = AddCategoryRow(formattingCategory, "Borders", "Borders");            CategoryRow diagBorderCategory = AddCategoryRow(bordersCategory, "DiagonalBorder", "Diagonal");            AddEditorRow(diagBorderCategory, "Borders.DiagonalBorderColor", "Color");            AddEditorRow(diagBorderCategory, "Borders.DiagonalBorderLineStyle", "LineStyle");            AddEditorRow(diagBorderCategory, "Borders.DiagonalBorderType", "Type");            CategoryRow leftBorderCategory = AddCategoryRow(bordersCategory, "LeftBorder", "Left");            AddEditorRow(leftBorderCategory, "LeftBorder.Color", "Color");            AddEditorRow(leftBorderCategory, "LeftBorder.LineStyle", "LineStyle");            CategoryRow topBorderCategory = AddCategoryRow(bordersCategory, "TopBorder", "Top");            AddEditorRow(topBorderCategory, "TopBorder.Color", "Color");            AddEditorRow(topBorderCategory, "TopBorder.LineStyle", "LineStyle");            CategoryRow rightBorderCategory = AddCategoryRow(bordersCategory, "RightBorder", "Right");            AddEditorRow(rightBorderCategory, "RightBorder.Color", "Color");            AddEditorRow(rightBorderCategory, "RightBorder.LineStyle", "LineStyle");            CategoryRow bottomBorderCategory = AddCategoryRow(bordersCategory, "BottomBorder", "Bottom");            AddEditorRow(bottomBorderCategory, "BottomBorder.Color", "Color");            AddEditorRow(bottomBorderCategory, "BottomBorder.LineStyle", "LineStyle");            CategoryRow styleCategory = AddCategoryRow(formattingCategory, "Style", "Style");            AddEditorRow(styleCategory, "Style.Name", "Name");            CategoryRow layoutCategory = AddCategoryRow(null, "Layout", "Layout");            AddEditorRow(layoutCategory, "Cell.ColumnWidth", "Width");            AddEditorRow(layoutCategory, "Cell.ColumnWidthInCharacters", "WidthInCharacters");            AddEditorRow(layoutCategory, "Cell.RowHeight", "Height");            CategoryRow protectionCategory = AddCategoryRow(null, "Protection", "Protection");            AddEditorRow(protectionCategory, "Protection.Locked", "Locked");            bordersCategory.Expanded = false;        }        CategoryRow AddCategoryRow(CategoryRow parent, string name, string caption) {            CategoryRow result = new CategoryRow(name);            result.Properties.Caption = caption;            if (parent == null)                propertyGridControl1.Rows.Add(result);            else                parent.ChildRows.Add(result);            return result;        }        void AddEditorRow(CategoryRow parent, string name, string caption) {            EditorRow row = new EditorRow(name);            row.Properties.Caption = caption;            parent.ChildRows.Add(row);        }        #endregion        #region Sample workbook initialization        void InitializeWorkbook() {            workbook = spreadsheetControl1.Document;            workbook.LoadDocument(DemoUtils.GetRelativePath("CellPropertiesViewer_template.xlsx"));        }        #endregion        protected override void DoShow() {            base.DoShow();            spreadsheetControl1.Focus();//焦点        }    }    //属性对应的类    public class RangeAdapter {        Range range;        public RangeAdapter(Range range) {            this.range = range;        }                public Cell Cell { get { return range.Worksheet.Cells[range.TopRowIndex, range.LeftColumnIndex]; } }        public CellValue Value { get { return range.Value; } }        public Alignment Alignment { get { return range.Alignment; } }        public Borders Borders { get { return range.Borders; } }        public Border LeftBorder { get { return range.Borders.LeftBorder; } }        public Border TopBorder { get { return range.Borders.TopBorder; } }        public Border RightBorder { get { return range.Borders.RightBorder; } }        public Border BottomBorder { get { return range.Borders.BottomBorder; } }        public Fill Fill { get { return range.Fill; } }        public DevExpress.Spreadsheet.SpreadsheetFont Font { get { return range.Font; } }        public Protection Protection { get { return range.Protection; } }        public Style Style { get { return range.Style; } }        public string NumberFormat { get { return Cell.NumberFormat; } set { Cell.NumberFormat = value; } }    }}
View Code

4.ChartApiMode  这个 显示c#与VB的demo 后能不管他了 看他前台的demo 这里只看一个

private void button1_Click(object sender, EventArgs e)        {            IWorkbook workbook = ssc.Document;            Worksheet worksheet = workbook.Worksheets["sheet2"];            worksheet.Cells["B2"].Value = "Phone";            worksheet.Cells["c2"].Value = "pecent";            worksheet.Cells["B4"].Value="adriod";            worksheet.Cells["c4"].Value = 70;            worksheet.Cells["b3"].Value = "iso";            worksheet.Cells["c3"].Value = 30;            workbook.Worksheets.ActiveWorksheet = worksheet;            // 建一个本地图. 取值区间如果有无效数据则忽略            DevExpress.Spreadsheet.Charts.Chart chart = worksheet.Charts.Add(ChartType.PieExploded, worksheet["B3:C4"]);            //图表位置            chart.TopLeftCell = worksheet.Cells["E2"];            chart.BottomRightCell = worksheet.Cells["K15"];                        // 颜色类型.            chart.Style = ChartStyle.ColorArea;            // 隐藏右侧的说明           chart.Legend.Visible = false;            // 第一个切片的角度 .            chart.Views[0].FirstSliceAngle = 0;            // 各个切片是否显示名称 百分比 及显示方式为换行.            DataLabelOptions dataLabels = chart.Views[0].DataLabels;            dataLabels.ShowCategoryName = true;            dataLabels.ShowPercent = true;            dataLabels.Separator = "\n";        }
View Code

5.ConditionalFormatting 这个主要是改变背景色 等显示 代码实现在TopTradingPartners这个静态类里  只看一个例子

public static void ApplyTopImportsConditionalFormatting(Worksheet sheet) {            ConditionalFormattingCollection conditionalFormattings = sheet.ConditionalFormattings;            // 建一个 imports 列 5个格改变颜色.            RankConditionalFormatting cfRule2 = conditionalFormattings.AddRankConditionalFormatting(sheet["Table[Imports]"], ConditionalFormattingRankCondition.TopByRank, 5);            // Specify formatting options to be applied to cells if the condition is true.            // Set the background color to light-red.            cfRule2.Formatting.Fill.BackgroundColor = Color.FromArgb(0xFC, 0xB3, 0xB3);        }
View Code

6.删除空列(空行同 只不过是遍历行操作)

for (int i = spreadsheetControl1.ActiveWorksheet.Columns.LastUsedIndex; i >= 0; i--)            {                bool b = false;                for (int j = spreadsheetControl1.ActiveWorksheet.Rows.LastUsedIndex; j >= 0; j--)                {                    if (spreadsheetControl1.ActiveWorksheet.Rows[j][i].Value.ToString() != "")                    {                        b = true;                        break;                    }                }                if (!b)                {                    spreadsheetControl1.ActiveWorksheet.Columns.Remove(i);                }            }
View Code

 7.取消所有的合并单元格

foreach (var item in spreadsheetControl1.ActiveWorksheet.Cells.GetMergedRanges())            {                item.UnMerge();            }
View Code

 

转载于:https://www.cnblogs.com/SoftWareIe/p/8853604.html

你可能感兴趣的文章
SpringBoot 使用 MyBatis 分页插件 PageHelper 进行分页查询
查看>>
《DSP using MATLAB》Problem 6.17
查看>>
微信公众平台开发实战Java版之如何网页授权获取用户基本信息
查看>>
一周TDD小结
查看>>
sizeof与strlen的用法
查看>>
Linux 下常见目录及其功能
查看>>
开源框架中常用的php函数
查看>>
nginx 的提升多个小文件访问的性能模块
查看>>
set&map
查看>>
集合类总结
查看>>
4.AE中的缩放,书签
查看>>
CVE-2014-6321 && MS14-066 Microsoft Schannel Remote Code Execution Vulnerability Analysis
查看>>
给一次重新选择的机会_您还会选择程序员吗?
查看>>
Mysql MHA高可用集群架构
查看>>
心急的C小加
查看>>
编译原理 First,Follow,select集求法
查看>>
iOS开发 runtime实现原理以及实际开发中的应用
查看>>
BZOJ2437 NOI2011兔兔与蛋蛋(二分图匹配+博弈)
查看>>
android 学习资源网址
查看>>
qt安装遇到的错误
查看>>