2013-05-06 119 views
-1

我想提取xlsx文件以獲取sheet1.xml文件。現在我正在爲Package和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,所以我不能使用Stream 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

大,這麼簡單!我也犯了一個愚蠢的錯誤,但現在沒有意思...... :) 謝謝! – 2013-05-07 09:57:32