使用使用 Excel 标记的 SQL Server 生成 XML

Posted

技术标签:

【中文标题】使用使用 Excel 标记的 SQL Server 生成 XML【英文标题】:Producing XML using SQL Server which uses Excel tags 【发布时间】:2020-03-17 09:33:40 【问题描述】:

我正在尝试实现以下输出:

<Cell ss:StyleID="s87">
    <Data ss:Type="String">N</Data>
    <NamedCell ss:Name="_FilterDatabase"/>
</Cell>

我的 SQL 代码如下所示:

SELECT
    'String' AS 'Data/@type',
    [Submit]  AS [Data], 
    NULL
FROM 
    dbo.[XML_Table]
FOR XML PATH ('Row')

生成的输出如下所示

<Row>
    <Data type="String">Y</Data>
</Row>

如何让它看起来像这样:

<Cell ss:StyleID="s87">
    <Data ss:Type="String">Y</Data>
    <NamedCell ss:Name="_FilterDatabase"/>
</Cell>

谢谢

显示所有字段的示例表输出,但我只是使用提交字段作为示例:

【问题讨论】:

表中的数据实际上看起来像什么? 另外,您得到的输出表明Submit 的值为'Y',但在您的预期输出中它需要一个'N' 的值? 对不起,输出应该是'Y',我复制了错误的行结果,我会看看我是否可以在这里获取表格,但它确实包含公司数据,所以我需要屏蔽它,我我正在解决的是我如何使用 sql 将 和 "ss:" 等添加到输出中,以获取我需要的所有相关位,如果您知道我的意思,输出看起来相同? 样本数据很好,它不一定是真实的,只是代表你想要的结果。 【参考方案1】:

您可以使用此代码非常接近 - 假设您在 SQL Server 的某个表中的 XML 中获得输出的所有元素和属性值:

DECLARE @Input TABLE (StyleId VARCHAR(20), 
                      CellType VARCHAR(20),
                      CellData VARCHAR(20), 
                      CellName VARCHAR(50))

INSERT INTO @Input (StyleId, CellType, CellData, CellName)
VALUES ('s87', 'String', 'Y', '_FilterDatabase');

WITH XMLNAMESPACES('urn:test' AS ss)
SELECT
    StyleId AS '@ss:StyleID',
    CellType AS 'Data/@ss:Type',
    CellData AS 'Data',
    CellName AS 'NamedCell/@ss:Name',
    '' AS 'NamedCell'
FROM
    @Input
FOR XML PATH('Cell')

这导致输出:

<Cell xmlns:ss="urn:test" ss:StyleID="s87">
  <Data ss:Type="String">Y</Data>
  <NamedCell ss:Name="_FilterDatabase"></NamedCell>
</Cell>

不过,我看不出您如何“跳过”实际声明 XML 命名空间别名 - 所以它会显示在您的 &lt;Cell&gt; ***节点上。

【讨论】:

谢谢你,这正是我想要的,我猜我可以添加更多,因为某些字段似乎也有索引属性等?有些没有过滤的数据库。

以上是关于使用使用 Excel 标记的 SQL Server 生成 XML的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 读取Excel 2003

sql server使用合并单元格导入excel数据

使用 VBA 在 SQL Server 中上传 Excel 文件数据

使用asp.net将Excel文件数据导入Sql server

使用 VBA 将 Excel 表连接到 SQL Server

如何使用sql server从excel中获取数据