Features
功能
Aspose.Cells FOSS for .NET 是一个纯托管的 .NET 库,用于创建、读取和修改 Excel XLSX 电子表格。入口点是 Workbook 类,提供对工作表、已定义名称以及保存/加载操作的访问。此页面概述了每个主要功能区域,并附有简短的代码示例。
工作簿 创建、加载 和 保存
使用 new Workbook() 创建一个新的工作簿。通过将文件路径传递给构造函数来加载现有的 XLSX 文件。使用 LoadOptions 启用容错加载。调用 Workbook.Save(path) 以持久化更改。
using Aspose.Cells_FOSS;
// New workbook
var wb = new Workbook();
wb.Worksheets[0].Cells["A1"].PutValue("Hello");
wb.Save("output.xlsx");
// Load with repair options
var opts = new LoadOptions { TryRepairPackage = true, TryRepairXml = true };
try
{
var loaded = new Workbook("input.xlsx", opts);
Console.WriteLine(loaded.Worksheets[0].Cells["A1"].StringValue);
}
catch (WorkbookLoadException ex)
{
Console.WriteLine("Load failed: " + ex.Message);
}单元格 数据 与 公式
使用 Cell.PutValue() 写入字符串、整数、小数、布尔值和 DateTime 值。设置 Cell.Formula 以分配兼容 Excel 的公式字符串。通过 Cell.StringValue 读取显示文本,通过 Cell.Value 读取原始值。
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
ws.Cells["A1"].PutValue("Qty");
ws.Cells["B1"].PutValue("Price");
ws.Cells["C1"].PutValue("Total");
ws.Cells["A2"].PutValue(10);
ws.Cells["B2"].PutValue(4.99m);
ws.Cells["C2"].Formula = "=A2*B2";
wb.Save("data.xlsx");
var loaded = new Workbook("data.xlsx");
Console.WriteLine(loaded.Worksheets[0].Cells["C2"].StringValue); // 49.9单元格 样式
检索并修改任何具有 Cell.GetStyle() 和 Cell.SetStyle() 的单元格的 Style 对象。Style 类提供 Font(粗体、斜体、大小、名称)、ForegroundColor、Pattern(类型为 FillPattern)、HorizontalAlignment(使用 HorizontalAlignmentType)以及通过 Borders 的边框控制。
using Aspose.Cells_FOSS;
var wb = new Workbook();
var cell = wb.Worksheets[0].Cells["A1"];
cell.PutValue("Styled Header");
var style = cell.GetStyle();
style.Font.Bold = true;
style.Font.Size = 14;
style.Pattern = FillPattern.Solid;
style.ForegroundColor = Color.FromArgb(255, 198, 239, 206);
style.HorizontalAlignment = HorizontalAlignmentType.Center;
cell.SetStyle(style);
wb.Save("styled.xlsx");条件格式
Worksheet.ConditionalFormattings 返回一个 ConditionalFormattingCollection。调用 Add() 创建规则集,然后 AddCondition() 使用 FormatConditionType 和 OperatorType 添加规则。支持的条件类型包括 CellValue、Expression、ColorScale、DataBar 和 IconSet。
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
for (var i = 0; i < 10; i++)
ws.Cells[i, 0].PutValue(i + 1);
var ruleSet = ws.ConditionalFormattings[ws.ConditionalFormattings.Add()];
ruleSet.AddArea(CellArea.CreateCellArea("A1", "A10"));
var rule = ruleSet[ruleSet.AddCondition(FormatConditionType.CellValue, OperatorType.Between, "3", "7")];
var ruleStyle = rule.Style;
ruleStyle.Pattern = FillPattern.Solid;
ruleStyle.ForegroundColor = Color.FromArgb(255, 255, 199, 206);
rule.Style = ruleStyle;
wb.Save("cf.xlsx");数据验证
Worksheet.Validations 返回一个 ValidationCollection。调用 Add(CellArea) 为单元格范围创建一个 Validation。使用 ValidationType(List、Decimal 或 Custom)设置 Type 属性。配置 Formula1、Formula2、Operator、InputTitle、InputMessage、ErrorTitle 和 ErrorMessage。
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
var listVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("A1", "A10"))];
listVal.Type = ValidationType.List;
listVal.Formula1 = "\"Open,Closed,Pending\"";
listVal.InCellDropDown = true;
var numVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("B1", "B10"))];
numVal.Type = ValidationType.Decimal;
numVal.Operator = OperatorType.Between;
numVal.Formula1 = "0";
numVal.Formula2 = "100";
numVal.ShowError = true;
wb.Save("validation.xlsx");自动筛选
Worksheet.AutoFilter 暴露了 AutoFilter 对象。设置 AutoFilter.Range 以定义标题行范围。访问 AutoFilter.FilterColumns(一个集合)并调用 Add(columnIndex) 在特定列上激活筛选。
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
ws.Cells["A1"].PutValue("Name");
ws.Cells["B1"].PutValue("Region");
ws.Cells["C1"].PutValue("Sales");
ws.Cells["A2"].PutValue("Alice"); ws.Cells["B2"].PutValue("North"); ws.Cells["C2"].PutValue(1200);
ws.AutoFilter.Range = "A1:C1";
ws.AutoFilter.FilterColumns.Add(1);
wb.Save("filter.xlsx");超链接和已定义名称
Worksheet.Hyperlinks 是一个 HyperlinkCollection。调用 Add() 插入外部 URL、内部单元格引用或 mailto 链接。设置 Hyperlink.TextToDisplay 和 Hyperlink.ScreenTip 以供用户界面文字使用。Workbook.DefinedNames 是一个 DefinedNameCollection;调用 Add(name, refersTo) 创建命名范围。
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
ws.Cells["A1"].PutValue("Docs");
var link = ws.Hyperlinks[ws.Hyperlinks.Add("A1", 1, 1, "https://docs.aspose.org/cells/net/")];
link.TextToDisplay = "Documentation";
wb.DefinedNames[wb.DefinedNames.Add("DataRange", "Sheet1!$A$1:$D$10")].Comment = "Main data range";
wb.Save("links.xlsx");页面设置
Worksheet.PageSetup 控制打印边距、方向、纸张大小、打印区域、标题行/列、页眉、页脚以及分页。使用 PageOrientationType 和 PaperSizeType 枚举。
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ps = wb.Worksheets[0].PageSetup;
ps.Orientation = PageOrientationType.Landscape;
ps.PaperSize = PaperSizeType.PaperA4;
ps.PrintArea = "$A$1:$H$50";
ps.CenterHeader = "My Report";
ps.CenterHorizontally = true;
ps.AddHorizontalPageBreak(25);
wb.Save("paged.xlsx");工作表管理
通过 WorksheetCollection 添加、重命名、隐藏和重新排序工作表。WorksheetCollection.Add(name) 返回新工作表的索引。使用 VisibilityType 设置 Worksheet.VisibilityType。使用 Cells.Merge() 合并单元格,并通过 Cells.Rows 和 Cells.Columns 控制行/列大小。
using Aspose.Cells_FOSS;
var wb = new Workbook();
wb.Worksheets[0].Name = "Summary";
var dataIdx = wb.Worksheets.Add("Data");
wb.Worksheets[dataIdx].VisibilityType = VisibilityType.Hidden;
wb.Worksheets.ActiveSheetName = "Summary";
var ws = wb.Worksheets["Summary"];
ws.Cells["A1"].PutValue("Title");
ws.Cells.Merge(0, 0, 1, 4);
ws.Cells.Rows[0].Height = 30d;
ws.Cells.Columns[0].Width = 20d;
wb.Save("worksheets.xlsx");技巧与最佳实践
- 在从用户提供的路径加载文件时,务必捕获
WorkbookLoadException。 - 使用
Cell.PutValue()时,请使用您打算存储的精确 .NET 类型——货币使用decimal,日期使用DateTime。 - 读取
Cell.StringValue以获取显示文本;当需要原始 .NET 对象时使用Cell.Value。 - 在所需的最宽范围上创建条件格式规则集——在大型工作表中,逐行规则的开销很大。
- 在最后调用一次
wb.Save(),而不是在每次写入单元格后调用。
常见问题
| 问题 | 原因 | 修复 |
|---|---|---|
打开时的 WorkbookLoadException | XLSX 中的 ZIP 结构损坏 | 设置 LoadOptions.TryRepairPackage = true |
公式返回空的 StringValue | 加载时公式未重新计算 | 在 Workbook.Save() 往返后访问 Cell.StringValue |
| 超链接地址显示原始 URL | TextToDisplay 未设置 | 在 Add() 之后设置 Hyperlink.TextToDisplay |
| 工作表标签不可见 | VisibilityType 设置为 Hidden | 设置 ws.VisibilityType = VisibilityType.Visible |
FAQ
对于 .NET,Aspose.Cells 的 FOSS 版是否需要 Microsoft Office?
不需要。该库是纯托管代码,不依赖于 Office、Excel 或 COM 互操作。
支持哪些文件格式?
XLSX(读取和写入)。本版本不支持 CSV、ODS、PDF 和二进制 XLS。
我可以在商业应用中使用此库吗?
是的。Aspose.Cells FOSS 在 MIT 许可证下发布,允许无限制的商业使用且无需版税。
最低的 .NET 版本是多少?
.NET 6.0 或更高版本。
如何为单元格应用背景颜色?
设置 style.Pattern = FillPattern.Solid 和 style.ForegroundColor = Color.FromArgb(...),然后调用 cell.SetStyle(style)。
API Reference 摘要
| 类 / 方法 | 描述 |
|---|---|
Workbook | 根类 — 创建、加载、保存工作簿 |
Workbook.Worksheets | 返回 WorksheetCollection |
Workbook.Save(path) | 将工作簿保存到磁盘 |
Workbook.DefinedNames | 命名范围集合 |
Worksheet.Cells | 单元格网格访问 |
Worksheet.ConditionalFormattings | 条件格式规则集 |
Worksheet.Validations | 数据验证规则 |
Worksheet.AutoFilter | 自动筛选配置 |
Worksheet.Hyperlinks | 超链接集合 |
Worksheet.PageSetup | 打印布局设置 |
Cell.PutValue() | 写入带类型的单元格数据 |
Cell.Formula | Excel 兼容的公式字符串 |
Cell.GetStyle() / Cell.SetStyle() | 读取/写入单元格样式 |
Style.Pattern | 填充模式(FillPattern 枚举) |
Style.HorizontalAlignment | 单元格对齐(HorizontalAlignmentType) |
LoadOptions | 容错文件加载的选项 |