在excel中为sql xml生成的文件显示自定义自动标头

时间:2016-08-19 14:10:08

标签: xml excel tsql

我正在使用select和for xml子句从sql server生成xml文件 生成的xml文件在excel中打开,我需要为每个列/字段添加自定义标头 我可以在sql脚本中指定自定义标头名吗?

根据Shnugo的要求,这里是使用的xml的样本

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<VendorServices>
  <VendorService>
    <VendorServiceId>0</VendorServiceId>
    <VendorId>0</VendorId>
    <ServiceId>0</ServiceId>
    <Cover>0</Cover>
    <Percentage>0</Percentage>
    <TechRateHr>0</TechRateHr>
    <HelperRateHr>0</HelperRateHr>
  </VendorService>
  <VendorService>
    <VendorServiceId>1</VendorServiceId>
    <VendorId>1</VendorId>
    <ServiceId>1</ServiceId>
    <Cover>0</Cover>
    <Percentage>0</Percentage>
    <TechRateHr>0</TechRateHr>
    <HelperRateHr>0</HelperRateHr>
  </VendorService>
</VendorServices>

我可以用Excel 2013打开它,Excel问我是否要打开像xml表和其他一些选项,然后询问有关模式的创建

1 个答案:

答案 0 :(得分:1)

我查看了你的例子。这不是一个真正的答案,而是评论的很多......也许它足以让你找到一个完整的解决方案。

嗯,Excel有(有限的)支持本地添加XML并将其视为数据源。如果包含架构(XSD),将使用它,否则,Excel将自动从您的数据创建架构。

我使用this online tool根据示例数据创建架构:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="VendorServices">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="VendorService" maxOccurs="unbounded" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:byte" name="VendorServiceId"/>
              <xs:element type="xs:byte" name="VendorId"/>
              <xs:element type="xs:byte" name="ServiceId"/>
              <xs:element type="xs:byte" name="Cover"/>
              <xs:element type="xs:byte" name="Percentage"/>
              <xs:element type="xs:byte" name="TechRateHr"/>
              <xs:element type="xs:byte" name="HelperRateHr"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

如您所见,您的列标题是从元素名称创建的...我没有找到为元素标题添加不同信息。但也许有办法做到这一点......

如果您的文件中包含此架构或在Excel中保存为XML源,则至少可以使打开过程更容易。

您可以执行以下操作之一:

  • 直接从T-SQL使用FOR XML PATH导出您想要的元素名称的数据(如果需要帮助,可以显示您的实际查询)
  • 使用XSLT转换现有XML
  • 使用VBA或任何其他编程语言进行单独处理
  • 尝试创建XML格式,Excel正在使用自己。 XLSX个文件只不过是一个ZIP文件,您可以将其重命名为FileName.zip并打开。您只需要/xl/worksheets/*.xml个文件。也许是sharedStrings.xml。但我认为你可以轻松学习基本格式。

您可能会阅读此tutorial for Excel and XSD