인쇄용 버전       전송     
평가 및 의견을 보내려면 클릭하십시오.
MSDN
MSDN Library
기술 문서(Technical Articles)
Others
 [How-To] Open XML 개체 모델을 사용하여  Offi...
[How-To] Open XML 개체 모델을 사용하여  Office Open XML 패키지를 유효성 검사하기

[이 글은 프리릴리스 문서로, 출시 후에 변경될 가능성이 있습니다.]


Office Open XML 패키지의 사양은 컨텐츠를 포함하여, 단일 패키지에 보관된 모든 파트의 관계를 정의하는 XML 파일집합을 정의합니다. 이러한 패키지는 Microsoft Office Excel 2007, Microsoft Office PowerPoint 2007 및 Microsoft Office Word 2007 의 문서 파일을 구성하는 파트를 결합합니다. Open XML 형식 기술 프리뷰 응용 프로그램 프로그래밍 인터페이스 (API)를 사용하여, 패키지를 생성하거나 패키지를 구성하는 파일을 조작할 수 있습니다. 이 토픽에서는 Word 2007에서 Office Open XML 패키지의 유효성 검사하기 위한 코드와 순서에 대해 설명하는데, 방식은 Office Open XML 형식을 지원하는 세가지의 2007 Office system 프로그램과 같습니다.

Note메모 :

이 토픽의 코드 예제는 Visual Basic .NET 및 Visual C# 로 Microsoft Visual Studio 2008에서의 생성된 추가기능으로 사용할 수 있습니다. Visual Studio 2008에서의 추가 기능 생성 순서는 이 시리즈의 「Microsoft SDK for Open XML Formats 를 사용하여  작업 시작하기」에서 볼 수 있습니다.

Office Open XML 패키지의 유효성 검사하기

다음 코드에서는 Open XML 개체 모델의 Validate 메서드를 호출하여 SpreadsheetDocument 패키지의 유효성을 검사합니다.

Visual Basic
' How to: Validate a package.
Public Sub ValidateSimplePackage(ByVal xlsxFile As String)
   Dim xlsxDoc As SpreadsheetDocument = SpreadsheetDocument.Open(xlsxFile, True)
   Using (xlsxDoc)
      ' Remove the main workbook part.
      xlsxDoc.DeletePart(xlsxDoc.WorkbookPart)
      ' Validate package. Will return an exception 
      ' because of the missing part.
      xlsxDoc.Validate(Nothing)
    End Using
End Sub

C#
// How to: Validate a package
public void ValidateSimplePackage(string xlsxFile)
{
   SpreadsheetDocument xlsxDoc = SpreadsheetDocument.Open(xlsxFile, true);
   Using(xlsxDoc)
   {
      // Remove the main workbook part.
      xlsxDoc.DeletePart(xlsxDoc.WorkbookPart);

      // Validate the package. Will return an exception 
      // because of the missing part.
      xlsxDoc.Validate(null);
   }
}

코드 섹션에서는 먼저 문서 파일을 가리키는 변수를 선언합니다. 그리고, Open 메서드를 사용하여 패키지를 엽니다. 패키지는 쓰기 권한이 부여된 상태로 열립니다. 그리고, Delete 메서드를 사용하여, 문서의 워크통합문서 파트를 삭제합니다. 마지막에SpreadsheetDocument 개체의 Validate 메서드를 호출하여 패키지의 유효성을 검사합니다.

Note메모 :

Validate 메서드는 각 파트의 XML 컨텐츠 유효성 검사는 실시하지 않습니다. 파트 컨텐츠를 유효성 검사하는 순서는 이 시리즈의 「[How-To] Open XML 개체 모델을 사용하여, Office Open XML 패키지의 파트 컨텐츠를 유효성 검사하기」에서 설명합니다.

사용자 지정 유효성 검사

프로그램에 의해서 유효성 검사를 완전히 제어하는 경우, 또는 복잡한 유효성 검사 체크를 실행해야 하는 경우는 Open XML 개체 모델에 있는 OpenXmlPackageValidationSettings 이벤트 처리기를 사용합니다.

