Excel的配置-开放的XML文件

embedded/2025/1/24 14:45:30/
xmlns="http://www.w3.org/2000/svg" style="display: none;">

目的

为什么说Excel的配置呢?就是因为很多程序,都是通过Excel导出数据或者图表之类的东西,那如何导出呢?所以必须了解Excel本身的情况。
虽然现在有第三方的工具,但如何想实现自定义的或者复杂的功能,还是自己研究透这些东西。
我在使用中就发现了很多功能第三方工具根本实现不了。

参考文档:

https://support.microsoft.com/zh-cn/office/excel-%E4%B8%AD%E7%9A%84-xml-%E6%A6%82%E8%BF%B0-f11faa7e-63ae-4166-b3ac-c9e9752a7d80

xml_8">Excel就是xml文件

xlsx是Microsoft Office EXCEL 2007/2010/2013/2016/2019文档的扩展名。
其基于Office Open XML标准的压缩文件格式取代了其以前专有的默认文件格式,在传统的文件名扩展名后面添加了字母“x”(即“.docx”取代“.doc”、“.xlsx”取代“.xls”、“.pptx”取代“.ppt”)。
任何能够打开“.xlsx”文件的文字处理软件都可以将该文档转换为“.xls”文件,“.xlsx”文件比“.xls”文件所占用空间更小。
“.xlsx”格式的文件本质上是一个ZIP文件。将一个“.xlsx”文件的后缀改为ZIP后是可以用解压工具打开或是解压的。
事实上,Word2007的基本文件就是ZIP格式的,可以算作是“.xlsx”文件的容器。
“.xlsx”格式文件的主要内容是保存为XML格式的,但文件并非直接保存于磁盘。它是保存在一个ZIP文件中,然后取扩展名为“.xlsx”。
将“.xlsx”格式的文件后缀改为ZIP后解压, 可以看到解压出来的文件夹中有word这样一个文件夹,它包含了Word文档的大部分内容。
而其中的document.xml文件则包含了文档的主要文本内容。
最新版本的WPS 2007 可以打开“.xlsx”格式的文件。

最后的疑问

最后,简单的来说,xlsx,就是一个压缩的xml文件集合。
那这个Xml文件是什么情况呢?

分析

从一个Excel分析

下面是一个Excel文件:
在这里插入图片描述

打开是这样的:
在这里插入图片描述

更改为zip文件:
在这里插入图片描述

解压zip文件:
在这里插入图片描述

_rels文件夹:有一个名为.rels的文件,包含关于程序包关系的信息。
其中有三个关系属性:Id为任意字符串,在.rels文件中必须是唯一的;Type表示关系的类型;Target指定包含关系的目标的文件夹和文件。
.rels文件的内容为:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/><Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/>
</Relationships>

可以发现,没有什么实质性的内容。
docProps 文件夹:包含各种XML文件,描述文件属性和应用程序设置。类似于单击Office按钮,选择“准备——属性”后看到的内容。docProps文件夹包含 着至少一个名为app.xml的文件和一个名为core.xml的文件。这些文件包含着Excel文件的元信息,例如创建者的名字、修改的和创建的日期。
这个就不细说了,基本不用改。
xl文件夹:包含文件的核心部分。根据工作簿中的内容,该文件夹中含有一些子文件夹,并且还含有工作簿设置的XML文件。如果工作簿中含有VBA代码,那么文件夹中还有以bin为扩展名的二进制文件。
这个是核心,得细说。
[Content_Types].xml文件:列出了包括在Excel文件程序包中其它部件的内容类型。
打开xl文件夹:
在这里插入图片描述

_rels:其中的关系文件workbook.xml.rels定义了工作簿、数据和格式部件的关系。
charts:包含图表设置的XML文件。
chartsheets:包含工作簿中每个图表数据的XML文件。
theme:包含工作簿主题的数据的XML文件。
worksheets:包含工作簿中每个工作表的XML文件。
在这里插入图片描述

