Excel 到 XML VBA - 需要跳过空标签

Posted

技术标签:

【中文标题】Excel 到 XML VBA - 需要跳过空标签【英文标题】:Excel to XML VBA - need to skip empty tags 【发布时间】:2018-05-21 14:31:10 【问题描述】:

我有一个 Excel 2016 模板工作簿,其中有一个供用户填写数据的区域(一些复制粘贴正在进行 + 涉及公式)。用户启动 VBA 宏以将其导出到 XML-data。我遇到的问题是整个 XML 导出区域并不总是始终如一地填充(大量分散的数据),并且导出的 XML-s 最终带有我想摆脱的空标签,但不确定该怎么做它。

VBA代码如下:

Sub XML_export()

XMLName = "C:\XML" & "\" & "Transaction_SERVICE_" & Format(Now, "yyyymmddhhmmss") & ".xml"
ActiveWorkbook.XmlMaps("Data_Map").Export Url:=XMLName

End Sub

以及 XML 文件的 XSD 架构:

<?xml version="1.0" encoding="utf-8"?>
<!-- Created with Liquid Studio 2018 (https://www.liquid-technologies.com) -->
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Data">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="Transaction">
          <xs:complexType>
            <xs:sequence>
              <xs:element minOccurs="0" name="Item" type="xs:string" />
              <xs:element minOccurs="0" name="Description" />
              <xs:element minOccurs="0" name="Quantity" type="xs:string" />
              <xs:element minOccurs="0" name="FromWHS" type="xs:string" />
              <xs:element minOccurs="0" name="ToWHS" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
         </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

这仍然会为 Excel 工作表中每个未填充的行提供空的 &lt;Transaction/&gt; 标签。我怎样才能在 XML 文件中获得 4 个填充的 Transaction 标记?目前,它仍将始终导出 10 个Transaction 标签,其中 6 个未填充(基于示例)。 XSD 是答案吗?

【问题讨论】:

【参考方案1】:

我认为我最终解决了这个难题,比我预期的要容易。我不需要将 Excel 工作表中的数据输入范围设置得这么大。我可以把它做成一行,它会随着新条目自动放大。

不幸的是,一旦数据被删除,数据输入范围似乎并没有减少,但是 VBA 代码可能有助于在导出完成后将其减少回单行。

【讨论】:

以上是关于Excel 到 XML VBA - 需要跳过空标签的主要内容,如果未能解决你的问题,请参考以下文章

Java使用Excel的问题:自动跳过空字段中文加拼音和时间处理错误的解决方法

index跳过空值提取整行数据

跳过空XML节点v.2

如何在 Spark JSON 中不跳过空值?

Symfony在序列化期间跳过空值

我怎样才能让这个 Map 双函数忽略/跳过空值?