Visual Basic
' How to: Create custom validation.
Private Sub PackageValidationEventHandler(ByVal sender As Object, ByVal e As OpenXmlPackageValidationEventArgs)
    Console.Beep()
    Console.WriteLine("--------------------")
    Console.WriteLine("OpenXmlPackageValidationError:")
    Console.WriteLine(("Message = " + e.Message))
    If (Not (e.PartClassName) Is Nothing) Then
        Console.WriteLine(("PartClassName = " + e.PartClassName))
    End If
    If (Not (e.Part) Is Nothing) Then
        Console.WriteLine((e.Part.Uri))
    End If
    If (Not (e.SubPart) Is Nothing) Then
        Console.WriteLine((e.SubPart.Uri))
    End If
    If (Not (e.Message) Is Nothing) Then
        Console.WriteLine(("OpenXmlPartProblem = " + e.Message))
    End If
    Console.WriteLine("--------------------")
    Console.WriteLine("")
End Sub

Private Sub ValidatePackage(ByVal xlsxFile As String)
    ' Pass validation processing to event     
    Dim validationSettings As OpenXmlPackageValidationSettings = New OpenXmlPackageValidationSettings
    AddHandler validationSettings.EventHandler, AddressOf PackageValidationEventHandler
    Dim xlsxDoc As SpreadsheetDocument = SpreadsheetDocument.Open(xlsxFile, True)
    Using (xlsxDoc)
        xlsxDoc.DeletePart(xlsxDoc.WorkbookPart)
        ' Validate Package
        xlsxDoc.Validate(validationSettings)
    End Using
End Sub

C#
// How to: Create custom validation
static void PackageValidationEventHandler(Object sender, OpenXmlPackageValidationEventArgs e)
{
    Console.Beep();
    Console.WriteLine("--------------------");
    Console.WriteLine("OpenXmlPackageValidationError:");
    Console.WriteLine("Message = " + e.Message);
    if (e.PartClassName != null)
    {
        Console.WriteLine("PartClassName = " + e.PartClassName);
    }
    if (e.Part != null)
    {
        Console.WriteLine(e.Part);
    }
    if (e.SubPart != null) 
    {
        Console.WriteLine(e.SubPart);
    }
    if (e.Message != null)
    {
        Console.WriteLine("OpenXmlPartProblem = " + e.Message);
    }
    Console.WriteLine("--------------------");
    Console.WriteLine("");
}
        
static void ValidatePackage()
{
    // Pass validation processing to event    OpenXmlPackageValidationSettings validationSettings = new OpenXmlPackageValidationSettings();
    validationSettings.EventHandler += new EventHandler<OpenXmlPackageValidationEventArgs>(PackageValidationEventHandler);

    string xlsxFile = @"c:\Book1.xlsx";
    SpreadsheetDocument xlsxDoc = SpreadsheetDocument.Open(xlsxFile, true);
    xlsxDoc.DeletePart(xlsxDoc.WorkbookPart);
    xlsxDoc.Save();

    // Validate Package
    xlsxDoc.Validate(validationSettings);
}

코드 섹션에서는 먼저 OpenXmlPackageValidationEventArgs 를 취득하는 사용자 지정 패키지 유효성 검사 이벤트 처리기를 생성합니다. 그리고 SpreadsheetDocument 개체의 Validate 메서드를 호출하는 사용자 지정 코드를 기술합니다.

먼저, 유효성 검사 처리를 PackageValidationEventHandler 에 건네줍니다. 그리고 문서 파일을 가리키는 변수를 선언합니다. 그리고, Open 메서드를 사용하여 패키지를 엽니다. 패키지는 쓰기 권한이 부여된 상태로 열립니다. 그리고, Delete 메서드를 사용하여  문서의 통합문서 파트를 삭제하고, Save 메서드를 사용하여  변경을 저장합니다. 마지막으로, SpreadsheetDocument 개체의 Validate 메서드를 호출하고, OpenXmlPackageValidationSettings 을 건네주고, 패키지의 유효성을 검사합니다.


© 2009 Microsoft Corporation. All rights reserved. 사용약관 | 상표 | 개인정보취급방침 및 청소년보호정책
Page view tracker