遍历当前文件夹C:\\Users\\48600\\work\\WebProject\\Develop 下的每个文件夹和他们的子文件夹下以.xaml.cs结尾的文件,截取ShowInfoMessageBox所在的行,然后截取当前行中()中“”中的内容,去重并导出excel
时间: 2024-09-14 08:03:41 浏览: 37
WPF .NET6.0 C# 遍历指定文件夹中的所有图片随机显示 可暂停可调节滚动速度
遍历指定目录及其子目录,并查找所有以.xaml.cs结尾的文件,找到包含"ShowInfoMessageBox"函数的地方,提取其中括号内字符串内容,去除重复项后导出到Excel的操作需要编写一些脚本语言,例如使用C#和EPPlus库来处理。以下是大致步骤:
1. **目录遍历**:使用`Directory.GetFiles`和`Directory.GetDirectories`方法从根路径"C:\\Users\\48600\\work\\WebProject\\Develop"开始递归查找。
```csharp
string rootPath = @"C:\Users\48600\work\WebProject\Develop";
string pattern = "*.xaml.cs"; // 文件模式
List<string> filePaths = Directory.GetFiles(rootPath, pattern)
.Concat(Directory.GetDirectories(rootPath).SelectMany(dir => Directory.GetFiles(dir, pattern)))
.ToList();
```
2. **解析文件**:对于每个找到的文件,读取其内容,搜索特定的函数名"ShowInfoMessageBox"及其括号内的信息。
```csharp
Regex regex = new Regex(@"(.*?)" + @"\bShowInfoMessageBox\b" + @"\((.*?)\)"); // 正则表达式匹配
List<string> uniqueStrings = new List<string>();
foreach (var file in filePaths)
{
string content = File.ReadAllText(file);
Match match = regex.Match(content);
if (match.Success)
{
string substring = match.Groups[1].Value;
uniqueStrings.Add(substring.Trim());
}
}
```
3. **去重**:使用HashSet存储已有的字符串以快速检查是否存在重复。
```csharp
HashSet<string> uniqueSet = new HashSet<string>(uniqueStrings);
uniqueStrings.Clear();
uniqueStrings.AddRange(uniqueSet); // 添加唯一值
```
4. **导出Excel**:使用EPPlus库将数据写入新的Excel工作表。
```csharp
using OfficeOpenXml;
...
// 创建一个新的Excel工作簿
using (ExcelPackage excel = new ExcelPackage())
{
ExcelWorksheet worksheet = excel.Workbook.Worksheets.Add("Output");
// 写入数据
int row = 1;
foreach (string value in uniqueStrings)
{
worksheet.Cells[row++, 1].Value = value;
}
// 导出到文件
FileInfo outputFile = new FileInfo(@"C:\Users\48600\work\WebProject\Develop\output.xlsx");
excel.SaveAs(outputFile);
}
```
**
阅读全文