首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 實現 Office 文檔與 XML 互轉:Base64 編碼實現跨平台傳輸

     編輯:關於C#

本文示範如何將 Office 文檔 (Word、Excel、PPT) 編碼為 XML 文件,再從 XML 還原為 Office 文檔。XML 格式具有平台無關性,解決了多層架構中的數據傳輸問題,可配合 Web Service、.NET Remoting、WinSock 等傳輸方式。

核心思路

  1. 文檔 → XML:讀取文件二進位流,Convert.ToBase64String 編碼為字符串,嵌入 XML 節點屬性 (如 <me aa="Base64字符串"/>)。
  2. XML → 文檔:解析 XML 取出 Base64 字符串,Convert.FromBase64String 解碼為位元組陣列,寫入文件流還原文檔。

關鍵代碼片段

載入 Office 文檔並生成 XML

private void button3_Click(object sender, EventArgs e) {
    // ... 打開文件對話框獲取路徑 ...
    FileStream inFile = new FileStream(strFileName, FileMode.Open, FileAccess.Read);
    byte[] binaryData = new byte[inFile.Length];
    inFile.Read(binaryData, 0, (int)inFile.Length);
    string base64Str = Convert.ToBase64String(binaryData);

    mXmlDoc = new XmlDocument();
    // 構造簡單 XML 結構
    string xmlContent = string.Format("<wawa><me aa=\"{0}\"/></wawa>", base64Str);
    mXmlDoc.LoadXml(xmlContent);
    // ... 提示成功 ...
}

從 XML 還原 Office 文檔

private void button2_Click(object sender, EventArgs e) {
    XmlNode node = doc.DocumentElement.SelectSingleNode("me");
    XmlElement ele = (XmlElement)node;
    string base64Str = ele.GetAttribute("aa");
    byte[] bytes = Convert.FromBase64String(base64Str);

    // ... 保存文件對話框 ...
    FileStream outfile = new FileStream(saveFileDialog1.FileName, FileMode.CreateNew);
    outfile.Write(bytes, 0, bytes.Length);
    // ... 提示成功 ...
}

架構啟示

  • 將二進位文檔序列化為 XML,實現異構系統 (如 .NET 服務端 + Java 客戶端) 間的文檔交換。
  • 多平台架構下,建議採用基於文檔的交互 (如 MSMQ, JMS) 而非 RPC。

完整 WinForms 示例代碼包含 UI 設計器生成代碼、四個按鈕事件 (生成 XML、生成 Doc、載入 Doc、載入 XML) 及輔助方法,可作為文檔轉換模組的參考基礎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved