You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET通过Excel Interop以XML表格形式打开XML文件转XLSX的问题

用VB.NET以XML表格形式打开XML并转存为XLSX的解决方案

你编写的VB.NET代码在将XML转存为XLSX时出现表头错误,核心原因是默认调用Workbooks.Open(file)时,Excel会以普通XML格式解析文件,而非手动操作时选择的"XML表格"模式。同时原代码存在变量名错误(ownb应为owb),会引发运行时问题。

要实现和手动操作一致的效果,只需在Workbooks.Open方法中指定XML加载选项,以下是修正后的完整代码:

Imports Microsoft.Office.Interop.Excel

Module Module1
    Sub Main()
        Dim file As String = "你的XML文件绝对路径" ' 替换为实际文件路径
        Dim oxl As Application
        Dim owb As Workbook
        Dim newfile As String = Replace(file, ".xml", ".xlsx")

        oxl = New Application()
        oxl.DisplayAlerts = True
        oxl.Visible = True

        ' 关键参数:指定以XML表格形式打开文件
        owb = oxl.Workbooks.Open( _
            Filename:=file, _
            XmlLoadOption:=XlXmlLoadOption.xlXmlLoadImportToList _
        )

        ' 明确指定保存为XLSX格式
        owb.SaveAs(Filename:=newfile, FileFormat:=XlFileFormat.xlOpenXMLWorkbook)
        owb.Close()
        oxl.Quit()

        ' 释放COM对象,避免Excel进程残留
        System.Runtime.InteropServices.Marshal.ReleaseComObject(owb)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(oxl)
    End Sub
End Module

关键说明

  • XmlLoadOption:=XlXmlLoadOption.xlXmlLoadImportToList:这个参数强制Excel将XML数据导入为结构化列表,和手动打开时选择的"XML表格"模式完全一致,能保留正确的表头与格式。
  • 补充COM对象释放代码:防止程序结束后Excel进程在后台残留占用资源。
  • 明确指定FileFormat:避免因Excel版本差异导致的保存格式异常。

内容的提问来源于stack exchange,提问作者Petr Šmejkal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 07:42:36