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();
}