DevExpress Office File API是一个专为C#, VB.NET 和 ASP.NET等开发人员提供的非可视化.NET库。有了这个库,不用安装Microsoft Office,就可以完全自动处理Excel、Word等文档。开发人员使用一个非常易于操作的API就可以生成XLS, XLSx, DOC, DOCx, RTF, CSV 和 Snap Report等企业级文件。
DevExpress Office File API控件日前正式发布了v24.2,新版本正式官宣不再支持非Windows系统等,欢迎下载最新版组件体验!
DevExpress技术交流群11:749942875 欢迎一起进群讨论
重要变化
GDI+ (Libgdiplus) — 不再支持非Windows系统
由于官方对.NET 8的承诺,以及再去年发布跨平台的基于SkiaSharp的引擎之后,重构了源代码并在非Windows环境(libgdiplus)中删除了所有与GDI+相关的方法调用。
C#
using System.IO; using DevExpress.XtraRichEdit; // ... RichEditDocumentServer wordProcessor = new RichEditDocumentServer(); //... using(FileStream stream = new FileStream(resultFilePath, FileMode.Create, FileAccess.Write, FileShare.Read)) { PdfExportOptions exportOptions = new PdfExportOptions(); exportOptions.PdfUACompatibility = PdfUACompatibility.PdfUA1; wordProcessor.ExportToPdf(stream, exportOptions); }
在Windows环境下支持Skia和取消AzureCompatibility属性
多种DevExpress产品(Reporting、BI Dashboard和Office File API)都带有打印和数据导出功能,适用于受限制的环境,如Microsoft Azure(其中与元文件和字体对象相关的某些GDI/GDI+调用不可用),AzureCompatibility.Enabled属性管理此功能。
在v23.2版本周期中,官方停止了对非Windows环境中此属性切换所提供的功能支持。在v24.2中,官方也在基于Windows的环境中逐步取消了Office File API库中的AzureCompatibility.Enabled切换,建议在针对云/受限环境时使用基于Skia的跨平台图形引擎。
DevExpress Office File API库自动确定所使用的适用绘图引擎,您可以通过使用静态的DevExpress.Drawing.Settings.DrawingEngine选项手动切换到不同的绘图引擎。
C#
DevExpress.Drawing.Settings.DrawingEngine = DevExpress.Drawing.DrawingEngine.Skia;
Spreadsheet Document(电子表格) API
动态数组公式
v24.2扩展了公式计算引擎,并将动态数组集成到Spreadsheet Document API库中。与标准数组公式不同,标准数组公式为每个单元格返回一个值,而动态数组函数返回一个动态的值数组(这个值数组会自动溢出到相邻的单元格中)。
新的函数包括:
- 动态阵列计算和溢出范围支持。
- 新的公式错误类型(#SPILL!)。
- 隐式交叉运算符(@符号)返回单个公式值替代数组。

现在您可以在Spreadsheet Document API库中导入包含动态数组公式的Excel文档,调用Workbook.Calculate方法重新计算这些公式,并将计算后的文档保存为Excel格式,打印和导出为PDF也可用。
此外您可以在代码中管理动态数组公式,v24.2发布了以下新API:
- CellRange.DynamicArrayFormula - 获取或设置基于当前工作簿区域性的单元格区域的动态数组公式。
- CellRange.DynamicArrayFormulaInvariant - 获取或设置基于不变区域性的单元格区域的动态数组公式。
- CellRange.HasDynamicArrayFormula - 指示单元格区域是否包含动态数组公式。
- Cell.IsTopLeftCellInDynamicArrayFormulaRange - 指示当前单元格是否为动态数组公式范围中的左上角单元格。
- Cell.GetDynamicArrayFormulaRange() - 返回动态数组公式溢出的单元格范围。
- Worksheet.DynamicArrayFormulas - 返回当前工作表的动态数组公式的集合。
如果您想使用新的API获取、插入或清除动态数组公式,请参阅以下代码片段:
C#
Worksheet worksheet = workbook.Worksheets.ActiveWorksheet; // Insert dynamic array formulas worksheet["A1"].DynamicArrayFormulaInvariant = "={\"Red\",\"Green\",\"Orange\",\"Blue\"}"; worksheet.DynamicArrayFormulas.Add(worksheet["A2"], "=LEN(A1:D1)"); // Clear dynamic array formulas Cell cell = worksheet.Cells["B2"]; if (cell.HasDynamicArrayFormula) { CellRange dynamicArrayRange = cell.GetDynamicArrayFormulaRange(); dynamicArrayRange.Clear(); } worksheet.DynamicArrayFormulas.Remove(worksheet.Cells["A1"].GetDynamicArrayFormulaRange());
要抑制动态数组公式计算并恢复到以前的操作,请将WorkbookCapabilitiesOptions.DynamicArrayFormulas属性设置为DocumentCapability.Disabled。在本例中,动态数组公式将作为标准数组公式计算。
在单元格中嵌入图像
DevExpress Spreadsheet Document API库(v24.2)允许您将图像直接嵌入到工作表单元格中(使用Microsoft Excel的“Place in Cell”选项),还可以导入在工作表单元格中嵌入图像的文档,打印这些文档,将其导出为PDF并将其保存到支持的Excel文件中(不会丢失内容)。

v24.2包含了用于在代码中管理单元嵌入图像的新API,嵌入的图像存储为单元格值。若要确定单元格是否有嵌入图像,请使用CellValueIsCellImage属性。使用CellValueImageValue属性获取单元格图像值作为OfficeImage对象(允许您检查图像格式或获取图像字节)。若要在单元格中插入图像,请将其分配给CellRangeValue属性。Spreadsheet Document API库支持以下对象类型作为图像源:
- Byte[]
- System.IO.Stream
- System.Drawing.Image
- DevExpress.Drawing.DXImage
- DevExpress.Office.Utils.OfficeImage
此外,v24.2实现了指定图像Alt Text(有意义的描述)值和将单元格图像标记为装饰性的选项,这些设置可以通过Cell.ImageInfo属性获得。
下面的代码片段演示了这个新的API:
C#
byte[] imageBytes = File.ReadAllBytes("image.png"); MemoryStream imageStream = new MemoryStream(imageBytes); DXImage dximage = DXImage.FromStream(imageStream); // Insert cell images from a byte array, stream and DXImage object worksheet.Cells["A1"].Value = imageBytes; worksheet.Cells["A2"].Value = imageStream; worksheet.Cells["A3"].Value = dximage; // Set image Alt Text values worksheet.Cells["A1"].ImageInfo.AlternativeText = "Image AltText"; // Mark the cell image as decorative if (worksheet.Cells["A2"].Value.IsCellImage) worksheet.Cells["A2"].ImageInfo.Decorative = true; // Save the cell image to a new file OfficeImage cellImage = worksheet.Cells["A1"].Value.ImageValue; if (cellImage.RawFormat == OfficeImageFormat.Png) { byte[] cellImageBytes = cellImage.GetImageBytes(cellImage.RawFormat); File.WriteAllBytes("saved_image.png", cellImageBytes); } // Remove cell image worksheet.Cells["A3"].ClearContents();
对齐和分布式垂直文本对齐
v24.2增加了对Spreadsheet单元格内的对齐和分布式垂直对齐类型的支持,具有这些对齐选项的Excel文件可以打印并导出为PDF。
您可以使用Cell.Alignment.Vertical属性在代码中指定垂直对齐方式,下面的代码片段指定了代码中的对齐方式:
C#
var workbook = new Workbook(); var worksheet = workbook.Worksheets[0]; Cell cellA1 = worksheet.Cells["A1"]; cellA1.Value = "Centered and Justified"; cellA1.Alignment.Horizontal = SpreadsheetHorizontalAlignment.Center; cellA1.Alignment.Vertical = SpreadsheetVerticalAlignment.Justify; workbook.ExportToPdf("Result.pdf");
更多产品资讯及授权,欢迎来电咨询:023-68661681
更多DevExpress线上公开课、中文教程资讯请上中文网获取
关于慧都科技
慧都科技是专注软件工程、智能制造、石油工程三大行业的数字化解决方案服务商。在软件工程领域,我们提供开发控件、研发管理、代码开发、部署运维等软件开发全链路所需的产品,提供正版授权采购、技术选型、个性化维保等服务,帮助客户实现技术合规、降本增效与风险可控。
慧都科技是DevExpress的中国区的合作伙伴,DevExpress作为用户界面领域的优秀产品,帮助企业高效构建权限管理、数据可视化(如网格/图表/仪表盘)、跨平台系统(WinForms/ASP.NET/.NET MAUI)及行业定制解决方案,加速开发并强化交互体验。
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果
转载请注明:文章转载自:DevExpress控件中文网 [https://www.devexpresscn.com/]
本文地址:https://www.devexpresscn.com/post/5113.html