2016-12-27 181 views
0

我有下面的代碼,用於以編程方式將Office 2010 Excel電子表格保存爲XML。此代碼生成一個完美的XML文檔,其架構與Excel Save As選項匹配。我的問題是有一種方法可以在不使用互操作程序集的情況下實現這一點。我瀏覽了Open XML文檔,找不到一個「另存爲」選項,它允許我將文檔保存爲xml。這可能嗎?任何幫助在C#或vb.net將不勝感激。將.XLSX或.XLSM轉換爲XML

Private Function ConvertExcelToXml(path As String, file As String) As Boolean 
    Dim returnValue as Boolean 
    returnValue = True 
    Try 
     Dim importfile As String = (path & file) + ".xlsm" 
     Dim exportfile As String = (path & file) + ".xml" 
     Dim app As New Application() 
     app.Workbooks.Open(importfile, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
          Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
          Type.Missing, Type.Missing, Type.Missing) 
     Dim data As String = String.Empty 

     app.ActiveWorkbook.XmlMaps(1).ExportXml(data) 'export the excel sheet xml to the string variable 
     System.IO.File.Delete(exportfile) 'delete the file if it already exists 
     System.IO.File.WriteAllText(exportfile, data) 'write the new file 
     app.Workbooks.Close() 
    Catch ex As Exception 
     returnValue = false 
    End Try 
    return returnValue 
End Function 

感謝, 混沌

+0

當您談到轉換爲XML時,是指SpreadsheetML或XML Spreadheets? – strongbutgood

+0

我不確定這些格式是什麼。我試圖獲得一個XML文件,該文件與我在Excel中使用「另存爲」選項時所得到的匹配。 – Chaos

+0

所以你如何將xml映射(首先由'ActiveWorkbook.XmlMaps(1)'檢索到)映射到電子表格中?您最初是將一些XML導入到Excel中,還是以編程方式添加地圖? – strongbutgood

回答

0

總之,互操作是最好的,只可能爲你想達到什麼現成的解決方案的。

可以工作的一些可能的線索是:

  1. Spire.XLS可以發現here for free。看起來它可能支持在給定模式的情況下將數據導出到XML,但我不會因爲表面瀏覽而下注。
  2. ClosedXML,一個圍繞OpenXML的包裝,它提供了更多的應用程序,如底層數據的接口。從瀏覽源代碼和文檔我不喜歡導出XML映射的機會。

當然您可以使用OpenXML推出自己的產品以獲取XML映射的內容等等。如果您想要採用該路徑,則在OpenXML中XML地圖工作方式的answer指向CustomXmlMappingsPart

然而,我的建議是接受互操作性優秀,專業人士帶着利弊。

+0

謝謝。我感謝你在這方面的時間。 – Chaos