CODEKILLER

반응형

리소스(.resx)에 올려둔 Excel파일 불러오기
리소스(.resx)에 올려둔 Excel파일 불러오기

리소스(. resx) 파일에 엑셀 추가

보통 특정 폴더를 지정하여 파일들을 모두 읽어 들여 엑셀파일을 선별할 수도 있지만, 리소스추가 기능을 이용하여 리소스(.resx)에 추가하여 사용하고자 하는  경우도 있습니다. 리소스를 이용하여 처리하는 로직으로, 엑셀을 샘플로 올려둡니다. 테스트로 두 개만 올려 두도록 하겠습니다.

리소스(.resx) 엑셀
리소스(.resx)에 추가된 엑셀

리소스(. 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();

파일명으로 Resource.resx에 접근해서 excel object 가져오기

아래의 코드는 엑셀 파일명을 알고 있을 경우에 파일명으로 엑셀 Object를 가져오는 코드입니다. 엑셀 Byte[]을 불러와서 파일에 Write 하는 예시입니다.

// 엑셀파일명으로 엑셀Object 가져오기
var excelObj = Properties.Resources.ResourceManager.GetObject("oTemplate", CultureInfo.CurrentCulture) as Byte[];
// 파일로 Write 하기
File.WriteAllBytes(@"D:\Documents\temp.xlsx", excelObj);

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band