sheet2.xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<dimension ref="A1:D31"/><sheetViews><sheetView workbookViewId="0"/></sheetViews>
<sheetFormatPr defaultRowHeight="14.25" customHeight="0" zeroHeight="0" outlineLevelRow="0" outlineLevelCol="3"/>
<sheetData>
<row r="1">
<c r="A1" s="1" t="s"><v>3</v></c>
<c r="B1" s="2" t="s"><v>4</v></c>
<c r="C1" s="3" t="s"><v>5</v></c>
<c r="D1" s="1"/></row>
<row r="2">
<c r="A2" s="4"><v>13</v></c>
<c r="B2" s="5"><v>40</v></c>
<c r="C2"><v>240</v></c>
</row>
<row r="3"><c r="A3" s="4"><v>4</v></c><c r="B3"><v>39</v></c><c r="C3"><v>239</v></c></row><row r="4"><c r="A4" s="4"><v>5</v></c><c r="B4" s="5"><v>38</v></c><c r="C4"><v>238</v></c></row><row r="5"><c r="A5" s="4"><v>65</v></c><c r="B5"><v>37</v></c><c r="C5"><v>237</v></c></row><row r="6"><c r="A6" s="4"><v>67</v></c><c r="B6" s="5"><v>36</v></c><c r="C6"><v>236</v></c></row><row r="7"><c r="A7" s="4"><v>68</v></c><c r="B7"><v>35</v></c><c r="C7"><v>235</v></c></row><row r="8"><c r="A8" s="4"><v>69</v></c><c r="B8" s="5"><v>34</v></c><c r="C8"><v>234</v></c></row><row r="9"><c r="A9" s="4"><v>71</v></c><c r="B9"><v>33</v></c><c r="C9"><v>233</v></c></row><row r="10"><c r="A10" s="4"><v>72</v></c><c r="B10" s="5"><v>32</v></c><c r="C10"><v>232</v></c></row><row r="11"><c r="A11" s="4"><v>78</v></c><c r="B11"><v>31</v></c><c r="C11"><v>231</v></c></row><row r="12"><c r="A12" s="4"><v>81</v></c><c r="B12" s="5"><v>30</v></c><c r="C12"><v>230</v></c></row><row r="13"><c r="A13" s="4"><v>82</v></c><c r="B13"><v>29</v></c><c r="C13"><v>229</v></c></row><row r="14"><c r="A14" s="4"><v>81</v></c><c r="B14" s="5"><v>28</v></c><c r="C14"><v>228</v></c></row><row r="15"><c r="A15" s="4"><v>82</v></c><c r="B15"><v>27</v></c><c r="C15"><v>227</v></c></row><row r="16"><c r="A16" s="4"><v>83</v></c><c r="B16" s="5"><v>26</v></c><c r="C16"><v>226</v></c></row><row r="17" spans="1:3"><c r="A17" s="4"><v>84</v></c><c r="B17"><v>25</v></c><c r="C17"><v>225</v></c></row><row r="18" spans="1:3"><c r="A18" s="4"><v>85</v></c><c r="B18" s="5"><v>24</v></c><c r="C18"><v>224</v></c></row><row r="19" spans="1:3"><c r="A19" s="4"><v>86</v></c><c r="B19"><v>23</v></c><c r="C19"><v>223</v></c></row><row r="20" spans="1:3"><c r="A20" s="4"><v>87</v></c><c r="B20" s="5"><v>22</v></c><c r="C20"><v>222</v></c></row><row r="21" spans="1:3"><c r="A21" s="4"><v>88</v></c><c r="B21"><v>21</v></c><c r="C21"><v>221</v></c></row><row r="22" spans="1:3"><c r="A22" s="4"><v>91</v></c><c r="B22" s="5"><v>20</v></c><c r="C22"><v>220</v></c></row><row r="23" spans="1:3"><c r="A23" s="4"><v>92</v></c><c r="B23"><v>19</v></c><c r="C23"><v>219</v></c></row><row r="24" spans="1:3"><c r="A24" s="4"><v>93</v></c><c r="B24" s="5"><v>18</v></c><c r="C24"><v>218</v></c></row><row r="25" spans="1:3"><c r="A25" s="4"><v>94</v></c><c r="B25"><v>17</v></c><c r="C25"><v>217</v></c></row><row r="26" spans="1:3"><c r="A26" s="4"><v>95</v></c><c r="B26" s="5"><v>16</v></c><c r="C26"><v>216</v></c></row><row r="27" spans="1:3"><c r="A27" s="4"><v>96</v></c><c r="B27"><v>15</v></c><c r="C27"><v>215</v></c></row><row r="28" spans="1:3"><c r="A28" s="4"><v>97</v></c><c r="B28" s="5"><v>14</v></c><c r="C28"><v>214</v></c></row><row r="29" spans="1:3"><c r="A29" s="4"><v>98</v></c><c r="B29"><v>13</v></c><c r="C29"><v>213</v></c></row><row r="30" spans="1:3"><c r="A30" s="4"><v>100</v></c><c r="B30" s="5"><v>12</v></c><c r="C30"><v>212</v></c></row><row r="31" spans="1:3"><c r="A31" s="4"><v>120</v></c><c r="B31"><v>10</v></c><c r="C31"><v>220</v></c></row></sheetData><pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/></worksheet>

