2014-06-12 26 views
0

我已經擴散板這樣的XML如何將MS Office電子表格xml內容轉換爲Silverlight中的xlsx?

<?xml version="1.0"?> 
<ss:Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"> 
    <ss:Styles> 
     <ss:Style ss:ID="1"> 
      <ss:Font ss:Bold="1"/> 
     </ss:Style> 
    </ss:Styles> 
    <ss:Worksheet ss:Name="Sheet1"> 
     <ss:Table> 
      <ss:Column ss:Width="80"/> 
      <ss:Column ss:Width="80"/> 
      <ss:Column ss:Width="80"/> 
      <ss:Row ss:StyleID="1"> 
       <ss:Cell> 
        <ss:Data ss:Type="String">First Name</ss:Data> 
       </ss:Cell> 
       <ss:Cell> 
        <ss:Data ss:Type="String">Last Name</ss:Data> 
       </ss:Cell> 
       <ss:Cell> 
        <ss:Data ss:Type="String">Phone Number</ss:Data> 
       </ss:Cell> 
      </ss:Row>   

      <ss:Row> 
       <ss:Cell> 
        <ss:Data ss:Type="String">Kevin</ss:Data> 
       </ss:Cell> 
       <ss:Cell> 
        <ss:Data ss:Type="String">Boske</ss:Data> 
       </ss:Cell> 
       <ss:Cell> 
        <ss:Data ss:Type="String">(425) 123-4567</ss:Data> 
       </ss:Cell> 
      </ss:Row> 
     </ss:Table> 
    </ss:Worksheet> 
</ss:Workbook> 

我想這個XML轉換成XLSX。

我想什麼是

private void btnExport_Click(object sender, RoutedEventArgs e) 
    { 
      SaveFileDialog Savedlg = new SaveFileDialog(); 
      Savedlg.Filter = "XLS (.xls)|*.xls|xlsx (.xlsx)|*.xlsx"; 
      byte[] xlfile = this.byts; 
      if ((bool)Savedlg.ShowDialog()) 
      { 
       System.IO.MemoryStream mStream = new System.IO.MemoryStream(); 
       mStream.Write(xlfile, 0, xlfile.Length); 
       Stream fileStream = Savedlg.OpenFile(); 
       mStream.WriteTo(fileStream); 
       fileStream.Close(); 
      } 



    } 

    byte[] byts = null; 
    private void import_Click(object sender, RoutedEventArgs e) 
    { 
     OpenFileDialog openFileDialog1 = new OpenFileDialog();   
     openFileDialog1.ShowDialog(); 
     System.IO.Stream fileStream = openFileDialog1.File.OpenRead();   
     this.byts= ReadFully(fileStream); 
    } 

    public static byte[] ReadFully(Stream input) 
    { 
     byte[] buffer = new byte[16 * 1024]; 
     using (MemoryStream ms = new MemoryStream()) 
     { 
      int read; 
      while ((read = input.Read(buffer, 0, buffer.Length)) > 0) 
      { 
       ms.Write(buffer, 0, read); 
      } 
      return ms.ToArray(); 
     } 
    } 

另存爲XLS正常工作,開啓時,在Excel文件它顯示像

一個消息「您試圖打開該文件是不同的格式,然後由文件擴展名指定「。

保存爲XLSX不起作用。

回答

0

我會推薦閱讀xml文件,使用XmlReaderXDocumentXmlDocument類。然後使用Open XML SDK,您可以創建一個excel文件。

Open XML SDK有很高的學習曲線。所以你可能也想看看Closed XML,這是一個Open XML SDK的包裝,並且有一個溫和的學習曲線。

+0

它是一個silverlight應用程序,所以它不會支持打開xml sdk –

相關問題