技术文摘
C# 中用于 Excel 数据处理的三款热门开源类库推荐与实例代码解析
2024-12-30 17:47:47 小编
C# 中用于 Excel 数据处理的三款热门开源类库推荐与实例代码解析
在 C# 编程中,处理 Excel 数据是一项常见的任务。为了提高开发效率和代码质量,许多开发者选择使用开源类库。以下为您推荐三款热门的用于 Excel 数据处理的 C# 开源类库,并通过实例代码进行解析。
一、NPOI
NPOI 是一个非常强大且广泛使用的 C# 开源类库,它可以读写 Excel 的各种格式,包括.xls 和.xlsx。
以下是一个简单的示例代码,用于读取 Excel 中的数据:
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
class Program
{
static void Main()
{
using (FileStream file = new FileStream("your_file.xlsx", FileMode.Open, FileAccess.Read))
{
IWorkbook workbook = new XSSFWorkbook(file);
ISheet sheet = workbook.GetSheetAt(0);
for (int row = 0; row <= sheet.LastRowNum; row++)
{
IRow currentRow = sheet.GetRow(row);
if (currentRow!= null)
{
for (int col = 0; col < currentRow.LastCellNum; col++)
{
ICell cell = currentRow.GetCell(col);
if (cell!= null)
{
Console.Write(cell.ToString() + " ");
}
}
Console.WriteLine();
}
}
}
}
}
二、EPPlus
EPPlus 也是一个出色的开源类库,支持生成和操作 Excel 文件。
以下是使用 EPPlus 生成 Excel 文件的示例代码:
using OfficeOpenXml;
class Program
{
static void Main()
{
using (ExcelPackage package = new ExcelPackage())
{
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sheet1");
worksheet.Cells[1, 1].Value = "姓名";
worksheet.Cells[1, 2].Value = "年龄";
worksheet.Cells[2, 1].Value = "张三";
worksheet.Cells[2, 2].Value = 25;
package.SaveAs(new FileInfo("output.xlsx"));
}
}
}
三、ClosedXML
ClosedXML 提供了简单直观的 API 来处理 Excel 文档。
例如,读取 Excel 数据的代码如下:
using ClosedXML.Excel;
class Program
{
static void Main()
{
using (var workbook = new XLWorkbook("your_file.xlsx"))
{
var worksheet = workbook.Worksheet(1);
for (int row = 1; row <= worksheet.RowsUsed().Count(); row++)
{
for (int col = 1; col <= worksheet.ColumnsUsed().Count(); col++)
{
Console.Write(worksheet.Cell(row, col).Value + " ");
}
Console.WriteLine();
}
}
}
}
这三款开源类库各有特点,您可以根据项目的具体需求选择合适的类库来高效地处理 Excel 数据。通过上述实例代码,希望能帮助您快速上手并在实际开发中灵活运用。
- Java开发者的出路在哪?Go语言能否替代JavaEE
- 用Python统计输入内容中数字和字母数量(排除汉字)的方法
- 无 sudo 权限服务器上安装与使用 TensorFlow 的方法
- Beego Nginx反向代理与HTTPS配置后图片资源无法访问的问题排查方法
- 没有 su 权限时服务器怎样安装 TensorFlow
- Go 中如何创建包含不同数据类型元素的数组
- Java 转 Go 后有哪些职业发展方向
- 与后端工程师沟通接口设计避免冗余参数的方法
- beego nginx反向代理与HTTPS配置后图片无法访问,是否域名配置有误
- PHP 中 session_start() 函数:操作会话数组前为何必须调用它
- Discuz!能否实现用户组互动与积分答题功能
- Go接口能否声明属性
- PHP 在线发送邮件问题如何解决
- GORM连接SQL Server数据库时密码含@符号的解决方法
- Django打造的书签管理软件