分享

C#常见技能_Excel文件读写

 吴敬锐 2023-08-31 发布于广东

大家好,我是华山自控编程朱老师

前几天一个学员在学习C#与excel交互时,也不知道excel可以用来做什么 。下面我们就详细讲讲C# 和excel交互的相关知识。

C#是一种面向对象的编程语言,它的应用范围非常广泛,包括Windows桌面应用程序、Web应用程序、游戏开发等。与此同时,Excel也是一款非常流行的办公软件,它可以帮助我们轻松地管理和处理各种数据。在实际开发中,我们经常需要将C#与Excel进行交互,以实现数据的导入、导出、处理等功能。本文将介绍如何使用C#与Excel进行文件读写交互。

一、读取Excel文件

在C#中,我们可以使用
Microsoft.Office.Interop.Excel命名空间提供的类来读取Excel文件。下面是一个简单的示例:

using Microsoft.Office.Interop.Excel;

public void ReadExcelFile(string filePath)

{

// 创建Excel对象

Application excel = new Application();

Workbook workbook = excel.Workbooks.Open(filePath);

// 获取第一个工作表

Worksheet worksheet = workbook.Sheets[1];

// 获取单元格值

Range range = worksheet.UsedRange;

int rowCount = range.Rows.Count;

int colCount = range.Columns.Count;

for (int i = 1; i <= rowCount; i++)

{

for (int j = 1; j <= colCount; j++)

{

string cellValue = (range.Cells[i, j] as Range).Value.ToString();

Console.Write(cellValue + '\t');

}

Console.WriteLine();

}

// 关闭Excel对象

workbook.Close();

excel.Quit();

}

在上面的代码中,我们首先创建了一个Application对象,然后使用Workbooks.Open方法打开Excel文件。接着,我们获取了第一个工作表,并使用UsedRange属性获取了单元格的值。最后,我们遍历了所有单元格,并输出了它们的值。最后,我们关闭了Excel对象。

二、写入Excel文件

除了读取Excel文件外,我们还可以使用C#向Excel文件中写入数据。下面是一个简单的示例:

using Microsoft.Office.Interop.Excel;

public void WriteExcelFile(string filePath)

{

// 创建Excel对象

Application excel = new Application();

Workbook workbook = excel.Workbooks.Add();

Worksheet worksheet = workbook.Sheets[1];

// 写入数据

worksheet.Cells[1, 1] = '姓名';

worksheet.Cells[1, 2] = '年龄';

worksheet.Cells[2, 1] = '张三';

worksheet.Cells[2, 2] = '25';

worksheet.Cells[3, 1] = '李四';

worksheet.Cells[3, 2] = '30';

// 保存Excel文件

workbook.SaveAs(filePath);

// 关闭Excel对象

workbook.Close();

excel.Quit();

}

在上面的代码中,我们首先创建了一个Application对象,然后使用Workbooks.Add方法创建了一个新的Excel文件。接着,我们获取了第一个工作表,并使用Cells属性向单元格中写入数据。最后,我们使用SaveAs方法保存了Excel文件,并关闭了Excel对象。

三、使用第三方库读写Excel文件

除了使用
Microsoft.Office.Interop.Excel命名空间提供的类外,我们还可以使用一些第三方库来读写Excel文件。其中比较常用的是EPPlus和NPOI。

EPPlus是一个开源的.NET库,它可以帮助我们轻松地读写Excel文件。下面是一个简单的示例:

using OfficeOpenXml;

public void ReadExcelFile(string filePath)

{

// 创建Excel对象

using (ExcelPackage package = new ExcelPackage(new FileInfo(filePath)))

{

// 获取第一个工作表

ExcelWorksheet worksheet = package.Workbook.Worksheets[1];

// 获取单元格值

int rowCount = worksheet.Dimension.Rows;

int colCount = worksheet.Dimension.Columns;

for (int i = 1; i <= rowCount; i++)

{

for (int j = 1; j <= colCount; j++)

{

string cellValue = worksheet.Cells[i, j].Value.ToString();

Console.Write(cellValue + '\t');

}

Console.WriteLine();

}

}

}

