2013-05-06 3 views
-1

xlsx 파일을 추출하여 sheet1.xml 파일을 가져 오려고합니다. 이제 패키지와 PackagePart로 고민하고 있습니다. 난 내가 여기까지 가지고있는 가장 확실한 방법은 해당 파일을 읽고 XmlDocument 이에 콘텐츠를 복사하는 것입니다 생각 :Packagepart 파일 또는 메모리에 복사

XmlDocument doc = new XmlDocument(); 
using (Package package = ZipPackage.Open(xlsFile, FileMode.Open, FileAccess.Read)) 
{ 
    foreach (PackagePart part in package.GetParts()) 
    { 
     var target = Path.GetFullPath(Path.Combine(tempFolderPath, part.Uri.OriginalString.TrimStart('/'))); 
     var targetDir = target.Remove(target.LastIndexOf('\\')); 
     if (!Directory.Exists(targetDir)) 
      Directory.CreateDirectory(targetDir); 

     using (Stream source = part.GetStream(FileMode.Open, FileAccess.Read)) 
     { 
      FileStream targetFile = File.OpenWrite(target); 
      byte[] bytes = new byte[source.Length]; 
      source.Read(bytes, 0, (int)source.Length); 
      source.Close(); 
      //source.CopyTo(targetFile); 
      //doc.Load(source.Write()); 
      //targetFile.Close(); 
     } 
    } 
} 

나는 내가 스트림을 사용할 수 없습니다 .NET 3.5을 사용하고 source.CopyTo 행동 양식. Sheet1.xml의 내용을 XmlDocument 클래스의 문서로 복사하고 싶습니다.

감사! 폴

답변

0

당신은 XmlDocument.Load overload which takes a Stream를 사용할 수 있습니다

이 일단로드
XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.Load(part.GetStream(FileMode.Open, FileAccess.Read)); 

, 당신은 다음 XmlDocument.Save를 사용할 수 있습니다

xmlDoc.Save(target); 
+0

, 아주 쉽게 그! 나도 어리석은 실수를 저질렀지 만 지금은 재미 없어. :) 고마워! –

관련 문제