大家好,我是华山自控编程朱老师
前几天一个学员在学习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文件进行读写交互。我们可以使用Microsoft.Office.Interop.Excel命名空间提供的类,也可以使用第三方库EPPlus和NPOI来读写Excel文件。无论是使用哪种方法,我们都需要注意Excel文件的格式和版本,以确保读写操作的正确性。。。
文章如果对你有用,麻烦点赞,评论~
最近很多小伙伴找我,说想要一些学习资料,然后我根据自己从业二十年经验,精心整理了一份「上位机编程入门到高级1教程+工具包」,点个关注,限时分享给大家,以下是领取入口:免费领,自动化控制编程入门到开挂学习路径(附教程和软件工具)_华山培训教程下载_华山自控编程的博客-CSDN博客大家好,我是华山自控编程的朱老师,很多同学都在讨论上位机运动控制卡与机器视觉编程的问题,今天写了干货,希望可以帮助到你们https://blog.csdn.net/hspx668/article/details/126586129?spm=1001.2014.3001.5501