网上找了一些资料可是不得入门 只能再回过头来看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 重载了 选中dataribbonPage1protected 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 Propertiesprotected 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();}/// <summary>/// 绑定 两个事件 /// </summary>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);//选中表格的属性 类在下边;
        }/// <summary>/// 不同步的话就同步过来/// </summary>/// <param name="sender"></param>/// <param name="e"></param>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");//一级 cellContentAddEditorRow(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);elseparent.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 initializationvoid InitializeWorkbook() {workbook = spreadsheetControl1.Document;workbook.LoadDocument(DemoUtils.GetRelativePath("CellPropertiesViewer_template.xlsx"));}#endregionprotected 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

C# WinfForm 控件之dev电子表格 SpreadSheet相关推荐

  1. C# WinfForm 控件之dev报表 XtraReport (六) 图表Charts 无内容

    占地方 转载于:https://www.cnblogs.com/SoftWareIe/p/8806501.html

  2. 玩转控件:对Dev的GridControl控件扩展

    缘由 一切实现来源于需求,目的在于不盲目造轮子,有小伙伴儿在看了<玩转控件:对Dev中GridControl控件的封装和扩展>文章后,私信作者说,因公司业务逻辑比较复杂,展示字段比较多,尤 ...

  3. 玩转控件:对Dev中GridControl控件的封装和扩展

    清明节 清明时节雨纷纷 路上行人欲断魂 借问酒家何处有 牧童遥指杏花村 又是一年清明节至,细雨绵绵犹如泪光,树叶随风摆动.... 转眼间,一年又过去了三分之一,疫情的严峻让不少企业就跟清明时节的树叶一 ...

  4. 玩转控件:封装Dev的LabelControl和TextEdit

    缘由 俗话说的好:"工欲善其事必先利其器",作为软件攻城狮也是同样道理,攻城狮开发的软件目的是简化客户的操作,让客户动动手指就可以完成很多事情,减少人力成本.这也是系统/软件存在的 ...

  5. 纯前端表格控件SpreadJS:电子表格技术实践 - 内存

    在前端表格中,表格可以是松散布局的一种UI表达方式,它的最小描述单元是一个单元格,也就是我们常说的CellBase. 点击获取SpreadJS工具下载 常用的数据结构有二维数组和对象数组,对于二维数组 ...

  6. Winforms 2020界面开发新纪元——Spreadsheet控件升级

    DevExpress WinForms Subscription拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案.DevExpress WinForms能完美构 ...

  7. 玩转控件:Fucking ERP之流程图

    前言 首先,跟守护在作者公众号和私信作者催更的朋友们道个歉.疫情的原因,公司从年初到现在一直处于996+的高压模式,导致公众号更新频率较低.而且作者每更新一篇原创公众号,既要对自己沉淀知识负责,也要对 ...

  8. c#+dev-ComboboxEdit控件用法

    ComboboxEdit控件是dev中比较基础的一个控件,其用法比较简单,只需在其Item中添加值即可,赋值语句如下: comboBoxEdit1.Properties.Items.Add(" ...

  9. datagrid控件使用技巧大集合

    引用自:http://www.cnblogs.com/iCeSnaker/archive/2004/07/31/29017.aspx 1.DataGrid的正反双向排序 http://dev.csdn ...

最新文章

  1. android 键盘右下角回车改为搜索
  2. SPU表管理之保存SPU表数据
  3. rsync 更改配置后, 无需手动重启
  4. php上传手机文件到服务器,安卓上传文件至PHP服务器(示例代码)
  5. Sql Server 优化 SQL 查询:如何写出高性能SQL语句
  6. 19、mysql中定时器的创建和使用
  7. 前端开发 个人简历的制作 0228
  8. Dagoin之modelform组件
  9. 7-19 输出全排列 (20 分)
  10. Android Multimedia框架总结(十四)Camera框架初识及自定义相机案例
  11. zepto.js学习笔记01
  12. 【MM系列】SAP 通过原材料找到成品的函数
  13. 是谁关闭了Linux抢占,而抢占又关闭了谁?
  14. sql prompt linux,sqlplus中灵活使用sqlprompt提示符
  15. 惠普m128fn中文说明书_惠普M128fw说明书
  16. 领导力【管理学之五】
  17. 表格组件列属性formatter和styler使用方法
  18. 【学习小结】树上的概率、期望问题,树上高斯消元
  19. 计算机科学技术应用任务书,计算机科学与技术专——专业实习任务书.doc
  20. Dazdata BI产品3D+BI医院综合管理应用案例

热门文章

  1. OAK智能深度相机的测距精度是多少?
  2. 【从零开始的Java开发】2-9-3 油画商城静态网页案例
  3. 软件设计---KISS原则
  4. 解决部分安卓touchend不触发问题
  5. 微信如何置顶文字?原来方法这么简单,1分钟就搞定了
  6. 手撕代码 多线程手撕代码题
  7. java 去掉pdf文字_如何从PDF文件中删除所有图像/图纸,并仅在Java中留下文本?
  8. 【CAD.Net】第五课:如何提取CAD CADMText的文本内容(去除格式内容)
  9. When Cloud Storage Meets RDMA
  10. python中常用js解析库比对分析