C# 实现Excel文件导入
- 2026-09-22 21:03:36
C# 实现Excel文件导入



数据导入通常是提升用户操作软件的有效手段。在实现导入的功能常常会使用一些第三方库(需要安装)来简化代码。C# 提供了很多流行的第三方库来处理Excel文件,我建议用ClosedXML或者NPOI,因为是免费的。
不管用哪种方式,逻辑都是读取Excel文件的行和列数据。

使用ClosedXML处理Excel文件
在项目中安装ClosedXML,可以通过控制台命令安装,也可以通过NuGet包管理器安装。

using ClosedXML.Excel;using System;using System.Linq;namespace A_ExcelJonb{internal class Program{staticvoidMain(string[] args){// 要导入的Excel文件路径var filePath = @"D:\Demo.xlsx";using (var workbook = new XLWorkbook(filePath)){// 获取第一个工作表var worksheet = workbook.Worksheets.First();Console.WriteLine($"工作表有 {worksheet.LastRowUsed().RowNumber()}行,{worksheet.LastColumnUsed().ColumnNumber()}列");//工作表格是行列式,需要两个循环// 从第工作表第一行开始读取for (int row = worksheet.FirstRowUsed().RowNumber(); row <= worksheet.LastRowUsed().RowNumber(); row++){// 从第工作表第一列开始读取for (int col = worksheet.FirstColumnUsed().ColumnNumber(); col <= worksheet.LastColumnUsed().ColumnNumber(); col++){Console.Write(worksheet.Cell(row, col).Value + "\t");}Console.WriteLine();}}Console.ReadKey();}}}
输出:

使用NPOI处理Excel文件
同上面一样的操作在项目中安装NPOI,可以通过控制台命令安装,也可以通过NuGet包管理器安装。

using NPOI.SS.UserModel;using NPOI.XSSF.UserModel;using System;using System.IO;namespace A_ExcelJonb{internal class Program{staticvoidMain(string[] args){// 要导入的Excel文件路径var filePath = @"D:\Demo.xlsx";// 使用FileStream读取Excel文件using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read)){// 创建XSSFWorkbook对象来读取XLSX格式的Excel文件IWorkbook workbook = new XSSFWorkbook(file);// 获取第一个工作表(sheet)ISheet sheet = workbook.GetSheetAt(0);// 获取总行数int rowCount = sheet.LastRowNum + 1;try{// 遍历行和列来读取数据for (int row = 0; row < rowCount; row++){if (sheet.GetRow(row) != null){// 获取当前行IRow currentRow = sheet.GetRow(row);// 获取总列数int cellCount = currentRow.LastCellNum;// 遍历列来读取数据for (int col = 0; col < cellCount; col++){// 获取当前单元格ICell cell = currentRow.GetCell(col);if (cell != null){// 获取单元格内容,根据类型转换(这里以字符串为例)string cellValue = cell.ToString();Console.Write(cellValue + "\t"); // 打印单元格内容,用Tab分隔列,可根据需要修改格式化输出方式}}Console.WriteLine(); // 换行,准备输出下一行数据}}}catch (Exception ex){throw ex;}}Console.ReadKey();}}}
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。