보통 특정 폴더를 지정하여 파일들을 모두 읽어 들여 엑셀파일을 선별할 수도 있지만, 리소스추가 기능을 이용하여 리소스(.resx)에 추가하여 사용하고자 하는 경우도 있습니다. 리소스를 이용하여 처리하는 로직으로, 엑셀을 샘플로 올려둡니다. 테스트로 두 개만 올려 두도록 하겠습니다.
코드의 특정 부분에서 리소스를 읽는 부분을 추가합니다. excel 파일이 리소스로 올라가게 되면 byte[]의 형태로 올라가므로 아래와 같이 GetType을 Byte[]로 선별합니다.
콤보박스나 혹은 DataSource를 받을 수 있는 컨트롤이 있다면 바로 넣어보면 파일이 리스트업이 될 것입니다.
ex) this.comboBox1.DataSource = oTemplates;
// Excel을 .resx에 올리면 타입이 Byte[]
var oTemplates = Properties.Resources.ResourceManager
.GetResourceSet(CultureInfo.CurrentCulture, true, true)
.Cast<DictionaryEntry>()
.Where(x => x.Value.GetType() == typeof(Byte[])) // excel
//.Where(x => x.Value.GetType() == typeof(Bitmap)) // image
//.Select(x => new { Name = x.Key.ToString(), Image = x.Value })
.Select(x => x.Key.ToString())
.ToList();
아래의 코드는 엑셀 파일명을 알고 있을 경우에 파일명으로 엑셀 Object를 가져오는 코드입니다. 엑셀 Byte[]을 불러와서 파일에 Write 하는 예시입니다.
// 엑셀파일명으로 엑셀Object 가져오기
var excelObj = Properties.Resources.ResourceManager.GetObject("oTemplate", CultureInfo.CurrentCulture) as Byte[];
// 파일로 Write 하기
File.WriteAllBytes(@"D:\Documents\temp.xlsx", excelObj);