엑셀에 관한 내용

ASP.NET 2005. 1. 8. 02:45

ASP 뿐만아니라 PHP, JSP, ASP.NET에서 엑셀로 저장하거나 디스플레이, 파일 자체를 임포트하여

DB에 넣는것이 가능합니다.

참고자료는 여기 대브피아(ASP.NET, ASP)에서 "엑셀"이나 "Excel"로 검색하면 찾으실 수 있구요.

그리고 가장 원초적이면서도 기본적인 MSDN을 찾아보시면 많은 자료를 얻으실 수있습니다.

http://msdn.microsoft.com/library/default.asp?url=/code/list/excel.asp

http://msdn.microsoft.com/office/

등등 말고도 MSDN에서 excel 등으로 검색하시면 동영상 정보까지 보실수 있습니다.

주로 관련된 분야는 "오피스 디벨로퍼"라 불리우는 분야에 정보를 님은 찾고계신것 같군요.

국내에선 별루 관심을 두지 않는것 같은데 앞으론 이분야를 잘 다룰수 있는것이 프로젝트에

매우 도움이 될꺼 같던데...

MSDN쪽 동영상을 보니 오피스 컴포넌트로 웹에서 엑셀 그리드쪽에 데이터가 DB를 통해 자료를

조회해서 실시간으로 변하고 그래프 까지 그려지더군요. 기술의 발전이 놀랍습니다.

이것만 보면 된다라고 말씀드리지 못해서 죄송하군요. 저도 자료를 정리하고 있는 중이라...

도움이 되시길.... 아무튼 MSDN에 젤 자료가 많을겁니다.


파일 다운로드시 열기를 누르면 다운로드 창이 두번 뜨는 이유?

http나 ftp링크를 걸어 다운로드받는 방식의 경우는 해당위치의 파일에 대해 웹브라우저가 알아서 Mime Type을 결정하고 그 처리를 곧바로 실행하는 반면, download.asp의 경우는 Mime Type의 결정, 파일명의 결정 등과 같은 처리를 ASP와 HTML 코드 상에서 일단 처리한 후 이를 웹브라우저가 다시 처리하는 방식이어서, 확장자에 따라 웹브라우저가 "파일 다운로드" 대화상자를 두 번 뜨게 하는 경우가 있습니다.

엑셀문서나 워드문서와 같은 MS Office계열의 문서의 경우는 인터넷 익스플로러가 정상적으로 "파일 다운로드" 대화상자를 한 번만 띄우지만, TXT, JPG, ZIP, PDF 등 다른 문서들은 "파일 다운로드" 대화상자를 두 번 띄우고 있는데...

response.ContentType="text/HTML"

response.ContentType="image/GIF"

response.ContentType="image/JPEG"

response.ContentType="text/plain"

response.ContentType="image/JPEG"

response.ContentType="application/vnd.ms-excel"

,이런식으로 명확하게 명시 해주면 될듯....^^

찾았네요^.^

예제 Excel 워크시트 만들기
Microsoft Excel을 시작한 다음 새 워크시트를 만듭니다.
다음 정보를 새 워크시트에 추가하여 간단한 Excel 데이터베이스를 만듭니다.

A B
1 FirstName LastName
2 Scott Bishop
3 Katie Jordan

참고: 이 예에서는 데이터가 A1 셀에서 시작하지만 데이터를 입력하는 위치는 워크시트 내의 어느 셀이든 상관없습니다.
데이터가 있는 행과 열을 마우스로 선택합니다.
삽입 메뉴에서 이름을 가리킨 다음 정의를 누릅니다.
통합 문서에 있는 이름 텍스트 상자에 myRange1을 입력한 다음 확인을 누릅니다.
파일 메뉴에서 저장을 누릅니다. 저장 위치 목록에서 웹 서버 루트(일반적으로 C:\InetPub\Wwwroot\)를 선택합니다. 파일 이름 텍스트 상자에 ExcelData.xls를 입력합니다. 확인을 누릅니다.
파일 메뉴에서 끝내기를 누릅니다.
맨 위로

