C#控制台程序:查找某一文件夹下所有带特定标记的Excel文件,并将其中带有star标志的单元格信息输出(Excel文件名、表名、行列号和单元格值,及ReadTimeout异常处理

您所在的位置:网站首页 excel文件读取异常 C#控制台程序:查找某一文件夹下所有带特定标记的Excel文件,并将其中带有star标志的单元格信息输出(Excel文件名、表名、行列号和单元格值,及ReadTimeout异常处理

C#控制台程序:查找某一文件夹下所有带特定标记的Excel文件,并将其中带有star标志的单元格信息输出(Excel文件名、表名、行列号和单元格值,及ReadTimeout异常处理

2023-06-01 06:31| 来源: 网络整理| 查看: 265

在开始程序前需要安装 ExcelDataReader和 ExcelDataReader.DataSet 的NuGet 包

using System; using System.IO; using System.Linq; using ExcelDataReader; class Program { static void Main(string[] args) { Console.Write("请输入文件夹路径:"); string folderPath = Console.ReadLine(); // 获取用户输入的文件夹路径 string[] files = Directory.GetFiles(folderPath, "*Test*.xlsx"); // 获取文件夹中名称中包含"Test"的Excel文件 foreach (string file in files) { using (var stream = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { using (var reader = ExcelReaderFactory.CreateReader(stream)) { do { while (reader.Read()) { // 在每行中查找"star"的单元格 for (int i = 0; i < reader.FieldCount; i++) { var cellValue = reader.GetValue(i)?.ToString(); if (!string.IsNullOrEmpty(cellValue) && cellValue.Contains("star")) { // 输出包含"star"的单元格信息 Console.WriteLine("文件: " + file); Console.WriteLine("Sheet名称: " + reader.Name); Console.WriteLine("行号: " + reader.Depth); Console.WriteLine("列号: " + i); Console.WriteLine("单元格内容: " + cellValue); Console.WriteLine(); } } } } while (reader.NextResult()); } } } Console.ReadLine(); } }

此时,当文件夹中有多个带“Test”的excel文件时,可能会出现超时的问题,为了解决这个问题,可以尝试使用 ExcelPackage 库来读取 Excel 文件,它对大型文件的处理更加稳定(需要安装EPPlus 包)。

修改后代码如下:

using System; using System.IO; using System.Linq; using OfficeOpenXml; class Program { static void Main(string[] args) { Console.Write("请输入文件夹路径:"); string folderPath = Console.ReadLine(); // 获取用户输入的文件夹路径 string[] files = Directory.GetFiles(folderPath, "*Test*.xlsx"); // 获取文件夹中名称中包含"Test"的Excel文件 foreach (string file in files) { using (var package = new ExcelPackage(new FileInfo(file))) { foreach (var worksheet in package.Workbook.Worksheets) { for (int row = 1; row Package Manager Console)。在控制台中运行以下命令来安装 EPPlus.License 包: Install-Package EPPlus.License 在代码中添加以下代码来设置许可证密钥: ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

主要是声明一下用于非商业用途,否则会出现OfficeOpenXml.LicenseException 异常。

经过这一步,程序只能读取 .xlsx 格式的文件,而无法读取 .xls 格式的文件,是因为 EPPlus 库只支持 .xlsx 格式。EPPlus 是一个专门用于处理 Office Open XML 格式的库,不支持旧版的二进制格式(.xls)。对于读取和操作 .xls 格式的文件,可以考虑使用 NPOI 库,它支持处理多种 Excel 文件格式,包括 .xls 和 .xlsx。

使用 NPOI 库来读取包含 "star" 的单元格的示例代码:

using System; using System.IO; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; class Program { static void Main(string[] args) { Console.Write("请输入文件夹路径:"); string folderPath = Console.ReadLine(); // 获取用户输入的文件夹路径 string[] files = Directory.GetFiles(folderPath, "*Test*.xls"); // 获取文件夹中名称中包含"Test"的Excel文件 foreach (string file in files) { using (var fs = new FileStream(file, FileMode.Open, FileAccess.Read)) { var workbook = new HSSFWorkbook(fs); // 使用 HSSFWorkbook 加载 .xls 文件 for (int sheetIndex = 0; sheetIndex < workbook.NumberOfSheets; sheetIndex++) { var sheet = workbook.GetSheetAt(sheetIndex); for (int rowIndex = 0; rowIndex


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3