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

如何通过ClosedXML读取OpenXML格式XmlDocument并生成可打开的Excel文件?

如何将OpenXML格式的XmlDocument直接转换为ClosedXML对象?

我有一个OpenXML格式的XmlDocument,结构示例如下:

<?xml version="1.0" encoding="utf-8"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook>
    <o:DocumentProperties>
        [snip]
    </o:DocumentProperties>
    <Styles>
        [snip]
    </Styles>
    <Worksheet ss:Name="Contract">
        <Table>
            <Row>
                <Cell ss:StyleID="s38">
                    <Data ss:Type="String"/>
                </Cell>
                <Cell ss:StyleID="s38">
                    <Data ss:Type="String">System Number</Data>
                </Cell>
                <Cell ss:StyleID="s38">
                    <Data ss:Type="String">Contract Number</Data>
                </Cell>
                <Cell ss:StyleID="s38">
                    <Data ss:Type="String">Customer Name(s)</Data>
                </Cell>
                <Cell ss:StyleID="s38">
                    <Data ss:Type="String">Customer System Number(s)</Data>
                </Cell>
                [snip]
            </Row>
            <Row>
                [snip]
            </Row>
            [etc]
        </Table>
        <x:WorksheetOptions>
            [snip]
        </x:WorksheetOptions>
    </Worksheet>
</Workbook>

我需要从公司内部网站向用户提供这个文件,但直接输出的代码无法正常运行:

MemoryStream strm = new MemoryStream();
XmlWriter xmlWriter = XmlWriter.Create(strm);

System.Xml.XPath.XPathNavigator xPathNavigator = xPartCollection.OwnerDocument.CreateNavigator();
xslt.Transform(xPathNavigator, xmlWriter);
strm.Position = 0;

Response.Clear();
Response.Charset = "utf-8";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1250");
Response.AddHeader("content-disposition", "attachment;filename=" + PartDefGuid.InternalName + Start + ".xlsx");
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.Charset = "";
Response.ContentEncoding = System.Text.Encoding.Default;
Response.BinaryWrite(strm.ToArray());
Response.Flush();
Response.SuppressContent = true;
Response.End();

Excel报错“无法打开此文件,文件格式或文件扩展名无效”,推测是公司网页下载Excel的安全设置过高导致。但网站另一处使用ClosedXML生成的Excel可以正常打开,所以希望通过ClosedXML直接读取该OpenXML格式的XmlDocument,避免重写原有生成代码。

我曾尝试将其转换为Dataset,但生成了17个独立表,合并处理较为繁琐,因此寻求直接转换的可行方法。

内容的提问来源于stack exchange,提问作者Jjmboni

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 06:55:27