这份API文档是翻译自Spreadsheet Document API | Office File API | DevExpress Documentation,翻译过程中会根据需要做一些取舍,如果有英文阅读能力的,可以自行查看英文帮助文档。那里的资料会更全面一点。
还有一个重要的信息要传达一下,那就是C1.Win.C1FlexGrid命名空间下和DevExpress.Spreadsheet命名空间下都有Column和Row对象,因为C1.Win.C1FlexGrid命名空间更常用,所以平台默认没有添加DevExpress.Spreadsheet命名空间,如果需要使用到DevExpress.Spreadsheet命名空间下的对象时,需要在代码中补全命名空间。比如我们想引用Workbook对象,就需要写完整的命名空间为:
Vb.Net |
'创建一个workbook工作簿 Dim workbook As New DevExpress.Spreadsheet.Workbook() |
C# |
|
在内部函数中,我们无法简化,如果在一些窗体事件或者在表事件中,我们自己有机会修改命名空间引用时,就可以在不使用表格对象仅使用SpreadSheet API的场景下删除之前C1.Win.C1FlexGrid命名空间,添加DevExpress.Spreadsheet命名空间。
我们就以“第一个示例”中的代码为例,将他们转移到窗体中,代码可以如何简化。
下面的代码示例中,最重要的是我们将之前的C1.Win.C1FlexGrid命名空间删除,添加DevExpress.Spreadsheet命名空间。
Vb.Net |
Imports System Imports System.Text Imports System.IO Imports System.Data Imports System.Windows.Forms Imports System.Reflection Imports Microsoft.CSharp Imports Microsoft.VisualBasic Imports sanMuSoft.CS.Framework Imports System.Drawing Imports sanMuSoft.CS.WinForm.Controls Imports DevExpress.Spreadsheet Namespace FormEvents Public Class Form5a16c635cee94b779e46f13c8dd33c3d Inherits FormEventsBase Public Sub SmButton1_Click(sender As Object,e As System.EventArgs) '创建一个workbook工作簿. Using workbook As New Workbook() ' 获得工作簿中第一个worksheet工作表的引用 Dim worksheet As Worksheet = workbook.Worksheets(0) '设置工作簿的显示单位. workbook.Unit = DevExpress.Office.DocumentUnit.Point '准备更新,可以提升代码执行效率 workbook.BeginUpdate() Try ' 给工作表A1单元格赋值 worksheet.Cells("A1").Value = "*" '赋值行序列和列序列 For i As Integer = 1 To 10 ' 创建行标题序列. worksheet.Columns("A")(i).Value = i ' 创建列标题序列. worksheet.Rows("1")(i).Value = i Next i '设置区域内的公式 worksheet.Range("B2:K11").Formula = "=B$1*$A2" '获得数据区域的引用 Dim tableRange As CellRange = worksheet.GetDataRange() '指定数据区域的行高和列宽 tableRange.RowHeight = 40 tableRange.ColumnWidth = 40 '设置数据区域中文本的排布 tableRange.Alignment.Horizontal = SpreadsheetHorizontalAlignment.Center tableRange.Alignment.Vertical = SpreadsheetVerticalAlignment.Center ' 获得行标题和列标题区域,并设置其格式 Dim headerCells As CellRange = worksheet.Range.Union(worksheet.Range("A1:K1"), worksheet.Range("A2:A11")) headerCells.FillColor = Color.FromArgb(&HF7, &H9B, &H77) headerCells.Font.Bold = True '设置数据区域的显示格式 worksheet.Range("B2:K11").FillColor = Color.FromArgb(&HFE, &HF2, &HE4) Finally '结束数据的更新 workbook.EndUpdate() End Try '主动重新计算一下表格中的公式函数 workbook.Calculate() ' 保存Excel到指定文件 workbook.SaveDocument("TestDoc.xlsx", DocumentFormat.OpenXml) '导出Excel到PDF文档 workbook.ExportToPdf("TestDoc.pdf") End Using '打开PDF文件 System.Diagnostics.Process.Start("TestDoc.pdf") '打开Excel文件 System.Diagnostics.Process.Start("TestDoc.xlsx") End Sub End Class End Namespace |
C# |
using System; using System.Text; using System.IO; using System.Data; using System.Windows.Forms; using System.Reflection; using Microsoft.CSharp; using Microsoft.VisualBasic; using sanMuSoft.CS.Framework; using System.Drawing; using sanMuSoft.CS.WinForm.Controls; using DevExpress.Spreadsheet; namespace FormEvents { public class Formf056002e398f4461a3a124b1a06877d4: FormEventsBase { public void SmButton1_Click(object sender, System.EventArgs e) { // 创建一个workbook工作簿. using (DevExpress.Spreadsheet.Workbook workbook = new Workbook()) { // 获得工作簿中第一个worksheet工作表的引用 Worksheet worksheet = workbook.Worksheets[0]; // 设置工作簿的显示单位. workbook.Unit = DevExpress.Office.DocumentUnit.Point; // 准备更新,可以提升代码执行效率 workbook.BeginUpdate(); try { // 给工作表A1单元格赋值 worksheet.Cells["A1"].Value = "*"; // 赋值行序列和列序列 for (int i = 1; i <= 10; i++) { // 创建行标题序列. worksheet.Columns["A"][i].Value = i; // 创建列标题序列. worksheet.Rows["1"][i].Value = i; } // 设置区域内的公式 worksheet.Range["B2:K11"].Formula = "=B$1*$A2"; // 获得数据区域的引用 CellRange tableRange = worksheet.GetDataRange(); // 指定数据区域的行高和列宽 tableRange.RowHeight = 40; tableRange.ColumnWidth = 40; // 设置数据区域中文本的排布 tableRange.Alignment.Horizontal = SpreadsheetHorizontalAlignment.Center; tableRange.Alignment.Vertical = SpreadsheetVerticalAlignment.Center; // 获得行标题和列标题区域,并设置其格式 CellRange headerCells = worksheet.Range.Union(worksheet.Range["A1:K1"], worksheet.Range["A2:A11"]); headerCells.FillColor = Color.FromArgb(0xF7, 0x9B, 0x77); headerCells.Font.Bold = true; // 设置数据区域的显示格式 worksheet.Range["B2:K11"].FillColor = Color.FromArgb(0xFE, 0xF2, 0xE4); } finally { // 结束数据的更新 workbook.EndUpdate(); } // 主动重新计算一下表格中的公式函数 workbook.Calculate(); // 保存Excel到指定文件 workbook.SaveDocument("TestDoc.xlsx", DocumentFormat.OpenXml); // 导出Excel到PDF文档 workbook.ExportToPdf("TestDoc.pdf"); } // 打开PDF文件 System.Diagnostics.Process.Start("TestDoc.pdf"); // 打开Excel文件 System.Diagnostics.Process.Start("TestDoc.xlsx"); } } } |
注意:
我们可以简化的前提是C1.Win.C1FlexGrid命名空间和DevExpress.Spreadsheet命名空间中的对象不冲突,或者我们只使用到了其中一个命名空间下的对象。万一发生了命名空间对象冲突的情况,请补全命名空间。