Visual C# .NET을 사용하여 ASP.NET 예제 만들기
이 코드 예제는 Excel 워크시트에 정보를 쿼리하고 표시하는 방법을 보여 줍니다. 다음 코드는 앞 절에서 만든 워크시트를 사용합니다.

Microsoft Visual Studio .NET을 엽니다. Visual Studio .NET 통합 개발 환경(IDE)이 표시됩니다.
파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 누릅니다.
새 프로젝트 대화 상자의 프로젝트 형식에서 Visual C# 프로젝트를 누르고 템플릿에서 ASP.NET 웹 응용 프로그램을 누릅니다.
새 프로젝트 대화 상자에서 이름과 위치 텍스트 상자를 찾습니다. 이름 텍스트 상자는 사용할 수 없습니다(회색 또는 희미하게 나타남). 위치 텍스트 상자에는 다음과 비슷한 텍스트가 표시됩니다.
http://localhost/WebApplication1

위치 텍스트 상자에 있는 텍스트를 http://localhost/ExcelCSTest로 바꾼 다음 확인을 누릅니다. WebForm1.aspx라는 이름의 Web Form이 포함된 새 프로젝트가 만들어집니다.
Visual Studio .NET IDE에서 솔루션 탐색기 창을 찾습니다. 찾을 수 없으면 보기 메뉴에서 솔루션 탐색기를 누릅니다.
솔루션 탐색기에서 WebForm1.aspx를 마우스 오른쪽 단추로 누른 다음 디자이너 보기를 눌러 페이지의 모양을 편집할 수 있는 디자이너를 표시합니다. 디자이너를 사용하면 컨트롤을 추가하고 페이지 모양을 조작할 수 있습니다.
도구 상자를 찾습니다. IDE 옵션 설정에 따라 도구 상자는 주로 IDE 왼쪽에 창이나 단추로 나타날 수 있습니다. 도구 상자를 찾을 수 없으면 보기 메뉴에서 도구 상자를 누릅니다.

도구 상자가 단추로 나타나면 도구 상자의 내용이 표시되도록 포인터를 도구 상자 단추 위로 이동합니다.
Web Form의 디자이너 보기가 활성화되면 도구 상자는 Web Forms, 구성 요소, HTML 및 기타 구역 등 여러 구역으로 나뉩니다. Web Forms 구역을 누릅니다.
도구 상자의 Web Forms 구역에서 DataGrid를 누른 다음 WebForm1 디자이너로 끌어 옵니다.
WebForm1.aspx를 마우스 오른쪽 단추로 누른 다음 코드 보기를 눌러 코드 숨김 페이지 원본을 표시합니다.
다음 문을 네임스페이스 구역 바로 위인 코드 숨김 페이지 맨 위에 추가합니다.using System.Data.OleDb;
using System.Data;
다음 코드를 선택하고 코드를 마우스 오른쪽 단추로 누른 다음 복사를 누릅니다. 코드를 WebForm1.aspx.cs의 Page_Load 이벤트에 붙여넣습니다.// Create connection string variable. Modify the "Data Source"
// parameter as appropriate for your environment.
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + Server.MapPath("../ExcelData.xls") + ";" +
"Extended Properties=Excel 8.0;";

// Create connection object by using the preceding connection string.
OleDbConnection objConn = new OleDbConnection(sConnectionString);

// Open connection with the database.
objConn.Open();

// The code to follow uses a SQL SELECT command to display the data from the worksheet.

// Create new OleDbCommand to return data from worksheet.
OleDbCommand objCmdSelect =new OleDbCommand("SELECT * FROM myRange1", objConn);

// Create new OleDbDataAdapter that is used to build a DataSet
// based on the preceding SQL SELECT statement.
OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();

// Pass the Select command to the adapter.
objAdapter1.SelectCommand = objCmdSelect;

