Excel 是由 Microsoft 开发和发布的 电子表格 应用程序。它最常用于存储、组织和跟踪具有公式和函数的数据集。在某些情况下,我们可能需要在 Excel 文件中生成和添加条形码以嵌入特定信息。我们可以在 .NET 应用程序中以编程方式将机器可读的条形码图像添加到 XLSX 或 XLS 文件中。在本文中,我们将学习如何使用 C# 在 Excel 中生成条形码。
文章应涵盖以下主题:
在 Excel 中生成条形码的 C# API
要将条形码添加到 Excel 电子表格,我们将遵循两步过程。我们将使用 Aspose.Cells for .NET API 创建或加载 Excel 文件。 API 的 Workbook 类允许创建新的 Excel 工作簿或加载现有的 Excel 文件以进行进一步处理。此类的 Save() 方法将工作簿保存在给定的文件路径上。 API 还提供了一个 Worksheet 类来处理所有工作表级别的操作。
我们将使用 Aspose.BarCode for .NET API 生成条形码图像并将其添加到 Excel 工作表。它提供了BarcodeGenerator 类来生成指定EncodeType 的条码。此类的 Save() 方法将条形码图像保存为特定格式的流。它提供 BarCodeImageFormat 枚举来指定保存格式。该 API 还提供了 BarCodeReader 类来从图像中读取条形码。
PM> Install-Package Aspose.BarCode
PM> Install-Package Aspose.Cells
在 C# 中创建 Excel 电子表格并添加条形码
我们可以按照以下步骤创建一个新的 Excel 电子表格并将条形码图像添加到 Excel:
- 首先,使用 EncodeType 和文本创建 BarcodeGenerator 类的实例以编码为参数。
- 接下来,创建内存流对象的实例。
- 然后,调用 Save() 方法将条码图像保存到内存流中。
- 接下来,创建 Workbook 类的实例。
- 然后,将新的 Worksheet 添加到 Workbook 的 WorksheetCollection。
- 之后,将图像添加到 Worksheet 的 PictureCollection 中,并以流对象和图像位置作为参数。
- 最后,调用 Save() 方法。它将输出 XLSX 文件路径作为参数。
以下代码示例演示了如何使用 C# 创建新的 Excel 电子表格并添加条形码图像。
// 此代码示例演示如何将条码添加到新的 Excel 文件。
// 文档目录的路径。
string dataDir = @"C:\Files\BarCode\";
// 实例化线性条码对象,设置条码的代码文本和符号类型
BarcodeGenerator generator = new BarcodeGenerator(EncodeTypes.Code128, "1234567");
// 创建内存流并将条码图像保存到内存流
System.IO.Stream ms = new System.IO.MemoryStream();
generator.Save(ms, BarCodeImageFormat.Bmp);
// 实例化表示 Excel 文件的 Excel 类
Workbook workbook = new Workbook();
// 添加新工作表
Worksheet sheet = workbook.Worksheets.Add("MySheet");
// Add 方法采用以下参数:
// 左上行索引,左上行的索引。
// 左上列索引,左上列的索引。
// 图像文件。
sheet.Pictures.Add(5, 5, ms);
// 保存文件
workbook.Save(dataDir + "sample.xlsx");
在 C# 中将条码添加到现有的 Excel 文件
我们还可以按照以下步骤将条形码图像添加到现有 Excel 工作簿的任何工作表中:
- 首先,使用 EncodeType 和文本创建 BarcodeGenerator 类的实例以编码为参数。
- 接下来,创建内存流对象的实例。
- 然后,调用 Save() 方法将条码图像保存到内存流中。
- 接下来,使用 Workbook 类加载现有的 Excel 文件。
- 然后,通过索引访问工作表。
- 之后,使用 Add() 方法将图像添加到 PictureCollection,并将流对象和图像位置作为参数。
- 最后,调用 Save() 方法。它将输出 XLSX 文件路径作为参数。
以下代码示例演示如何使用 C# 将条形码图像添加到现有 Excel 文件。
// 此代码示例演示如何将条形码添加到现有 Excel 文件。
// 文档目录的路径。
string dataDir = @"C:\Files\BarCode\";
// 实例化线性条码对象,设置条码的代码文本和符号类型
BarcodeGenerator generator = new BarcodeGenerator(EncodeTypes.Code128, "1234567");
// 创建内存流并将条码图像保存到内存流
System.IO.Stream ms = new System.IO.MemoryStream();
generator.Save(ms, BarCodeImageFormat.Bmp);
// 实例化表示 Excel 文件的 Excel 类
Workbook workbook = new Workbook(dataDir + "sample.xlsx");
// 通过索引访问工作表
Worksheet sheet = workbook.Worksheets[0];
// Add 方法采用以下参数:
// 左上行索引,左上行的索引。
// 左上列索引,左上列的索引。
// 图像文件。
sheet.Pictures.Add(5, 5, ms);
// 保存文件
workbook.Save(dataDir + "sample_out.xlsx");
在 C# 中将 QR 码添加到 Excel 文件
同样,我们也可以按照前面提到的步骤在 Excel 文件中添加二维码。但是,我们只需在第一步中将 EncodeType 设置为 QR。我们可能还需要在第 6 步中调整图像位置。
以下代码示例演示了如何使用 C# 将 QR 码添加到 Excel 文件。
// 此代码示例演示如何将 QR 码添加到现有 Excel 文件。
// 文档目录的路径。
string dataDir = @"C:\Files\BarCode\";
// 实例化线性条码对象,设置条码的代码文本和符号类型
BarcodeGenerator generator = new BarcodeGenerator(EncodeTypes.QR, "1234567");
// 创建内存流并将条码图像保存到内存流
System.IO.Stream ms = new System.IO.MemoryStream();
generator.Save(ms, BarCodeImageFormat.Bmp);
// 实例化表示 Excel 文件的 Excel 类
Workbook workbook = new Workbook(dataDir + "sample.xlsx");
// 通过索引访问工作表
Worksheet sheet = workbook.Worksheets[0];
// Add 方法采用以下参数:
// 左上行索引,左上行的索引。
// 左上列索引,左上列的索引。
// 图像文件。
sheet.Pictures.Add(5, 5, ms);
// 保存文件
workbook.Save(dataDir + "sample_out_qr.xlsx");
使用 C# 从 Excel 文件中读取条形码
我们可以按照下面给出的步骤识别嵌入在 Excel 文件的任何工作表上的任何条形码图像:
- 首先,使用 Workbook 类加载现有的 Excel 文件。
- 然后,通过索引访问工作表。
- 接下来,将图像保存为循环从 PictureCollection 流式传输。
- 接下来,使用图像流和 DecodeType 作为参数创建 BarCodeReader 类的实例。
- 之后调用ReadBarCodes()方法获取BarCodeResult对象。
- 最后,显示条码信息。
以下代码示例演示如何使用 C# 从 Excel 文件中读取条形码图像。
// 此代码示例演示如何从 Excel 文件中读取条形码。
// 文档目录的路径。
string dataDir = @"C:\Files\BarCode\";
// 实例化表示 Excel 文件的 Excel 类
Workbook workbook = new Workbook(dataDir + "sample_out.xlsx");
Worksheet sheet = workbook.Worksheets[0];
// 保存图像以循环播放
foreach(var img in sheet.Pictures)
{
// 将图像保存到流
MemoryStream imageStream = new MemoryStream();
img.ToImage(imageStream, new Aspose.Cells.Rendering.ImageOrPrintOptions());
// 从上面的图像流中识别条形码
using (BarCodeReader reader = new BarCodeReader(imageStream, DecodeType.Code128))
{
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.WriteLine("Codetext found: " + result.CodeType);
Console.WriteLine("Symbology: " + result.CodeText);
}
}
}
上述代码示例应产生以下输出。
Codetext found: Code128
Symbology: 1234567
获得免费许可证
您可以 获得免费的临时许可证 试用该库而不受评估限制。
结论
在本文中,我们学习了如何:
- 以编程方式创建 Excel 工作簿;
- 在 Excel 工作簿中添加新工作表;
- 生成条形码图像并将其添加到 Excel 电子表格;
- 从 Excel 文件中读取条形码图像。
此外,您可以使用 文档 了解更多关于 Aspose.BarCode for .NET API 的信息。如有任何歧义,请随时在 论坛 上与我们联系。