t=“s”,表明相应单元格包含字符串,拿A1举例,t=“s”,3;3表明在SharedString.xml里面的索引值为3,由于索引值是以0为基数开始,内容告诉我们需要的索引值是3,因此我们需要找到sharedStrings.xml文件中第4个
sharedStrings.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="15" uniqueCount="6">
<si><t>Hello, Qt!</t></si>
<si><t>1、成绩与名次</t></si>
<si><t>2.成绩名次数据</t></si>
<si><t>成绩</t></si>
<si><t>班级名次</t></si>
<si><t>学校名次</t></si></sst>

第4个si,是“成绩”,这要对的。
而对于13,这种13直接是相应数字了,这样是对的。

xml_98">如何更改xml

我们验证一下,把13改成138,然后,压缩回去,看看是不是这样:
更改sheet2.xml:如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<dimension ref="A1:D31"/><sheetViews><sheetView workbookViewId="0"/></sheetViews>
<sheetFormatPr defaultRowHeight="14.25" customHeight="0" zeroHeight="0" outlineLevelRow="0" outlineLevelCol="3"/>
<sheetData>
<row r="1">
<c r="A1" s="1" t="s"><v>3</v></c>
<c r="B1" s="2" t="s"><v>4</v></c>
<c r="C1" s="3" t="s"><v>5</v></c>
<c r="D1" s="1"/></row>
<row r="2">
<c r="A2" s="4"><v>138</v></c>
<c r="B2" s="5"><v>40</v></c>
<c r="C2"><v>240</v></c>
</row>
<row r="3"><c r="A3" s="4"><v>4</v></c><c r="B3"><v>39</v></c><c r="C3"><v>239</v></c></row><row r="4"><c r="A4" s="4"><v>5</v></c><c r="B4" s="5"><v>38</v></c><c r="C4"><v>238</v></c></row><row r="5"><c r="A5" s="4"><v>65</v></c><c r="B5"><v>37</v></c><c r="C5"><v>237</v></c></row><row r="6"><c r="A6" s="4"><v>67</v></c><c r="B6" s="5"><v>36</v></c><c r="C6"><v>236</v></c></row><row r="7"><c r="A7" s="4"><v>68</v></c><c r="B7"><v>35</v></c><c r="C7"><v>235</v></c></row><row r="8"><c r="A8" s="4"><v>69</v></c><c r="B8" s="5"><v>34</v></c><c r="C8"><v>234</v></c></row><row r="9"><c r="A9" s="4"><v>71</v></c><c r="B9"><v>33</v></c><c r="C9"><v>233</v></c></row><row r="10"><c r="A10" s="4"><v>72</v></c><c r="B10" s="5"><v>32</v></c><c r="C10"><v>232</v></c></row><row r="11"><c r="A11" s="4"><v>78</v></c><c r="B11"><v>31</v></c><c r="C11"><v>231</v></c></row><row r="12"><c r="A12" s="4"><v>81</v></c><c r="B12" s="5"><v>30</v></c><c r="C12"><v>230</v></c></row><row r="13"><c r="A13" s="4"><v>82</v></c><c r="B13"><v>29</v></c><c r="C13"><v>229</v></c></row><row r="14"><c r="A14" s="4"><v>81</v></c><c r="B14" s="5"><v>28</v></c><c r="C14"><v>228</v></c></row><row r="15"><c r="A15" s="4"><v>82</v></c><c r="B15"><v>27</v></c><c r="C15"><v>227</v></c></row><row r="16"><c r="A16" s="4"><v>83</v></c><c r="B16" s="5"><v>26</v></c><c r="C16"><v>226</v></c></row><row r="17" spans="1:3"><c r="A17" s="4"><v>84</v></c><c r="B17"><v>25</v></c><c r="C17"><v>225</v></c></row><row r="18" spans="1:3"><c r="A18" s="4"><v>85</v></c><c r="B18" s="5"><v>24</v></c><c r="C18"><v>224</v></c></row><row r="19" spans="1:3"><c r="A19" s="4"><v>86</v></c><c r="B19"><v>23</v></c><c r="C19"><v>223</v></c></row><row r="20" spans="1:3"><c r="A20" s="4"><v>87</v></c><c r="B20" s="5"><v>22</v></c><c r="C20"><v>222</v></c></row><row r="21" spans="1:3"><c r="A21" s="4"><v>88</v></c><c r="B21"><v>21</v></c><c r="C21"><v>221</v></c></row><row r="22" spans="1:3"><c r="A22" s="4"><v>91</v></c><c r="B22" s="5"><v>20</v></c><c r="C22"><v>220</v></c></row><row r="23" spans="1:3"><c r="A23" s="4"><v>92</v></c><c r="B23"><v>19</v></c><c r="C23"><v>219</v></c></row><row r="24" spans="1:3"><c r="A24" s="4"><v>93</v></c><c r="B24" s="5"><v>18</v></c><c r="C24"><v>218</v></c></row><row r="25" spans="1:3"><c r="A25" s="4"><v>94</v></c><c r="B25"><v>17</v></c><c r="C25"><v>217</v></c></row><row r="26" spans="1:3"><c r="A26" s="4"><v>95</v></c><c r="B26" s="5"><v>16</v></c><c r="C26"><v>216</v></c></row><row r="27" spans="1:3"><c r="A27" s="4"><v>96</v></c><c r="B27"><v>15</v></c><c r="C27"><v>215</v></c></row><row r="28" spans="1:3"><c r="A28" s="4"><v>97</v></c><c r="B28" s="5"><v>14</v></c><c r="C28"><v>214</v></c></row><row r="29" spans="1:3"><c r="A29" s="4"><v>98</v></c><c r="B29"><v>13</v></c><c r="C29"><v>213</v></c></row><row r="30" spans="1:3"><c r="A30" s="4"><v>100</v></c><c r="B30" s="5"><v>12</v></c><c r="C30"><v>212</v></c></row><row r="31" spans="1:3"><c r="A31" s="4"><v>120</v></c><c r="B31"><v>10</v></c><c r="C31"><v>220</v></c></row></sheetData><pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/></worksheet>

