방법: 디스크에 쓰지 않고 문서에 데이터 삽입
업데이트: 2007년 11월
적용 대상 |
---|
이 항목의 정보는 지정된 Visual Studio Tools for Office 프로젝트 및 Microsoft Office 버전에만 적용됩니다. 프로젝트 형식
Microsoft Office 버전
자세한 내용은 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오. |
메모리에 있는 Visual Studio Tools for Office 솔루션 문서에 데이터를 삽입하여 데이터가 하드 디스크에 기록되지 않도록 만들 수 있습니다. HTTP 프로토콜을 사용하여 문서를 사용자에게 바이트 배열로 보내야 하는 경우 데이터를 수정할 임시 파일을 만드는 대신 이 기능을 사용하여 바이트 배열의 데이터를 직접 수정할 수 있습니다.
문서에 데이터를 삽입하려면
문서를 메모리에 바이트 배열로 로드합니다.
Dim name As String = "C:\Documents\WordApplication3.doc" Dim fileStream As System.IO.FileStream = Nothing Dim bytes() As Byte = Nothing Try fileStream = New System.IO.FileStream( _ name, System.IO.FileMode.Open, System.IO.FileAccess.Read) ReDim bytes(fileStream.Length) fileStream.Read(bytes, 0, fileStream.Length) Finally If Not fileStream Is Nothing Then fileStream.Close() End If End Try
string name = @"C:\Documents\WordApplication3.doc"; System.IO.FileStream fileStream = null; byte[] bytes = null; try { fileStream = new System.IO.FileStream( name, System.IO.FileMode.Open, System.IO.FileAccess.Read); bytes = new byte[(int)fileStream.Length]; fileStream.Read(bytes, 0, (int)fileStream.Length); } finally { if (fileStream != null) { fileStream.Close(); } }
바이트 배열을 파일 이름 대신 서버측 개체 모델에 전달한 다음 데이터 조작을 수행합니다.
Dim sd1 As ServerDocument = Nothing Try sd1 = New ServerDocument(bytes, name) ' Your data manipulation code goes here. sd1.Save()
ServerDocument sd1 = null; try { sd1 = new ServerDocument(bytes, name); // Your data manipulation code goes here. sd1.Save();
문서를 최종 사용자에게 보내고 ServerDocument를 닫습니다.
' If you have a Word document, use the MIME string: Response.ContentType = "application/msword" ' If you have an Excel workbook, use the MIME string: 'Response.ContentType = "application/vnd.ms-excel" Response.AddHeader("Content-disposition", "filename=" + name) Response.BinaryWrite(sd1.Document) Finally If Not sd1 Is Nothing Then sd1.Close() End If End Try
// If you have a Word document, use the MIME string: Response.ContentType = "application/msword"; // If you have an Excel workbook, use the MIME string: //Response.ContentType = "application/vnd.ms-excel"; Response.AddHeader("Content-disposition", "filename=" + name); Response.BinaryWrite(sd1.Document); } finally { if (sd1 != null) { sd1.Close(); } }
코드 컴파일
이 예제에는 다음 사항이 필요합니다.
예제 코드를 포함하는 ASP.NET 프로젝트가 있어야 합니다.
데이터 캐시가 있고 C:\Documents 폴더에 위치한 WordApplication3.doc라는 Microsoft Office Word 문서가 있어야 합니다.
ASP.NET 프로젝트 설정
ASP.NET 프로젝트에는 다음 어셈블리 중 하나에 대한 참조가 있어야 합니다.
Word 2007의 경우 Microsoft.VisualStudio.Tools.Applications.ServerDocument.v9.0.dll에 참조를 추가합니다.
Word 2003의 경우 Microsoft.VisualStudio.Tools.Applications.Runtime.dll에 대한 참조를 추가합니다.
코드 예제를 복사할 대상 코드 파일에는 다음 네임스페이스 중 하나에 대한 Imports 문(Visual Basic의 경우) 또는 using 문(C#의 경우)이 있어야 합니다.
Word 2007의 경우 Microsoft.VisualStudio.Tools.Applications 네임스페이스에 대한 Imports 또는 using 문을 추가합니다.
Word 2003의 경우 Microsoft.VisualStudio.Tools.Applications.Runtime 네임스페이스에 대한 Imports 또는 using 문을 추가합니다.
참고: Visual Studio Tools for Office에서는 2007 시스템과 2003 시스템에 대해 각기 다른 버전의 ServerDocument 클래스와 캐시된 데이터 클래스를 제공합니다. 자세한 내용은 ServerDocument 클래스를 사용하여 서버의 문서 관리를 참조하십시오.