首页 > 解决方案 > 如何将 Open XML 文档保存(和打开)为 Excel 文件?

问题描述

我有一个 Open XML 文档。我想知道如何将其保存为 .xlsx 文件。

我尝试打开 Excel 软件,Developer -> Import但确实打开了我的 XML 文件作为 Excel - 但它实际上将 XML 文件作为 XML 文档打开,并且没有将其作为 Open XML 文档的 Excel 版本打开。

这是我拥有的 Open XML 文档:

<?xml version="1.0"?>
    <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
    xmlns:o="urn:schemas-microsoft-com:office:office"
    xmlns:x="urn:schemas-microsoft-com:office:excel"
    xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
    xmlns:html="http://www.w3.org/TR/REC-html40">
    <Worksheet     ss:Name="Forecast">
    <Names>
    <NamedRange     ss:Name="Print_Area"/>
    </Names>
    <Table>
    <Row>
      <Cell><Data ss:Type="String">Day1</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
      <Cell><Data ss:Type="String">Day2</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
      <Cell><Data ss:Type="String">Day3</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
      <Cell><Data ss:Type="String">Day4</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
      <Cell><Data ss:Type="String">Day5</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>

    <Cell/>

      <Cell><Data ss:Type="String">NP25</Data></Cell>
      <Cell><Data ss:Type="String">NP26</Data></Cell>
      <Cell><Data ss:Type="String">NP27</Data></Cell>
      <Cell><Data ss:Type="String">NP28</Data></Cell>
      <Cell><Data ss:Type="String">NP29</Data></Cell>
      <Cell><Data ss:Type="String">NP30</Data></Cell>
    </Row>

    <Row>
        <Cell><Data>1</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
        <Cell><Data>2</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
        <Cell><Data>3</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
        <Cell><Data>4</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
        <Cell><Data>5</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>

      <Cell/>

        <Cell><Data>25</Data></Cell>
        <Cell><Data>26</Data></Cell>
        <Cell><Data>27</Data></Cell>
        <Cell><Data>28</Data></Cell>
        <Cell><Data>29</Data></Cell>
        <Cell><Data>30</Data></Cell>
    </Row>
    <Row>
        <Cell><Data>1</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
        <Cell><Data>2</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
        <Cell><Data>3</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
        <Cell><Data>4</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
        <Cell><Data>5</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>

      <Cell/>

        <Cell><Data>25</Data></Cell>
        <Cell><Data>26</Data></Cell>
        <Cell><Data>27</Data></Cell>
        <Cell><Data>28</Data></Cell>
        <Cell><Data>29</Data></Cell>
        <Cell><Data>30</Data></Cell>
    </Row>
    <Row>
        <Cell><Data>1</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
        <Cell><Data>2</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
        <Cell><Data>3</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
        <Cell><Data>4</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
        <Cell><Data>5</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>

      <Cell/>

        <Cell><Data>25</Data></Cell>
        <Cell><Data>26</Data></Cell>
        <Cell><Data>27</Data></Cell>
        <Cell><Data>28</Data></Cell>
        <Cell><Data>29</Data></Cell>
        <Cell><Data>30</Data></Cell>
    </Row>
    <Row>
        <Cell><Data>1</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
        <Cell><Data>2</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
        <Cell><Data>3</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
        <Cell><Data>4</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
        <Cell><Data>5</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>

      <Cell/>

        <Cell><Data>25</Data></Cell>
        <Cell><Data>26</Data></Cell>
        <Cell><Data>27</Data></Cell>
        <Cell><Data>28</Data></Cell>
        <Cell><Data>29</Data></Cell>
        <Cell><Data>30</Data></Cell>
    </Row>
    <Row>
        <Cell><Data>1</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
        <Cell><Data>2</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
        <Cell><Data>3</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
        <Cell><Data>4</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>
        <Cell><Data>5</Data><NamedCell
      ss:Name="pRange_default"/><NamedCell     ss:Name="Print_Area"/></Cell>

      <Cell/>

        <Cell><Data>25</Data></Cell>
        <Cell><Data>26</Data></Cell>
        <Cell><Data>27</Data></Cell>
        <Cell><Data>28</Data></Cell>
        <Cell><Data>29</Data></Cell>
        <Cell><Data>30</Data></Cell>
    </Row>
    </Table>
    </Worksheet>
    </Workbook>

这是我导入的结果

如您所见,Excel 导入将我的 XML 文件作为文本 XML 文档打开,而不是将其视为 OpenXML 文档。请帮忙!

标签: openxml

解决方案


抱歉重播晚了。

要让 Excel 将此 xml 文件作为电子表格打开,您需要在文档属性中包含 Excel progid。

    <?xml version="1.0"?>
    <?mso-application progid="Excel.Sheet"?> <!--This is the relevant line-->
    <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
    xmlns:o="urn:schemas-microsoft-com:office:office"
    xmlns:x="urn:schemas-microsoft-com:office:excel"
    xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
    xmlns:html="http://www.w3.org/TR/REC-html40">
    <Worksheet     ss:Name="Forecast">
    ..............

推荐阅读