在这里插入图片描述
通过打开记事本,进行更改:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

压缩文件,再改成xlsx文件:
在这里插入图片描述

再打开看看,是否改了呢?
是改了:
在这里插入图片描述

那图表呢

图表是这一个文件夹:
在这里插入图片描述

打开chart1.xml看看:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><c:chartSpace xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<c:chart>
<c:plotArea>
<c:layout><c:manualLayout><c:layoutTarget val="inner"></c:layoutTarget><c:xMode val="edge"></c:xMode><c:yMode val="edge"></c:yMode><c:x val="0.036039260868312"></c:x><c:y val="0.0347550446869382"></c:y><c:w val="0.923373092462136"></c:w><c:h val="0.841000858305034"></c:h></c:manualLayout></c:layout>
<c:barChart><c:barDir val="col"/><c:ser><c:idx val="0"/><c:order val="0"/><c:cat><c:numRef><c:f>Sheet2!$A$2:$A$31</c:f></c:numRef></c:cat><c:val><c:numRef><c:f>Sheet2!$B$2:$B$31</c:f></c:numRef></c:val></c:ser><c:axId val="1615049679"/><c:axId val="1"/>
</c:barChart>
<c:lineChart>
<c:ser><c:idx val="1"/><c:order val="1"/>
<c:marker><c:symbol val="none"/></c:marker>
<c:cat><c:numRef><c:f>Sheet2!$A$2:$A$31</c:f></c:numRef></c:cat><c:val><c:numRef><c:f>Sheet2!$C$2:$C$31</c:f></c:numRef></c:val><c:smooth val="0"/></c:ser><c:axId val="1615049679"/><c:axId val="1"/>
</c:lineChart>
<c:catAx><c:axId val="1615049679"/><c:scaling><c:orientation val="minMax"/></c:scaling><c:axPos val="b"/><c:majorGridlines/><c:minorGridlines/><c:title><c:tx><c:rich><a:bodyPr/><a:lstStyle/><a:p><a:pPr lvl="0"><a:defRPr b="0"/></a:pPr><a:r><a:t></a:t></a:r></a:p></c:rich></c:tx><c:overlay val="0"/></c:title><c:crossAx val="1"/></c:catAx><c:valAx><c:axId val="1"/><c:scaling><c:orientation val="minMax"/></c:scaling><c:axPos val="l"/><c:majorGridlines/><c:minorGridlines/><c:title><c:tx><c:rich><a:bodyPr/><a:lstStyle/><a:p><a:pPr lvl="0"><a:defRPr b="0"/></a:pPr><a:r><a:t></a:t></a:r></a:p></c:rich></c:tx><c:overlay val="0"/></c:title><c:crossAx val="1615049679"/></c:valAx></c:plotArea><c:legend><c:legendPos val="r"/><c:overlay val="0"/></c:legend></c:chart></c:chartSpace>

