openxml - 如何将 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 文档。请帮忙!
解决方案
抱歉重播晚了。
要让 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">
..............
推荐阅读
- c# - .NET 5 Blazor ServerSide 和 WebAssembly(混合)与 WebAPI 身份验证?
- machine-learning - 需要指导 - GridSearchCV 返回的参数会降低 XGBoost 模型的准确性
- sql - 如何在 SQL Server 中执行此操作?
- mysql - 如果列包含子字符串,phpmyadmin 会给出连接 2 个表的语法错误
- authentication - 让外部应用程序使用自己的身份验证机制的最佳矩阵(突触)机制是什么?
- xaml - 将数据保存到本地存储
- elasticsearch - Elasticsearch 7.11.1 无法识别 ?realtime 参数
- django - 如何在 Django 模型文本字段中创建、获取和更新 JSON 数据?
- javascript - 折线图问题。图表 JS
- typescript - 我不知道会发生什么,但我尝试将一些值放入数组中,但它不起作用