728x90
특정 폴더 또는 특정 폴더를 포함한 서브 폴더에 있는 모든 엑셀 파일에서 찾는 문자가 들어 있는 엑셀 파일만 찾는 C# 프로그램 소스 입니다.
- xls, xlsx 모두 검색 가능
<실행 화면>
<C# 프로그램 소스>
using Microsoft.Office.Interop.Excel;
string findStr = "검색어"; //찾고자 하는 검색어
string sDirPath = System.IO.Directory.GetCurrentDirectory(); //찾을 파일이 있는 폴더 지정
DirectoryInfo info = new DirectoryInfo(sDirPath);
if (info.Exists)
{
//Current디렉토리에서 찾기
GetFiles(info);
//서브디렉토리까지 확장해서 검색할 경우
GetDirectories(info.GetDirectories());
}
private void GetFiles(DirectoryInfo sDirPath)
{
FileInfo[] MyFilesList = sDirPath.GetFiles();
foreach (FileInfo file in MyFilesList)
{
string filename = file.FullName;
object False = false;
object True = true;
_Application excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
try
{
Workbook wb = excel.Workbooks._Open(filename, False, False, Missing.Value, Missing.Value, False, False, Missing.Value, Missing.Value, False, Missing.Value, Missing.Value, True);
int numSheets = wb.Sheets.Count;
for (int i = 1; i < numSheets + 1; i++) //엑셀의 Sheet 갯수만큼 반복하면서 해당 Sheet에 검색어가 있는지 확인
{
_Worksheet ws = (_Worksheet)wb.Worksheets[i];
//Sheet의 모든 Cell에서 검색을 찾는 과정
Range rng = ws.Cells.Find(findStr, Missing.Value, XlFindLookIn.xlValues, Missing.Value, Missing.Value, XlSearchDirection.xlNext, False, False, Missing.Value);
if (rng != null) //rng != null 이면 찾는 검색어가 존재한다는 의미
{
//찾았을때 적당한 로직 구현 list에 Add 작업 등
//찾고자하는 문자가 존재하는 Sheet가 있으니 다른 시트에서 더 이상 찾지 않고 끝냄.
break;
}
}
wb.Close(false, Type.Missing, Type.Missing);
}
catch{ }
}
}
private void GetDirectories(DirectoryInfo[] subDirs)
{
DirectoryInfo[] subSubDirs;
foreach (DirectoryInfo subDir in subDirs)
{
//현재의 디렉토리의 파일에서 찾기
GetFiles(subDir);
// 해당 폴더의 Sub폴더들을 찾아서 재호출
subSubDirs = subDir.GetDirectories();
if (subSubDirs.Length != 0)
{
GetDirectories(subSubDirs);
}
}
}
'개발언어 > C#' 카테고리의 다른 글
[C#] EXCEL File을 읽고 쓰는 방법 (0) | 2022.09.27 |
---|---|
[C#]'Microsoft.Office.Interop.Word.ApplicationClass'을(를) 포함할 수 없습니다. (0) | 2022.09.26 |
[C#] 폴더 내에 있는 모든 파워포인트 문서에서 문자열 찾기 (0) | 2022.09.16 |
[C#]C#으로 PDF 파일 안의 텍스트를 추출 (0) | 2022.09.16 |
C# Microsoft.Office.Interop.Word 사용하여 만든 프로그램 배포시 에러 나는 경우 (0) | 2022.09.16 |