본문 바로가기
IT 개발일지

C# WindowsForm 프로젝트 엑셀을 Database로 연결 및 Data 읽기

by (주)삼우기공 2020. 3. 20.
반응형

별다른 DBMS를 사용하지 않고, 엑셀파일을 데이터저장소로 사용하는 코드

 

발주 / 입고 / 출고 데이터 관리 활용할 것임..

/*
         // 확장명 XLS (Excel 97~2003 용)
        private const string ConnectStrFrm_Excel97_2003 =
            "Provider=Microsoft.Jet.OLEDB.4.0;" +
            "Data Source=\"{0}\";" +
            "Mode=ReadWrite|Share Deny None;" +
            "Extended Properties='Excel 8.0; HDR={1}; IMEX={2}';" +
            "Persist Security Info=False";

        // 확장명 XLSX (Excel 2007 이상용)
        private const string ConnectStrFrm_Excel =
            "Provider=Microsoft.ACE.OLEDB.12.0;" +
            "Data Source=\"{0}\";" +
            "Mode=ReadWrite|Share Deny None;" +
            "Extended Properties='Excel 12.0; HDR={1}; IMEX={2}';" +
            "Persist Security Info=False";
 */

 

* DB관련 클래스

    class DBClass 
    {
        private readonly String filePath; 
        private readonly String fileName; 
        OleDbConnection oleCon; 

       

       // 생성자

        public DBClass( String filePath, String fileName ) 
        { 
            this.filePath = filePath; 
            this.fileName = fileName; 
        } 



        // 연결 함수
        public void Conn() 
        {

           string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =" 
                                    + this.filePath + this.fileName + "; Extended Properties = Excel 12.0;"; 
            this.oleCon = new OleDbConnection(ConnectionString); 
            oleCon.Open(); 
        }
        
        public DataTable Read(string query)
        {
            try
            {
            	// db 연결
                Conn();
                /*
                	select문에 대한 읽어오는 방법이 여러가지 방법중..
                    dataAdapter를 이용하는 방법 / dataReader를 이용하는 방법
                    아래코드는 Adapter활용
                    DataSet를 채우고 데이터 원본을 업데이트 하는... 데이터 명령 집합
                */
                OleDbDataAdapter oleOda = new OleDbDataAdapter(query, oleCon);

                DataTable exDataTable = new DataTable();
                //exDataTable.Columns.Add("선택", typeof(bool)); //선택 체크박스용
                oleOda.Fill(exDataTable);
                oleCon.Close();

                return exDataTable;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return null;
            }
        }

     }

 

* Form 소스

    // 폼에서 DBClass 활용

    public partial class Form1 : Form 
    {      
        string fileName;   // 엑셀파일명
        string filePath;     // 엑셀파일 경로
        DBClass db;        // DBClass 변수
        DataTable dt;		// 데이터테이블 변수

        public Form1() 
        {
            InitializeComponent(); 

            filePath = "D:\\"; 
            fileName = "테이블목록.xlsx"; 
            db = new DBClass(filePath, fileName); // 생성자에 매개변수를 넘기면서 객체생성
            dt = new DataTable(); // 객체생성

            string qry = "SELECT [발주번호],[항번],[매입업체],[발주일자],[품명],[규격],[수량],[단위] " +
            			"FROM [발주테이블$]" +  // 테이블명에는 $ 붙어야함.. 이유모름              
                		" order by [발주일자] desc, [발주번호] desc, [항번] asc";

            dt = db.Read(qry); // 데이터테이블 형식으로 받아옴
            dataGridView1.DataSource = dt; //데이터그리드 뷰에 뿌림
        }
     }

 

단순 데이터그리드뷰에 데이터를 뿌리는 소스 코드...

반응형

댓글