網上找了一些資料可是不得入門 只能再回過頭來看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 } }
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")); } } }
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");//一級 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; } } } }
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"; }
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); }
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); } }
7.取消所有的合並單元格

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