Excel 电子表格是一种广泛使用的文件格式,可让用户以表格格式组织、分析和展示数据。通过编程与 Excel 进行交互能帮助开发人员实现自动化操作Excel文件并集成到软件应用程序中。在处理大型数据集、执行复杂计算或需要动态生成或更新数据时,这种功能尤其有用。在本文中,您将学习如何使用 Spire.XLS for .NET 在 C# 中创建、读取或更新 Excel 文档。
安装 Spire.XLS for .NET
首先,您需要将 Spire.XLS for .NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。DLL 文件可以从此链接下载,也可以通过 NuGet 安装。
PM> Install-Package Spire.XLS
C# 创建 Excel 文档
Spire.XLS for NET 提供了各种可用于创建和编辑 Excel 文档的类和接口。下表列举了一些本文中用到的重要类、属性和方法。
成员 | 描述 |
Workbook 类 | 表示 Excel 工作簿模型。 |
Workbook.Worksheets.Add() 方法 | 添加工作表到工作簿。 |
Workbook.SaveToFile() 方法 | 将工作簿保存为 Excel 文档。 |
Worksheet 类 | 表示工作簿中的工作表。 |
Worksheet.Range 属性 | 获取工作表中的特定单元格或单元格区域。 |
Worksheet.Range.Value 属性 | 获取或设置单元格值。 |
Worksheet.Rows 属性 | 获取工作表中行的集合。 |
Worksheet.InsertDataTable() 方法 | 将数据从 DataTable 导入工作表。 |
CellRange 类 | 表示工作表中的单元格或单元格区域。 |
以下是使用 Spire.XLS for .NET 创建一个新 Excel 文档的步骤:
- 创建一个 Workbook 类的对象。
- 使用 Workbook.Worksheets.Add() 方法添加工作表。
- 通过 Worksheet.Range.Value 属性向特定单元格写入数据。
- 使用 Workheet.InsertDataTable() 方法将数据表中的数据导入工作表。
- 使用 Workbook.SaveToFile() 方法保存 Excel 文档。
- C#
using Spire.Xls;
using System.Data;
namespace CreateExcelSpreadsheet
{
class Program
{
static void Main(string[] args)
{
//创建Workbook对象
Workbook wb = new Workbook();
//删除默认工作表
wb.Worksheets.Clear();
//添加一个工作表并命名
Worksheet sheet = wb.Worksheets.Add("报价");
//合并A1至G1单元格
sheet.Range["A1:G1"].Merge();
//在A1中写入数据并设置格式
sheet.Range["A1"].Value = "活动费用报价表";
sheet.Range["A1"].HorizontalAlignment = HorizontalAlignType.Center;
sheet.Range["A1"].VerticalAlignment = VerticalAlignType.Center;
sheet.Range["A1"].Style.Font.IsBold = true;
sheet.Range["A1"].Style.Font.Size = 13F;
//设置第一行的行高
sheet.Rows[0].RowHeight = 30F;
//创建一个DataTable并添加数据
DataTable dt = new DataTable();
dt.Columns.Add("编号");
dt.Columns.Add("项目");
dt.Columns.Add("规格说明");
dt.Columns.Add("时间");
dt.Columns.Add("数量");
dt.Columns.Add("单价");
dt.Columns.Add("价格");
dt.Rows.Add("1", "钢架舞台", "8*4米", "1场", "18平米", "35元/平米", "630.00");
dt.Rows.Add("2", "舞台围布", "20公分", "1场", "16米", "8元/米", "128.00");
dt.Rows.Add("3", "背景架", "8*4米", "1场", "12平米", "35元/平米", "420.00");
dt.Rows.Add("4", "条幅", "90公分宽", "永久", "10米", "10元/米", "100.00");
dt.Rows.Add("5", "地毯", "全新红地毯", "永久", "100米(暂定)", "7元/米", "700.00");
//将DataTable的数据导入工作表
sheet.InsertDataTable(dt, true, 2, 1, true);
//设置指定单元格区域的行高
sheet.Range["A2:G7"].RowHeight = 15F;
//设置列宽
sheet.Range["A2:G7"].Columns[1].ColumnWidth = 13F;
sheet.Range["A2:G7"].Columns[2].ColumnWidth = 12F;
sheet.Range["A2:G7"].Columns[4].ColumnWidth = 14F;
sheet.Range["A2:G7"].Columns[5].ColumnWidth = 12F;
//设置指定单元格区域的边框样式
sheet.Range["A2:G7"].BorderAround(LineStyleType.Medium);
sheet.Range["A2:G7"].BorderInside(LineStyleType.Thin);
sheet.Range["A2:G2"].BorderAround(LineStyleType.Medium);
sheet.Range["A2:G7"].Borders.KnownColor = ExcelColors.Black;
//保存为 .xlsx 文件
wb.SaveToFile("创建Excel文档.xlsx", FileFormat.Version2016);
}
}
}
C# 读取 Excel 数据
Worksheet.Range.Value 属性能以字符串形式返回单元格中的数字值或文本值。要获取整个 Excel 工作表或某个单元格区域中的数据,可循环遍历其中的单元格。以下是使用 Spire.XLS for .NET 读取 Excel 工作表中数据的步骤:
- 创建一个 Workbook 类的对象。
- 使用 Workbook.LoadFromFile() 方法加载 Excel 文档。
- 通过 Workbook.Worksheets[index] 属性获取特定工作表。
- 通过 Workbook.AllocatedRange 属性获取包含数据的单元格区域。
- 遍历行和列以获取单元格区域内的单元格,并通过 CellRange.Value 属性返回每个单元格的值。
- C#
using Spire.Xls;
using System;
namespace ReadExcelData
{
class Program
{
static void Main(string[] args)
{
//创建Workbook对象
Workbook wb = new Workbook();
//加载Excel文档
wb.LoadFromFile("创建Excel文档.xlsx");
//获取第一张工作表
Worksheet sheet = wb.Worksheets[0];
//获取包含数据的单元格区域
CellRange locatedRange = sheet.AllocatedRange;
//遍历各行
for (int i = 0; i < locatedRange.Rows.Length; i++)
{
//遍历各列
for (int j = 0; j < locatedRange.Rows[i].ColumnCount; j++)
{
//获取指定单元格的数据
Console.Write(locatedRange[i + 1, j + 1].Value + " ");
}
Console.WriteLine();
}
}
}
}
C# 更新 Excel 文档
要更改某个单元格的值,只需通过 Worksheet.Range.Value 属性为其重新赋值即可。具体步骤如下:
- 创建一个 Workbook 类的对象。
- 使用 Workbook.LoadFromFile() 方法加载 Excel 文档。
- 通过 Workbook.Worksheets[index] 属性获取特定工作表。
- 通过 Workheet.Range.Value 属性更改特定单元格的值。
- 使用 Workbook.SaveToFile() 方法保存 Excel 文件。
- C#
using Spire.Xls;
namespace UpdateCellValue
{
class Program
{
static void Main(string[] args)
{
//创建Workbook对象
Workbook wb = new Workbook();
//加载Excel文档
wb.LoadFromFile("创建Excel文档.xlsx");
//获取第一张工作表
Worksheet sheet = wb.Worksheets[0];
//更改指定单元格的值
sheet.Range["A1"].Value = "修改数据";
//保存结果文件
wb.SaveToFile("更新Excel.xlsx", ExcelVersion.Version2016);
}
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。