public void WriteExcelFile(string filePath)

{

// 创建Excel对象

using (ExcelPackage package = new ExcelPackage(new FileInfo(filePath)))

{

// 获取第一个工作表

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';

worksheet.Cells[3, 1].Value = '李四';

worksheet.Cells[3, 2].Value = '30';

// 保存Excel文件

package.Save();

}

}

在上面的代码中,我们使用了EPPlus库来读写Excel文件。在读取Excel文件时,我们首先创建了一个ExcelPackage对象,并使用FileInfo构造函数指定了Excel文件路径。接着,我们获取了第一个工作表,并使用Dimension属性获取了单元格的行数和列数。最后,我们遍历了所有单元格,并输出了它们的值。

在写入Excel文件时,我们也首先创建了一个ExcelPackage对象,并使用Workbook.Worksheets.Add方法创建了一个新的工作表。然后,我们使用Cells属性向单元格中写入数据,并使用Save方法保存了Excel文件。

NPOI是另一个流行的.NET库,它也可以帮助我们读写Excel文件。下面是一个简单的示例:

using NPOI.SS.UserModel;

using NPOI.XSSF.UserModel;

public void ReadExcelFile(string filePath)

{

// 创建Excel对象

using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))

{

IWorkbook workbook = new XSSFWorkbook(fileStream);

ISheet worksheet = workbook.GetSheetAt(0);

// 获取单元格值

int rowCount = worksheet.LastRowNum + 1;

int colCount = worksheet.GetRow(0).LastCellNum;

for (int i = 0; i < rowCount; i++)

{

IRow row = worksheet.GetRow(i);

for (int j = 0; j < colCount; j++)

{

string cellValue = row.GetCell(j).ToString();

Console.Write(cellValue + '\t');

}

Console.WriteLine();

}

}

}

public void WriteExcelFile(string filePath)

{

// 创建Excel对象

IWorkbook workbook = new XSSFWorkbook();

ISheet worksheet = workbook.CreateSheet('Sheet1');

// 写入数据

IRow row1 = worksheet.CreateRow(0);

row1.CreateCell(0).SetCellValue('姓名');

row1.CreateCell(1).SetCellValue('年龄');

IRow row2 = worksheet.CreateRow(1);

row2.CreateCell(0).SetCellValue('张三');

row2.CreateCell(1).SetCellValue('25');

IRow row3 = worksheet.CreateRow(2);

row3.CreateCell(0).SetCellValue('李四');

row3.CreateCell(1).SetCellValue('30');

// 保存Excel文件

using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write))

{

workbook.Write(fileStream);

fileStream.Close();

workbook.Close();

}

}

在上面的代码中,我们使用了NPOI库来读写Excel文件。在读取Excel文件时,我们首先使用FileStream对象打开了Excel文件,并创建了一个XSSFWorkbook对象。接着,我们获取了第一个工作表,并使用LastRowNum和LastCellNum属性获取了单元格的行数和列数。最后,我们遍历了所有单元格,并输出了它们的值。

在写入Excel文件时,我们首先创建了一个XSSFWorkbook对象,并使用CreateSheet方法创建了一个新的工作表。然后,我们使用CreateRow和CreateCell方法向单元格中写入数据,并使用FileStream对象保存了Excel文件。

部分项目图片:

C#常见技能_Excel文件读写

总结

本文介绍了如何使用C#与Excel文件进行读写交互。我们可以使用
Microsoft.Office.Interop.Excel命名空间提供的类,也可以使用第三方库EPPlus和NPOI来读写Excel文件。无论是使用哪种方法,我们都需要注意Excel文件的格式和版本,以确保读写操作的正确性。。。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多