这就是它:
在这里插入图片描述

<c:barChart>就是柱状图
<c:lineChart>就是线状图

关于Xml

XML 是一种可扩展标记语言,可显示任何平台或应用程序可读的数据,并且XML文件是一种简单的文本文件,可以使用记事本创建,任何程序都可以很容易地从中读取 数据,而且这种文件格式也不易损坏。而Microsoft Office引入的新的开放的XML文件格式,就具备了这些优点。它使得我们可以使用其他应用 程序软件来读取或编辑Office文档,例如无须打开Excel就能修改工作簿、插入新工作表等。此外,与旧的二进制格式文件相比,新的文件格式也减少了 工作簿损坏的机率,并且能够根据文件包内的相关文件来修复文件,例如删除或破坏了XML文件的一些字节后,在Excel中仍然可以读取数据的其余部分。使 用新文件格式的文档数据实际上是文本文件,这使得文件大小也比相应的二进制文档要小。同时,文档组织也是结构化的,因此可以提取其中单独的元素。
还有很重要的一点是,新的XML文件格式使得可以通过自定义功能区来重新调整用户界面,实现新增的功能。

总结

这样了解通了Excel的配置之后,想通过程序更改xml就简单了,你也可以输出你想要的图表,程序员的才华终于可以施展了。
哈哈,原来就是xml文件,那不就简单了,哈哈!
最后以图说明:
在这里插入图片描述


http://www.ppmy.cn/embedded/156595.html

相关文章

蓝桥杯lesson3---string的使用

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” string的概念 string字符串是一种更加高级的封装&#xff0c;string字符串中包含了大量的方法&#xff0c;这些方法使得字符串的操作变得更加简单&#xff0c;string的使用&…

【Java计算机毕业设计】基于Springboot+Vue汽车租赁管理系统【源代码+数据库+LW文档+开题报告+答辩稿+部署教程+代码讲解】

源代码数据库LW文档&#xff08;1万字以上&#xff09;开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统&#xff1a;Window操作系统 2、开发工具&#xff1a;IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

基于Java Web的网上房屋租售网站

内容摘要 本毕业设计题目为《基于Java Web的网上房屋租售网站》&#xff0c;是在信息化时代下充分利用互联网对传统房屋租售方式进行创新&#xff0c;在互联网上进行房屋租售突破了传统方式的局限性。对于房屋租售的当事人都提供了极大的便利。本稳针对了实际用户需求&#xf…

C++—21、C++ 中构造函数Constructors

一、什么是构造函数&#xff1f; 构造函数是一个特殊的方法&#xff0c;它在类每次实例化创建对象的时侯自动调用&#xff0c;用于初始化对象。 构造函数的名字必须与类名完全相同&#xff0c;并且没有返回类型&#xff0c;甚至连void也没有。 构造函数的目的是确保对象在创…

C语言初阶牛客网刷题——HJ73 计算日期到天数转换【难度:简单】

1. 题目描述——HJ73 计算日期到天数转换 牛客网OJ题链接 描述 每一年中都有 12 个月份。其中&#xff0c;1,3,5,7,8,10,12 月每个月有 31 天&#xff1b; 4,6,9,11 月每个月有 30 天&#xff1b;而对于 2 月&#xff0c;闰年时有29 天&#xff0c;平年时有 28 天。 现在&am…

Android节点读写实现

在工作中&#xff0c;我们会对一些节点进行读写操作。比如控制闪光灯&#xff0c;指示灯;降噪芯片开关或其低功耗开关&#xff0c;因为项目中常用到&#xff0c;在此记录&#xff0c;备忘&#xff5e; 直接上代码&#xff0c;想用直接拿去 一 监听某个节点的写入值的反馈 有些…

python将txt文件转成csv文件

1.才开始使用Jupyter Notebook,发现用此软件做些实践性的工作还是非常方便的,在此强烈推荐 2)网上下个txt文本文件,为了想做后续词云统计方便,果断转换为csv,代码如下: import csv data[] with open(C:\\Users\\Administrator\\Desktop\\修行大智慧\\《道德经》原文全文&#…

大数据技术笔记

大数据技术概述 本章初步介绍大数据领域技术涉及的一些基础理论&#xff0c;如分布式、存储、网络等知识。 分布式理论 大数据意味数据量大&#xff0c;那么存储和计算数据的节点就不大可能只有一个&#xff0c;而是采用分而治之的思想在多个节点中存储和计算&#xff0c;提…