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

我使用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表和其他选项,然后询问有关创build一个模式

我检查你的例子。 这不是一个真正的答案,但很多的评论…也许这足以让你find一个完整的解决scheme。

那么,Excel有(有限的)支持来本地添加XML并将其视为数据源。 如果包含模式(XSD),则会使用它,否则Excel将自动从您的数据创build模式。

我使用这个在线工具从您的示例数据创build一个模式:

 <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> 

正如你所看到的,你的列标题是从元素名称创build的…我没有发现为元素的标题添加不同的信息。 但也许有办法做到这一点…

如果这个模式被包含在你的文件中,或者在Excel中保存为XML-source,你至less可以使开放过程变得更简单。

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

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

你可以阅读Excel和XSD的这个教程