재우니의 블로그

 

 

WebSite2.zip

 

 

기존에는 엑셀이나 csv Microsoft.Jet.OLEDB.4.0 통해 읽을 수 있었습니다. 하지만 제약사항은

운영체제가 32 bit 환경에서 가능한 사항입니다. 만약에 2003, 2008 의 운영체제 64 비트 경우에는

Microsoft.Jet.OLEDB.4.0 64비트용으로 별도 설치를 해야 하지만, ms 측에서 중단하여 사용할 방법이

없었습니다. 대신 iis pool 에서 32 비트 호환성을 별도로 셋팅을 해야 이를 처리 가능했죠.

 

이로 인해 어디서 항의를 했는지는 모르겠지만 2008 운영체제가 나온 후 2년후인 2010년에 이를 사용할 수 있도록

MS 측에서 내놓았습니다. 대신 기존의 Microsoft.Jet.OLEDB.4.0 를 버리고 Microsoft.ACE.OLEDB.12.0 라는 새로운

제품을 출시 했으며, 이는 32 비트 및 64 비트를 둘 다 제공해 주고 있고 bit 에 맞게 별도로 설치해야 합니다.

 

 

따라서 차후 개발을 하게 될 경우, 해당 Microsoft.ACE.OLEDB.12.0 로 개발하시기 바라며, 비트에 맞게 설치하시기 바랍니다.

 

실서버에 office 없이도 해당 엑셀이나 csv 파일을 읽을 수 있는 제품이니 많이 도움되시기 바랍니다. (ga 업체에서 많이 사용할 듯 싶네요.)

 

친절하게 제가 예제 소스를 첨부했으니 많은 도움 되시기 바랍니다.

 

감사합니다.

 

 


    /// <summary>
    /// ACE 12.0 용, 64bit 용
    /// http://www.microsoft.com/downloads/ko-kr/details.aspx?familyid=c06b8369-60dd-4b64-a44b-84b371ede16d&displaylang=ko
    /// 64 bit 로 설치 필요
    /// </summary>
    private void loadace()
    {
        string fullPath = @"d:\Outlook2007.xls";

        string connString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes\"",  fullPath);

        OleDbConnection conn = new OleDbConnection(connString);
        conn.Open();
        System.Data.DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" }); //
        string sheetname = schemaTable.Rows[0]["Table_Name"].ToString();
        string query = string.Format("select * from {0}", "[" + sheetname + "]");

        OleDbDataAdapter adapter = new OleDbDataAdapter(query, connString);
        DataSet ds = new DataSet();
        adapter.Fill(ds, "XLData");

        GridView1.DataSource = ds;
        GridView1.DataBind();

        conn.Close();

    }

 

 

    /// <summary>
    /// jet 4.0 : 32 비트용
    /// </summary>
    private void loadexcel()
    {
        string fullPath = @"d:\Outlook2007.xls";

        string connString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes\"", fullPath);

 

        OleDbConnection conn = new OleDbConnection(connString);
        conn.Open();
        System.Data.DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" }); //
        string sheetname = schemaTable.Rows[0]["Table_Name"].ToString();
        string query = string.Format("select * from {0}", "[" + sheetname + "]");

        OleDbDataAdapter adapter = new OleDbDataAdapter(query, connString);
        DataSet ds = new DataSet();
        adapter.Fill(ds, "XLData");

        GridView1.DataSource = ds;
        GridView1.DataBind();

        conn.Close();
    }