// Create new DataSet to hold information from the worksheet.
DataSet objDataset1 = new DataSet();

// Fill the DataSet with the information from the worksheet.
objAdapter1.Fill(objDataset1, "XLData");

// Bind data to DataGrid control.
DataGrid1.DataSource = objDataset1.Tables[0].DefaultView;
DataGrid1.DataBind();

// Clean up objects.
objConn.Close();
파일 메뉴에서 모두 저장을 눌러 프로젝트 파일을 저장합니다.
빌드 메뉴에서 빌드를 눌러 프로젝트를 빌드합니다. 그러면 코드가 실행될 수 있도록 코드 숨김 페이지에 코드가 준비됩니다.
솔루션 탐색기에서 WebForm1.aspx를 마우스 오른쪽 단추로 누른 다음 브라우저에서 보기를 눌러 코드를 실행합니다.
맨 위로

추가 코드 설명
이 문서의 코드 예제는 Microsoft Jet OLE DB Provider를 사용하여 Excel 워크시트에 액세스합니다. 이 코드는 다음 연결 문자열을 사용하여 워크시트에 연결합니다.

// Create connection string variable. Modify the "Data Source"
// parameter as appropriate for your environment.
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + Server.MapPath("../ExcelData.xls") + ";" +
"Extended Properties=Excel 8.0;";
주석이 나타내는 것처럼 특정 Excel 워크시트에 대한 경로 정보를 수정해야 합니다. 또한 Extended Properties 매개 변수의 값을 파일에 적절히 연결하도록 적절히 설정해야 합니다.

연결 문자열은 Server.MapPath 함수를 사용합니다. 이 함수는 파일에 대해 Microsoft Internet Information Services(IIS)에 관련된 경로를 사용하여 해당 파일의 하드 디스크 경로를 반환합니다. 예를 들어, 예제 Excel 워크시트 만들기 절에서 일반적으로 C:\Inetpub\Wwwroot에 있는 웹 루트 디렉터리에 ExcelData.xls를 만듭니다. 또한 이 함수는 Wwwroot 폴더 내에 ExcelCSTest라는 이름의 하위 폴더를 만들고 ExcelCSTest 폴더 내에 WebForm1.aspx라는 이름의 파일을 만듭니다.

ContypeType 문제가 아니였군여..~

Response.AddHeader ("Content-Disposition:", "attachment;filename="+Server.UrlEncode(FileName)); <-- 이부분이
사용자에게 저장할 것인가 실행할 것인가 묻는 과정을 거치는 명령어네요.. attachment; <-- 이것이 그것 ^^ 암튼 해결했습니다.

아랜 소스부분입니다.. 혹시 저같은 문제 땜에 고생하신분들.. 아래 소스로 해결하세요~

그럼 즐프~ 하세요~
-----------------------------------------------------------------------------------------------------------------------------------------
String FileName;
FileStream MyFileStream;
IntPtr FileHandle;
long StartPos = 0, FileSize;

FileName = BusinessConnectionString.rootPath+"Downloadfiles\"+file_name;

MyFileStream = new FileStream(FileName, FileMode.Open);
FileHandle = MyFileStream.Handle;
FileSize = MyFileStream.Length;

Response.ContentType = "application/octet-stream";
Response.AddHeader ("Content-Disposition:", "attachment;filename="+Server.UrlEncode(FileName));
Response.AddHeader ("Cache-Control: ", "no-cache");

Response.WriteFile(FileHandle, StartPos, FileSize);
MyFileStream.Close();

'ASP.NET' 카테고리의 다른 글

1.2 닷넷관련 커뮤니티 소개 및 다운로드/설치  (0) 2005.03.02
메일보낼때 한글깨지는 문제..  (0) 2005.01.11
어려운 숙제 하나 해결..  (0) 2004.12.01
닷넷에서 쿠키...  (0) 2004.12.01
메일타입변경  (0) 2004.11.05
Posted by 퓨전마법사
,