방법: 디스크에 쓰지 않고 문서에 데이터 삽입
메모리에 있는 Office 솔루션 문서에 데이터를 삽입하여 데이터가 하드 디스크에 기록되지 않도록 만들 수 있습니다. HTTP 프로토콜을 사용하여 문서를 사용자에게 바이트 배열로 보내야 하는 경우 데이터를 수정할 임시 파일을 만드는 대신 이 기능을 사용하여 바이트 배열의 데이터를 직접 수정할 수 있습니다.
적용 대상: 이 항목의 정보는 Word 2007 및 Word 2010의 문서 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.
문서에 데이터를 삽입하려면
문서를 메모리에 바이트 배열로 로드합니다.
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 프로젝트가 있어야 합니다. 프로젝트에는 다음 구성이 있어야 합니다.
프로젝트에는 Microsoft.VisualStudio.Tools.Applications.ServerDocument.dll 어셈블리(프로젝트가 .NET Framework 4를 대상으로 하는 경우) 또는 Microsoft.VisualStudio.Tools.Applications.ServerDocument.v10.0.dll 어셈블리(프로젝트가 .NET Framework 3.5를 대상으로 하는 경우)에 대한 참조가 있어야 합니다.
코드 예제를 복사할 대상 코드 파일에는 Microsoft.VisualStudio.Tools.Applications 네임스페이스에 대한 Imports 문(Visual Basic의 경우) 또는 using 문(C#의 경우)이 있어야 합니다.
데이터 캐시가 있고 C:\Documents 폴더에 위치한 WordApplication3.doc라는 Microsoft Office Word 문서가 있어야 합니다.