2011-05-05 31 views
-1
private static void UpdateFontSettings(WordprocessingDocument content, WordprocessingDocument template) 

    { 
     if (content != null && content.MainDocumentPart != null && content.MainDocumentPart.FontTablePart != null && 
      template != null && template.MainDocumentPart != null && template.MainDocumentPart.FontTablePart != null) 
     { 
      IEnumerable<OpenXmlPart> partsToDelete = from idPartPair in content.MainDocumentPart.FontTablePart.Parts 
                select idPartPair.OpenXmlPart; 

      content.MainDocumentPart.FontTablePart.DeleteParts(partsToDelete); 

      StreamReader streamReader = null; 
      StreamWriter streamWriter = null; 

      try 
      { 
       streamReader = new StreamReader(template.MainDocumentPart.FontTablePart.GetStream()); 
       streamWriter = new StreamWriter(content.MainDocumentPart.FontTablePart.GetStream(FileMode.Create)); 
      } 
      catch 
      { 
       if (streamReader != null) 
       { 
        streamReader.Close(); 
       } 

       throw; 
      } 

      using (streamWriter) 
      { 
       streamWriter.Write(streamReader.ReadToEnd()); 
      } 

      if (streamReader != null) 
      { 
       streamReader.Close(); 
      } 
     } 
    } 
+0

異常發生在哪裏? – 2011-05-05 17:15:24

+3

如果它給你損壞的內容,然後__yes__有什麼問題。你應該說出了什麼問題,爲什麼你認爲這是錯誤的,當你認爲它應該做的時候。 – unholysampler 2011-05-05 17:16:17

+1

你也許想在try..catch塊中使用(streamWriter)部分,因爲你可能已經關閉了streamReader – 2011-05-05 17:16:35

回答

0

我會建議您設置您的編碼類型,當您創建您的StreamWriter。我相信它對大多數系統默認爲ANSI,儘管你可能需要UTF8或其他東西。