将 .XLSX 或 .XLSM 转换为 XML

Convert .XLSX or .XLSM to XML

我有下面的代码,我用它以编程方式将 Office 2010 Excel 电子表格保存到 XML。此代码生成一个完美的 XML 文档,其架构与 Excel 另存为选项匹配。我的问题是有一种方法可以在不使用互操作程序集的情况下实现这一点。我查看了 Open XML 文档,但找不到允许我将文档另存为 xml 的 "Save As" 选项。这可能吗?在 c# 或 vb.net 中的任何帮助将不胜感激。

 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

谢谢, 混沌

简而言之,互操作是最好的,并且可能是您想要实现的唯一开箱即用的解决方案。

一些可能有用的线索是:

  1. Spire.XLS which can be found here for free。看起来它可能支持导出到 XML 给定模式,但我不会打赌,如果只是肤浅的浏览。
  2. ClosedXML,一个围绕 OpenXML 的包装器,它为底层数据提供了一个更像应用程序的接口。通过浏览源代码和文档,我不认为您有机会导出 xml 地图。

您当然可以使用 OpenXML 来获取 XML 映射的内容等等。关于 XML 地图如何在 OpenXML 中工作的 answer 指向 CustomXmlMappingsPart 如果您想走那条路。

然而,我的建议是接受互操作性 excel 并且有利有弊。