介绍
Aspose.Cells FOSS for .NET 是一个纯托管代码、MIT 许可证的库,用于读取、写入,
以及操作 Excel .xlsx 工作簿,无需任何 Microsoft Office 依赖。安装为Aspose.Cells_FOSS NuGet 包,它可以集成到任何 .NET 项目中——控制台应用、Web
API、后台工作者和无服务器函数。
本文提供了公共 API 的功能逐项演练,展示了可能的操作以及如何在 C# 代码中调用每项功能。
功能概述
工作簿和工作表的生命周期
每个操作的入口点是 Workbook 类。使用 new Workbook() 从头构建,或使用 new Workbook(filePath) 或 new Workbook(stream) 加载现有的 .xlsx。通过 Workbook.Worksheets 导航工作表,设置 Worksheet.Name 和 Worksheet.VisibilityType,并使用 Workbook.Save() 持久化。对于损坏的文件,传入带有 TryRepairPackage = true 和 TryRepairXml = true 的 LoadOptions 实例。
using Aspose.Cells_FOSS;
var options = new LoadOptions
{
TryRepairPackage = true,
TryRepairXml = true,
};
try
{
_ = new Workbook("sample.xlsx", options);
}
catch (WorkbookLoadException exception)
{
Console.WriteLine(exception.Message);
}
单元格数据和公式
使用 Cell.PutValue() 将值写入单元格 — 重载接受 string、int、double,
decimal、bool 和 DateTime。通过 Cell.Value、Cell.StringValue 和
Cell.Formula 读取返回的值。使用 Cell.Formula 属性设置 Excel 公式;公式字符串在保存时会被保留,并在重新加载周期中仍然有效。
using Aspose.Cells_FOSS;
var workbook = new Workbook();
var sheet = workbook.Worksheets[0];
sheet.Cells["A1"].PutValue("Hello");
sheet.Cells["B1"].PutValue(123);
sheet.Cells["C1"].Formula = "=B1*2";
workbook.Save("hello.xlsx");
var loaded = new Workbook("hello.xlsx");
Console.WriteLine(loaded.Worksheets[0].Cells["C1"].Formula);
Console.WriteLine(loaded.Worksheets[0].Cells["C1"].StringValue);
单元格样式
应用 Style 对象来控制字体、填充、边框、数字格式和对齐方式。
使用 Cell.GetStyle() 检索当前样式,进行修改,然后使用Cell.SetStyle() 提交。对于背景填充,设置 Style.Pattern = FillPattern.Solid 并将一个Color 分配给 Style.ForegroundColor。使用 Cells.Merge() 跨越单元格范围。
using Aspose.Cells_FOSS;
var workbook = new Workbook();
var cell = workbook.Worksheets[0].Cells["A1"];
cell.PutValue("Styled");
var style = cell.GetStyle();
style.Font.Bold = true;
style.Pattern = FillPattern.Solid;
style.ForegroundColor = Color.FromArgb(255, 241, 196, 15);
cell.SetStyle(style);
Console.WriteLine($"{cell.StringValue} / Bold={cell.GetStyle().Font.Bold}");
条件格式
通过 ConditionalFormattingCollection 将条件格式规则附加到单元格范围。
规则支持 FormatConditionType.CellValue、Expression、ColorScale、DataBar,和IconSet。使用 OperatorType 指定比较运算符(Between、Equal、GreaterThan 等),为匹配的单元格分配 Style,并配置每个规则的优先级和
满足即停止的行为。
using Aspose.Cells_FOSS;
var workbook = new Workbook();
var sheet = workbook.Worksheets[0];
var cfCollection = sheet.ConditionalFormattings[sheet.ConditionalFormattings.Add()];
cfCollection.AddArea(CellArea.CreateCellArea("A1", "A10"));
var rule = cfCollection[cfCollection.AddCondition(
FormatConditionType.CellValue, OperatorType.Between, "3", "7")];
var style = rule.Style;
style.Pattern = FillPattern.Solid;
style.ForegroundColor = Color.FromArgb(255, 255, 199, 206);
style.Font.Bold = true;
rule.Style = style;
workbook.Save("conditional-formatting.xlsx");
数据验证
使用 Worksheet.Validations 为单元格添加输入约束。支持的验证类型包括 ValidationType.List、Decimal、Custom 等。配置输入提示(InputTitle、InputMessage)和错误消息(ErrorTitle、ErrorMessage、ValidationAlertType)。使用 CellArea.CreateCellArea() 定义验证范围,并使用 Validation.AddArea() 将规则应用于其他范围。
using Aspose.Cells_FOSS;
var workbook = new Workbook();
var sheet = workbook.Worksheets[0];
sheet.Name = "Validation Sheet";
var listIdx = sheet.Validations.Add(CellArea.CreateCellArea("A1", "A3"));
var listVal = sheet.Validations[listIdx];
listVal.Type = ValidationType.List;
listVal.Formula1 = "\"Open,Closed\"";
listVal.IgnoreBlank = true;
listVal.InCellDropDown = true;
listVal.ShowInput = true;
listVal.InputTitle = "Status";
listVal.InputMessage = "Pick a status";
listVal.ShowError = true;
listVal.ErrorTitle = "Invalid";
listVal.ErrorMessage = "Choose from the list";
workbook.Save("validations-sample.xlsx");
页面设置和打印选项
通过 Worksheet.PageSetup 配置打印布局。设置边距 (LeftMarginInch, RightMarginInch, TopMarginInch, BottomMarginInch)、Orientation、PaperSize、比例、打印区域、标题行和列、页眉和页脚以及分页。所有设置在保存‑加载往返后仍然有效。
using Aspose.Cells_FOSS;
var workbook = new Workbook();
var sheet = workbook.Worksheets[0];
sheet.Name = "Print Sheet";
sheet.Cells["A1"].PutValue("Title");
var pageSetup = sheet.PageSetup;
pageSetup.Orientation = PageOrientationType.Landscape;
pageSetup.PaperSize = PaperSizeType.PaperA4;
pageSetup.PrintArea = "$A$1:$C$10";
pageSetup.PrintTitleRows = "$1:$2";
pageSetup.LeftHeader = "Left Header";
pageSetup.CenterFooter = "Center Footer";
pageSetup.PrintGridlines = true;
pageSetup.CenterHorizontally = true;
workbook.Save("page-setup-sample.xlsx");
工作表设置和保护
使用 Worksheet.ShowGridlines、ShowRowColumnHeaders、ShowZeros、RightToLeft、Zoom 和 TabColor 控制每个工作表的显示。使用 Worksheet.Protect() 保护工作表,
并配置细粒度的 Protection 标志(Objects、FormatCells、InsertRows、AutoFilter、SelectLockedCells)。通过 Cells.Rows、Cells.Columns 和 Cells.Merge() 管理行高、列宽、隐藏的行/列以及合并区域。
using Aspose.Cells_FOSS;
var workbook = new Workbook();
var layout = workbook.Worksheets[0];
layout.Name = "Layout";
layout.VisibilityType = VisibilityType.Hidden;
layout.TabColor = Color.FromArgb(255, 34, 68, 102);
layout.ShowGridlines = false;
layout.Zoom = 85;
layout.Protect();
layout.Protection.FormatCells = true;
layout.Protection.InsertRows = true;
layout.Cells["A1"].PutValue("Merged");
layout.Cells.Rows[1].Height = 22.5d;
layout.Cells.Columns[0].Width = 18.25d;
layout.Cells.Merge(0, 0, 2, 2);
workbook.Save("worksheet-settings-sample.xlsx");
超链接和命名范围
通过 HyperlinkCollection.Add() 添加外部、内部和 mailto: 超链接。设置Hyperlink.TextToDisplay 和 Hyperlink.ScreenTip 作为用户可见标签。使用DefinedNameCollection.Add() 在工作簿或工作表范围内定义命名范围——命名范围充当
稳定的公式锚点和图表数据源,能够在文件重新加载后仍然有效。
using Aspose.Cells_FOSS;
var workbook = new Workbook();
var sheet = workbook.Worksheets[0];
sheet.Cells["A1"].PutValue("Docs");
var link = sheet.Hyperlinks[sheet.Hyperlinks.Add("A1", 1, 1, "https://example.com/docs")];
link.TextToDisplay = "Docs";
link.ScreenTip = "External documentation";
var name = workbook.DefinedNames[workbook.DefinedNames.Add("PrimaryRange", "='Sheet1'!$A$1:$D$5")];
name.Comment = "Primary data range";
workbook.Save("hyperlinks-names.xlsx");
Console.WriteLine("Hyperlinks: " + sheet.Hyperlinks.Count);
Console.WriteLine("Defined names: " + workbook.DefinedNames.Count);
快速入门
dotnet add package Aspose.Cells_FOSS
using Aspose.Cells_FOSS;
var workbook = new Workbook();
var sheet = workbook.Worksheets[0];
sheet.Cells["A1"].PutValue("Hello");
sheet.Cells["B1"].PutValue(123);
sheet.Cells["C1"].Formula = "=B1*2";
workbook.Save("output.xlsx");
支持的格式
| 格式 | 扩展名 | 读取 | 写入 |
|---|---|---|---|
| Xlsx | .xlsx | ✓ | ✓ |
| 自动 | (多种) | ✓ | — |
开源与许可
Aspose.Cells FOSS for .NET 在 MIT 许可证下发布,并通过 NuGet 以Aspose.Cells_FOSS 的形式分发。它同样适用于开源和商业项目。