C#

[C#] 특정 경로(웹서버)에 저장되어 있는 엑셀 파일 양식 불러오기

isaac.kim 2021. 5. 3.
728x90
반응형

[C#] 특정 경로(웹서버)에 저장되어 있는 엑셀 파일 양식 불러오기

1. 먼저 Localhost영역의 디렉토리를 검색한다.

 - 검색한 디렉토리(directory)에 엑셀 양식을 다운로드할 예정이다.

 

            // 파일이 저장될 경로/디렉토리
            string filePath = "C:\\디렉토리\\";
            string fileName = "파일명_"+this.GetType().Name + ".xls";
            
	    // 해당 디렉토리가 없으면 디렉토리를 생성한다.
            if (!System.IO.Directory.Exists(filePath))
            {
                System.IO.Directory.CreateDirectory(filePath);
                MessageBox.Show(filePath + " 디렉토리 생성");
            }

2. 특정 경로에서 엑셀 양식을 다운로드 한다.

 	    // 엑셀 양식 파일을 다운로드 한다.
            try
            {
                string url = "http://양식을 다운로드할 경로/excel/" + fileName;
                System.Net.WebClient webClient = new System.Net.WebClient();
                webClient.DownloadFile(url, filePath + fileName);
            } catch (System.Net.WebException we) {
                MessageBox.Show(we.Message +"\n다운로드 에러\n파일이 이미 실행중인지 확인 요망\n");
            }

 

3. FileStream객체로 파일 상태를 생성 및 열기 모드로  확인한다.

- FileStream이 열려 있는지 체크, 이미 열려있으면 IOException으로 캐치한다.

	    // using을 사용하여 파일 리소스 자동으로 Dispose 함.
            try
            {
                using (System.IO.FileStream fs = new System.IO.FileStream(filePath + fileName, System.IO.FileMode.OpenOrCreate)) { }
            }
            catch (System.IO.IOException ie)
            {
                //MessageBox.Show(ie.Message);
                MessageBox.Show("엑셀양식(" + fileName + ") 파일이 이미 열려 있습니다.");
                return;
            }

 

4. 엑셀파일을 실행한다. 

	    // 엑셀 파일을 실행한다.
            try
            {
                System.Diagnostics.ProcessStartInfo run = new System.Diagnostics.ProcessStartInfo();
                run.FileName = filePath+fileName;
                System.Diagnostics.Process.Start(run);
            }
            catch
            {
                MessageBox.Show("파일을 실행할 수 없습니다.");
            }

 

 

 

정리하면,

1) 로컬에 특정 디렉토리를 확인 및 생성

2) 외부 서버 등에서 양식을 다운로드

3) 파일 리소스 확인

4) 엑셀 파일 실행

 

아래는 전체 소스코드이다.

	private void button8_Click(object sender, EventArgs e)
        {
            // 파일이 저장될 경로/디렉토리
            string filePath = "C:\\디렉토리\\";
            string fileName = "파일명_"+this.GetType().Name + ".xls";

            // 해당 디렉토리가 없으면 디렉토리를 생성한다.
            if (!System.IO.Directory.Exists(filePath))
            {
                System.IO.Directory.CreateDirectory(filePath);
                MessageBox.Show(filePath + " 디렉토리 생성");
            }

            // 엑셀 양식 파일을 다운로드 한다.
            try
            {
                string url = "http://양식을 다운로드할 경로/excel/" + fileName;
                System.Net.WebClient webClient = new System.Net.WebClient();
                webClient.DownloadFile(url, filePath + fileName);
            } catch (System.Net.WebException we) {
                MessageBox.Show(we.Message +"\n다운로드 에러\n파일이 이미 실행중인지 확인 요망\n");
            }

            // using을 사용하여 파일 리소스 자동으로 Dispose 함.
            try
            {
                using (System.IO.FileStream fs = new System.IO.FileStream(filePath + fileName, System.IO.FileMode.OpenOrCreate)) { }
            }
            catch (System.IO.IOException ie)
            {
                //MessageBox.Show(ie.Message);
                MessageBox.Show("엑셀양식(" + fileName + ") 파일이 이미 열려 있습니다.");
                return;
            }

            // 엑셀 파일을 실행한다.
            try
            {
                System.Diagnostics.ProcessStartInfo run = new System.Diagnostics.ProcessStartInfo();
                run.FileName = filePath+fileName;
                System.Diagnostics.Process.Start(run);
            }
            catch
            {
                MessageBox.Show("파일을 실행할 수 없습니다.");
            }

        } // button8_Click

 

오늘 작성한 소스일부 中...

728x90
반응형