精华内容
下载资源
问答
  • java生成一个XML文件,并且将该文件压缩成ZIP格式后再写到硬盘上

     

    要将一些数据生成为XML文件,但是不写到硬盘上,而是将该文件压缩成ZIP格式后再写到硬盘上。最终结果是:硬盘上有一个test.zip的文件,解压后得到test.xml文件。
    在你声明ZipEntry的时候在name后加上.xml后缀就可以了!!!
    实例如下:
    
     
    
    运行后,在D盘里就有一个test.zip文件,里包含的就是一个test.xml文件了。

     

    展开全文
  • 众所周知,Office 2007采用了新的文件格式。例如,在Excel 2007中,当您保存文件时会默认以xlsx为扩展名来保存,采用这种格式的文件不包含宏;如果要保存带有宏的工作簿,那么应该以xlsm为扩展名保存。(当然,您...

    众所周知,Office 2007采用了新的文件格式。例如,在Excel 2007中,当您保存文件时会默认以xlsx为扩展名来保存,采用这种格式的文件不包含宏;如果要保存带有宏的工作簿,那么应该以xlsm为扩展名保存。(当然,您可以在Excel选项中更改保存文件时默认的文件格式)。
    新的文件格式有:

    • xlsx:不带有宏的工作簿文件。

    • xlsm:包含宏的工作簿文件。

    • xltx:不带有宏的工作簿模板文件。

    • xltm:包含宏的工作簿模板文件。

    • xlsa:加载项文件。

    • xlsb:与旧的xls文件格式相同,但是可以兼容新特性的二进制文件。

    • xlsk:备份文件。

    除xlsb文件外,其他的文件都是可以打开的XML文件,意味着其他文件可以读写这些文件。
    Office 2007的新文件格式称为开放的XML文件格式,这是一种新的基于XML的文件格式。新的文件格式改进了文件和数据管理、数据恢复和可交互操作的能力。采用这种格式的文件实际上是压缩文件,您可以将其解压缩到文件夹中查看文件内部的情况。任何支持XML的应用程序都能访问和处理Office 2007文件信息,即只要提供了对XML的支持,那么非Office应用程序软件也可以方便地创建和操纵Office文件。即便是在系统没有安装Office软件的情形下,也可以查看文件的内容。
    下面,主要以Excel 2007为例,并使用Jan Karel Pieterse研究Excel 2007新的文件格式的工作簿示例,来了解Office 2007开放的XML文件格式。
    探索Office 2007 XML文件格式
    新的XML文件格式基于压缩的ZIP文件格式规范,每个ZIP容器由许多包含Microsoft称作“部件”的XML文件组成。大多数部件是描述工作簿数据、元数据、文档信息的XML文件,非XML文件例如代表图片或OLE对象的二进制文件也包含在ZIP文件中。也有描述部件之间关系的相关联的部件,从而提供工作簿文件的结构,这些部件是工作簿的内容和内容部件如何组合在一起的关系详情。
    下面演示了开放的XML格式的文件容器。

    分析Excel 2007文件
    一个Excel 2007文件实际上就是一个压缩了的容器(ZIP文件),其中包含一些文件夹和文件。您可以将Excel 2007文件的扩展名更改为.zip或.rar,然后双击该文件来或者将其解压缩到特定的文件夹中来查看其包含的文件夹和文件。在ZIP文件中,可以看到一些XML组件,其中一些独立的XML文件存储了文档所有的设置(setting)、样式(style)、绘图(drawing)和数据等内容。
    例如,新建一个Excel 2007工作簿,在该工作簿中输入数据、插入图表、放置控件和图片及图示、输入VBA代码等,然后将该工作簿命名为test1.xlsm,关闭该工作簿。将工作簿test1.xlsm的扩展名更改为test1.xlsm.zip,并解压缩到文件夹中。可以看到其XML文件包结构如图1所示。

    图1:Excel 2007的.xlsm文件的内容
    该工作簿文件包含3个根文件夹和1个名为[Content_Types].xml的文件。其中:
    • _rels文件夹:有一个名为.rels的文件,包含关于程序包关系的信息。其中有三个关系属性:Id为任意字符串,在.rels文件中必须是唯一的;Type表示关系的类型;Target指定包含关系的目标的文件夹和文件。
      很多子文件夹内部都包含有一个名为_rels的文件夹,这些文件夹都包含有定义与其他部分之间关系的XML文件。
      关系:Excel 2007文档由部件组成。这些部件通过定义在不同的XML文件里的关系联系在一起。

    • docProps文件夹:包含各种XML文件,描述文件属性和应用程序设置。类似于单击Office按钮,选择“准备——属性”后看到的内容。docProps文件夹包含着至少一个名为app.xml的文件和一个名为core.xml的文件。这些文件包含着Excel文件的元信息,例如创建者的名字、修改的和创建的日期。

    • xl文件夹:包含文件的核心部分。根据工作簿中的内容,该文件夹中含有一些子文件夹,并且还含有工作簿设置的XML文件。如果工作簿中含有VBA代码,那么文件夹中还有以bin为扩展名的二进制文件。

    • [Content_Types].xml文件:列出了包括在Excel文件程序包中其它部件的内容类型。

    打开名为“xl”的文件夹,其包含的内容如图2所示。

    图2:文件夹“xl”中的内容
    可以看出,除VBA工程、图片等特殊情形以二进制格式存储外,几乎所有文件都是XML文件。下面列举一些。
    • _rels:其中的关系文件workbook.xml.rels定义了工作簿、数据和格式部件的关系。

    • activeX:包含控件设置的XML文件。

    • charts:包含图表设置的XML文件。

    • chartsheets:包含工作簿中每个图表数据的XML文件。

    • diagrams:描述工作簿中形状(SmartArt)的XML文件。

    • media:包含内嵌的媒体文件,例如GIF文件、JPG文件等。

    • tables:包含带有每个表的数据的XML文件。

    • theme:包含工作簿主题的数据的XML文件。

    • worksheets:包含工作簿中每个工作表的XML文件。

    除一些文件夹外,还有一些单独的XML文件。例如,workbook.xml文件包含的部分内容如图3所示。

    图3:文件“workbook.xml”包含的部分内容
    在这个文件中,我们可以找到各个工作表对应的id号,即r:id。如果希望对某工作表进行操作,那么先找到其r:id。例如,假设我们想在工作表Comments中添加内容,则需要找到包含该工作表内容的xml文件,即要找到图3中工作表对应的r:id。在图3中该工作表的r:id为rId7。
    在文件夹“_rels”中,包含着一个名为“workbook.xml.rels”的文件,包含着XML代码,如图4所示。

    图4:在文件“workbook.xml.rels”中,指明Id值所对应的工作表
    如图4所示,名为“sheet7.xml”的文件代表工作表“Comments”(rId7)。下图5为文件夹“worksheets”中的文件列表。

    图5:文件夹“worksheets”中的文件列表
    使用压缩包中的XML文件来操作Office文档
    读取单元格的值
    工作表“Comments”中的内容如图6所示。

    图6:工作表Comments中的内容,单元格B2中包含批注
    sheet7.xml文件的内容如图7所示。

    图7:文件sheet7.xml中的内容,显示了单元格A1、A2、A3
    如何知道单元格A1中的内容呢?看看图7中的内容:
    <cr="A1"t="s">

    ,可以知道单元格A1中包含字符串(t=”s”)。下一行:
    <v>28</v>

    告诉我们需要在“xl”文件夹中名为sharedStrings.xml的文件里找到项目数值28。该文件顶部的内容如图8所示。

    图8:文件sharedStrings.xml顶部的内容
    表明在该工作簿中有45个唯一字符串。由于索引值是以0为基数开始,图7中的内容告诉我们需要的索引值是28,因此我们需要找到sharedStrings.xml文件中第29个
    <si>

    条目。如图9所示。

    图9:文件sharedStrings.xml中的第29个si即为工作表Comments中单元格A1的内容
    在单元格中添加文本
    现在,让我们在工作表Comments中添加新的文本数据。首先,修改sharedStrings.xml文件顶部的字符串数,将图8中的代码修改如图10所示。

    图10:将文件sharedStrings.xml顶部的字符串数修改为46
    接下来,在该文件中添加新字符串。在该文件的相应添加新字符串,如图11所示。

    图11:在文件sharedStrings.xml中添加新字符串
    然后,修改sheet7.xml文件,以添加带有新字符串的行,如图12所示。

    图12:在文件sheet7.xml中添加代码以添加带有新字符串的行
    此时,工作表如图13所示。

    图13:编辑XML文件后的结果
    在单元格中添加数字
    在单元格中添加数字与添加文本相似,但有两点不同:数字是直接保存在工作表xml文件中并且可以添加数字格式。
    例如,在前面的sheet7.xml文件中,数字单元格的格式为“常规”并且没有设置专门的格式。
    通过索引值来定义单元格格式,例如下面的代码表示在单元格A3中显示的是日期:
    <rowr="3"spans="1:2">  <cr="A3"s="34">    <v>39218</v>  </c></row>

    索引值34指向文件包中的另一个文件:styles.xml,该文件的开始部分是自定义数字格式列表,下面一部分是称作cellXfs的单元格格式交叉引用转到自定义数字格式列表。在工作表xml文件中的s=”34″指向该节点(cellXfs节点)的某一元素。由于索引值基于0,因此索引值34代表列表中的第35项(即最后一项),如图14所示。

    图14:索引值34在列表中的项目
    单元格格式交叉引用依次引用numFormatId列表、FontId列表、fillId列表以及borderId列表,都包含在Styles.xml文件中。
    因此,不能直接添加格式化单元格到工作表,必须检查特定的单元格格式组合是否已经存在于单元格格式交叉引用中(在styles.xml中),这涉及到要为各个元素检查所有单个的格式引用。同时,如果格式组合是新的,则必须扩展带有新格式的格式元素列表,并更新样式交叉引用。当然,也需要更新列表的所有“count”参数。
    上文演示的示例工作簿下载:

    改变窗体控件的属性
    通常,窗体控件与控件工具箱中的控件不同,例如不能改变按钮的背景色、不能改变组合框的字体和颜色等。下面来探索如何利用工作簿文件包更改这些属性。
    例如,工作簿FormControls.xlsm的工作表Sheet1如图15所示。

    图15:包含一些窗体控件的演示工作簿
    现在,来分析这些窗体控件存放的位置。将工作簿FormControls.xlsm重命名为FormControls.xlsm.zip。双击该文件,然后打开文件夹“xl”,接着打开文件夹“worksheets”。打开“sheet1.xml”文件,可以找到如图16中的条目。

    图16:文件sheet1.xml中指定窗体控件的条目
    要找到“rId2”,打开“_rels”文件夹,如图17所示。

    图17:打开文件夹“_rels”
    打开“sheet1.xml.rels”文件,找到rId2,如图18所示。

    图18:文件“sheet1.xml.rels”中Id为rId2的条目
    这告诉我们应该查找文件“..\xl\drawings\vmlDrawing1.vml”。
    每个工作表中有一个vmlDrawing?.vml文件,包含着控件或者在该vml文件中捕捉到的任何其它对象。
    现在,将vmlDrawing1.vml文件拖到桌面上,然后打开它。找到定义复选框的部分,如图19所示。

    图19:文件vmlDrawing1.vml中定义Excel工作表中复选框的部分
    通常,我们不能改变窗体控件中复选框的字体。现在,让我们在vmlDrawing1.vml文件中改变其字体,将图19中的内容:
    <spanstyle="color: #a00000; font-family: Arial Black;">CheckBox 3</span>

    修改为:
    <spanstyle="color: #a00000; font-family: Courier New;">CheckBox 3</span>

    保存并关闭该vml文件,然后将其拖回压缩文件夹的drawings文件夹中,再将文件名称FormControls.xlsm.zip改为FormControls.xlsm。现在,打开工作簿FormControls.xlsm后,复选框如图20所示。

    图20:修改字体后的窗体复选框控件
    在这个vml文件中,还可以看出控件的其它信息,例如控件的大小和位置,即Anchor。如图19中的内容:
    <x:Anchor>4, 30, 2, 0, 8, 39, 3, 18</x:Anchor>

    其中,前2个数字指定控件左上角的水平位置:第1个数字是所在列数(基于0),第2个数字代表控件基于该列左侧的偏移量;随后的2个数字指定控件左上角的垂直位置:第1个数字是所在行号(基于0),第2个数字代表控件基于该行顶部的偏移量;最后的4个数字指定控件的右下角的位置。
    也就是说,在上面的xml中,控件的左上角位于列E、第3行、向右移29像素,右下角位于单元格I4,向右移38像素,相对于左上角下移18像素。
    也可以改变复选框字体的颜色,将内容:
    <spanstyle="color: #a00000; font-family: Courier New;">CheckBox 3</span>

    修改为:
    <spanstyle="color: #ff0066; font-family: Courier New;">CheckBox 3</span>

    修改后的效果如图21所示。

    图21:修改窗体复选框控件中字体的颜色
    上文演示的示例工作簿下载:

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

    千次阅读 2011-10-03 11:48:59
    最近做了一个winform项目,涉及数据交换,传送数据格式xml文件,压缩传输. 从网上找的SharpZipLib压缩组件,压缩后传输至服务器端,由于服务器端接口是java开发的,不能解压. 刚好项目组有一哥们儿是做delphi开发的,给...

    最近做了一个winform项目,涉及数据交换,传送数据格式为xml文件,压缩传输.

    从网上找的SharpZipLib压缩组件,压缩后传输至服务器端,由于服务器端接口是java开发的,不能解压.

    刚好项目组有一哥们儿是做delphi开发的,给了个组件,引入项目中,结果还挺好使.

    两个dll文件,调用方法如下:

            [DllImport("myzip.dll", ExactSpelling = true)]
            public static extern int MyZip_AddFile(string __inFileName, string __outFileName);
            [DllImport("myzip.dll", ExactSpelling = true)]
            public static extern int MyZip_ExtractFileAll(string __inZipFileName, string __DstFolder);

            public static void ZipFile(string __inFileName, string __outFileName)
            {
                int intRuturn = MyZip_AddFile(__inFileName, __outFileName);
            }
            public static void UnZipFile(string __inZipFileName, string __DstFolder)
            {
                int intReturn = MyZip_ExtractFileAll(__inZipFileName, __DstFolder);
            }

    .net中没有提供直接压缩zip的功能,zip文件需要落地,以后用这个还是挺方便的.

    展开全文
  • 细品RibbonX(5):开放的XML文件格式

    千次阅读 2009-04-25 15:22:00
    众所周知,Office 2007采用了新的文件格式。例如,在Excel 2007中,当您保存文件时会默认以xlsx为扩展名来保存,采用这种格式的文件不包含宏;如果要保存带有宏的工作簿,那么应该以xlsm为扩展名保存。(当然,您...

    众所周知,Office 2007采用了新的文件格式。例如,在Excel 2007中,当您保存文件时会默认以xlsx为扩展名来保存,采用这种格式的文件不包含宏;如果要保存带有宏的工作簿,那么应该以xlsm为扩展名保存。(当然,您可以在Excel选项中更改保存文件时默认的文件格式)。新的文件格式有:

    • xlsx:不带有宏的工作簿文件。
    • xlsm:包含宏的工作簿文件。
    • xltx:不带有宏的工作簿模板文件。
    • xltm:包含宏的工作簿模板文件。
    • xlsa:加载项文件。
    • xlsb:与旧的xls文件格式相同,但是可以兼容新特性的二进制文件。
    • xlsk:备份文件。

    除xlsb文件外,其他的文件都是可以打开的XML文件,意味着其他文件可以读写这些文件。 Office 2007的新文件格式称为开放的XML文件格式,这是一种新的基于XML的文件格式。新的文件格式改进了文件和数据管理、数据恢复和可交互操作的能力。采用这种格式的文件实际上是压缩文件,您可以将其解压缩到文件夹中查看文件内部的情况。任何支持XML的应用程序都能访问和处理Office 2007文件信息,即只要提供了对XML的支持,那么非Office应用程序软件也可以方便地创建和操纵Office文件。即便是在系统没有安装Office软件的情形下,也可以查看文件的内容。下面,主要以Excel 2007为例,并使用Jan Karel Pieterse研究Excel 2007新的文件格式的工作簿示例,来了解Office 2007开放的XML文件格式。

    探索Office 2007 XML文件格式

    新的XML文件格式基于压缩的ZIP文件格式规范,每个ZIP容器由许多包含Microsoft称作“部件”的XML文件组成。大多数部件是描述工作簿数据、元数据、文档信息的XML文件,非XML文件例如代表图片或OLE对象的二进制文件也包含在ZIP文件中。也有描述部件之间关系的相关联的部件,从而提供工作簿文件的结构,这些部件是工作簿的内容和内容部件如何组合在一起的关系详情。下面演示了开放的XML格式的文件容器。

     

    RibbonX(5)-0

     

    分析Excel 2007文件

    一个Excel 2007文件实际上就是一个压缩了的容器(ZIP文件),其中包含一些文件夹和文件。您可以将Excel 2007文件的扩展名更改为.zip或.rar,然后双击该文件来或者将其解压缩到特定的文件夹中来查看其包含的文件夹和文件。在ZIP文件中,可以看到一些XML组件,其中一些独立的XML文件存储了文档所有的设置(setting)、样式(style)、绘图(drawing)和数据等内容。例如,新建一个Excel 2007工作簿,在该工作簿中输入数据、插入图表、放置控件和图片及图示、输入VBA代码等,然后将该工作簿命名为test1.xlsm,关闭该工作簿。将工作簿test1.xlsm的扩展名更改为test1.xlsm.zip,并解压缩到文件夹中。可以看到其XML文件包结构如图1所示。

     

    RibbonX(5)-1

     

    图1:Excel 2007的.xlsm文件的内容

     

    该工作簿文件包含3个根文件夹和1个名为[Content_Types].xml的文件。其中:

    • _rels文件夹:有一个名为.rels的文件,包含关于程序包关系的信息。其中有三个关系属性:Id为任意字符串,在.rels文件中必须是唯一的;Type表示关系的类型;Target指定包含关系的目标的文件夹和文件。很多子文件夹内部都包含有一个名为_rels的文件夹,这些文件夹都包含有定义与其他部分之间关系的XML文件。关系:Excel 2007文档由部件组成。这些部件通过定义在不同的XML文件里的关系联系在一起。
    • docProps文件夹:包含各种XML文件,描述文件属性和应用程序设置。类似于单击Office按钮,选择“准备——属性”后看到的内容。docProps文件夹包含着至少一个名为app.xml的文件和一个名为core.xml的文件。这些文件包含着Excel文件的元信息,例如创建者的名字、修改的和创建的日期。
    • xl文件夹:包含文件的核心部分。根据工作簿中的内容,该文件夹中含有一些子文件夹,并且还含有工作簿设置的XML文件。如果工作簿中含有VBA代码,那么文件夹中还有以bin为扩展名的二进制文件。
    • [Content_Types].xml文件:列出了包括在Excel文件程序包中其它部件的内容类型。

    打开名为“xl”的文件夹,其包含的内容如图2所示。

     

    RibbonX(5)-2

    图2:文件夹“xl”中的内容

     

    可以看出,除VBA工程、图片等特殊情形以二进制格式存储外,几乎所有文件都是XML文件。下面列举一些。

    • _rels:其中的关系文件workbook.xml.rels定义了工作簿、数据和格式部件的关系。
    • activeX:包含控件设置的XML文件。
    • charts:包含图表设置的XML文件。
    • chartsheets:包含工作簿中每个图表数据的XML文件。
    • diagrams:描述工作簿中形状(SmartArt)的XML文件。
    • media:包含内嵌的媒体文件,例如GIF文件、JPG文件等。
    • tables:包含带有每个表的数据的XML文件。
    • theme:包含工作簿主题的数据的XML文件。
    • worksheets:包含工作簿中每个工作表的XML文件。

    除一些文件夹外,还有一些单独的XML文件。例如,workbook.xml文件包含的部分内容如图3所示。

     

    RibbonX(5)-3

     

    图3:文件“workbook.xml”包含的部分内容

     

    在这个文件中,我们可以找到各个工作表对应的id号,即r:id。如果希望对某工作表进行操作,那么先找到其r:id。例如,假设我们想在工作表Comments中添加内容,则需要找到包含该工作表内容的xml文件,即要找到图3中工作表对应的r:id。在图3中该工作表的r:id为rId7。在文件夹“_rels”中,包含着一个名为“workbook.xml.rels”的文件,包含着XML代码,如图4所示。

     

    RibbonX(5)-4

     

    图4:在文件“workbook.xml.rels”中,指明Id值所对应的工作表

     

    如图4所示,名为“sheet7.xml”的文件代表工作表“Comments”(rId7)。下图5为文件夹“worksheets”中的文件列表。

     

    RibbonX(5)-5

     

    图5:文件夹“worksheets”中的文件列表

     

    使用压缩包中的XML文件来操作Office文档

    读取单元格的值

    工作表“Comments”中的内容如图6所示。

     

     RibbonX(5)-6

     

    图6:工作表Comments中的内容,单元格B2中包含批注

     

    sheet7.xml文件的内容如图7所示。

     

    RibbonX(5)-7

     

    图7:文件sheet7.xml中的内容,显示了单元格A1、A2、A3

     

    如何知道单元格A1中的内容呢?看看图7中的内容:<c r="A1" t="s">,可以知道单元格A1中包含字符串(t="s")。下一行:<v>28</v>告诉我们需要在“xl”文件夹中名为sharedStrings.xml的文件里找到项目数值28。该文件顶部的内容如图8所示。

     

     RibbonX(5)-8

     

    图8:文件sharedStrings.xml顶部的内容

     

    表明在该工作簿中有45个唯一字符串。由于索引值是以0为基数开始,图7中的内容告诉我们需要的索引值是28,因此我们需要找到sharedStrings.xml文件中第29个<si>条目。如图9所示。

     

     RibbonX(5)-9

     

    图9:文件sharedStrings.xml中的第29个si即为工作表Comments中单元格A1的内容

    在单元格中添加文本

    现在,让我们在工作表Comments中添加新的文本数据。首先,修改sharedStrings.xml文件顶部的字符串数,将图8中的代码修改如图10所示。

     

    RibbonX(5)-10

     

    图10:将文件sharedStrings.xml顶部的字符串数修改为46

    接下来,在该文件中添加新字符串。在该文件的相应添加新字符串,如图11所示。

     

    RibbonX(5)-11

     

    图11:在文件sharedStrings.xml中添加新字符串

    然后,修改sheet7.xml文件,以添加带有新字符串的行,如图12所示。

     

     RibbonX(5)-12

     

    图12:在文件sheet7.xml中添加代码以添加带有新字符串的行

    此时,工作表如图13所示。

     

     RibbonX(5)-13

     

    图13:编辑XML文件后的结果

     

    在单元格中添加数字

    在单元格中添加数字与添加文本相似,但有两点不同:数字是直接保存在工作表xml文件中并且可以添加数字格式。例如,在前面的sheet7.xml文件中,数字单元格的格式为“常规”并且没有设置专门的格式。通过索引值来定义单元格格式,例如下面的代码表示在单元格A3中显示的是日期:

    <row r="3" spans="1:2">
      <c r="A3" s="34">
        <v>39218</v>
      </c>
    </row>

    索引值34指向文件包中的另一个文件:styles.xml,该文件的开始部分是自定义数字格式列表,下面一部分是称作cellXfs的单元格格式交叉引用转到自定义数字格式列表。在工作表xml文件中的s="34"指向该节点(cellXfs节点)的某一元素。由于索引值基于0,因此索引值34代表列表中的第35项(即最后一项),如图14所示。

     

     RibbonX(5)-14

     

    图14:索引值34在列表中的项目

     

    单元格格式交叉引用依次引用numFormatId列表、FontId列表、fillId列表以及borderId列表,都包含在Styles.xml文件中。

    因此,不能直接添加格式化单元格到工作表,必须检查特定的单元格格式组合是否已经存在于单元格格式交叉引用中(在styles.xml中),这涉及到要为各个元素检查所有单个的格式引用。

    同时,如果格式组合是新的,则必须扩展带有新格式的格式元素列表,并更新样式交叉引用。当然,也需要更新列表的所有“count”参数。上文演示的示例工作簿下载:

    改变窗体控件的属性

    通常,窗体控件与控件工具箱中的控件不同,例如不能改变按钮的背景色、不能改变组合框的字体和颜色等。下面来探索如何利用工作簿文件包更改这些属性。例如,工作簿FormControls.xlsm的工作表Sheet1如图15所示。

     

    RibbonX(5)-15

     

    图15:包含一些窗体控件的演示工作簿

     

    现在,来分析这些窗体控件存放的位置。将工作簿FormControls.xlsm重命名为FormControls.xlsm.zip。双击该文件,然后打开文件夹“xl”,接着打开文件夹“worksheets”。打开“sheet1.xml”文件,可以找到如图16中的条目。

     

    RibbonX(5)-16

     

    图16:文件sheet1.xml中指定窗体控件的条目

     

    要找到“rId2”,打开“_rels”文件夹,如图17所示。

     

     RibbonX(5)-17

     

    图17:打开文件夹“_rels”

     

    打开“sheet1.xml.rels”文件,找到rId2,如图18所示。

     

    RibbonX(5)-18

     

    图18:文件“sheet1.xml.rels”中Id为rId2的条目

     

    这告诉我们应该查找文件“../xl/drawings/vmlDrawing1.vml”。

    每个工作表中有一个vmlDrawing?.vml文件,包含着控件或者在该vml文件中捕捉到的任何其它对象。现在,将vmlDrawing1.vml文件拖到桌面上,然后打开它。找到定义复选框的部分,如图19所示。

     

    RibbonX(5)-19

    图19:文件vmlDrawing1.vml中定义Excel工作表中复选框的部分

     

    通常,我们不能改变窗体控件中复选框的字体。现在,让我们在vmlDrawing1.vml文件中改变其字体,将图19中的内容: <font face="Arial Black" size="320" color="auto">CheckBox 3</font>

    修改为:

    <font face="Courier New" size="320" color="auto">CheckBox 3</font>

    保存并关闭该vml文件,然后将其拖回压缩文件夹的drawings文件夹中,再将文件名称FormControls.xlsm.zip改为FormControls.xlsm。现在,打开工作簿FormControls.xlsm后,复选框如图20所示。

     

     RibbonX(5)-20

     

    图20:修改字体后的窗体复选框控件

     

    在这个vml文件中,还可以看出控件的其它信息,例如控件的大小和位置,即Anchor。如图19中的内容:

    <x:Anchor>4, 30, 2, 0, 8, 39, 3, 18</x:Anchor>

    其中,前2个数字指定控件左上角的水平位置:第1个数字是所在列数(基于0),第2个数字代表控件基于该列左侧的偏移量;随后的2个数字指定控件左上角的垂直位置:第1个数字是所在行号(基于0),第2个数字代表控件基于该行顶部的偏移量;最后的4个数字指定控件的右下角的位置。也就是说,在上面的xml中,控件的左上角位于列E、第3行、向右移29像素,右下角位于单元格I4,向右移38像素,相对于左上角下移18像素。也可以改变复选框字体的颜色,将内容:

    <font face="Courier New" size="320" color="auto">CheckBox 3</font>

    修改为:

    <font face="Courier New" size="320" color="#FF0066">CheckBox 3</font>

    修改后的效果如图21所示。

     

     RibbonX(5)-21

     

    图21:修改窗体复选框控件中字体的颜色

    上文演示的示例工作簿下载:

    通过上面的介绍后,大家可以寻找并更改相关的xml文件内容,以实现在工作表界面中无法实现的操作。

     

    结语

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

     

    注:关注Office功能区RibbonX开发系列,关注完美Excel.

    展开全文
  • 在Eclipse中使用ADT开发Android很方便,但也有些不如意的地方,如XML文件格式化效果就很不理想。默认情况下,使用ADT的可视化界面布局,自动生成的xml文件中,一个控件的配置全动挤到一行上(效果如下所示),阅读...
  •  在一台电脑把一个rar压缩文件复制到另一台电脑上,解压时出现“这个压缩文件格式未知或者数据已经被损坏”错误。 原因:  有可能是复制的不完全,压缩文件真的坏了,但也有可能是另一种情况,如在win10的系统中...
  • 在线转换弹幕文件。通过网页将xml文件转换为ass文件。后记里附了一些其他文件的在线转换方式,比如在线pdf转换,pdf解锁,视频在线转换,电子书和图片等在线转换的网址。
  • C++通过TinyXML类库读写XML文件

    万次阅读 多人点赞 2015-09-21 18:28:06
    这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。 DOM模型即文档对象模型,是将整个文档分成多个元素(如书、章、节、段等),并利用树型结构表示这些元素之间的顺序...
  • Eclipse中XML文件格式化配置(转)

    千次阅读 2016-01-14 10:18:02
    在Eclipse中使用ADT开发Android很方便,但也有些不如意的地方,如XML文件格式化效果就很不理想。默认情况下,使用ADT的可视化界面布局,自动生成的xml文件中,一个控件的配置全动挤到一行上(效果如下所示),阅读...
  • <?xml version="1.0" encoding="UTF-8"?> <heartbeat>0 <authoritytype>0 节点编码 ...
  • Tinyxml解析xml文件

    千次阅读 2016-03-26 20:17:51
    读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解析库,能够用
  • Word 2007 XML压缩格式

    千次阅读 2015-02-26 11:21:05
    Word XML格式的开放打包约定 解析Word 2007文件 确定Word 2007文档中的非XML部件 从文档中分离内容 理解数据存储 结论 简介 Microsoft Office Word 2007提供了一种新的...
  • C++解析XML文件

    千次阅读 2019-04-10 23:58:27
    C++解析XML文件TinyXML安装下载解析XML文件 最近在使用C++处理GF-3和RADARSAT-2雷达影像,需要通过解析XML文件获取影像时间,我选用了TinyXML库来解析。参考了网上的一些教程,这个文档个人觉得是解释的很清晰的。...
  • 从 2007 Microsoft Office system 开始, Microsoft Office 使用基于 XML文件格式 (如 .docx、.xlsx 和 .pptx)。 这些格式和文件名扩展名适用于 Microsoft Word、Microsoft Excel 和 Microsoft PowerPoint。 本文...
  • 创建xml文件

    千次阅读 2011-10-11 16:44:47
    写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML库,而且它同时支持多种编程语言;2)LIBXML2库的Tutorial写得不太
  •   XML文件为了便于我们阅读,通常写成一行一个标签的形式。我们可以通过Eclipse软件 或 Intellij IDEA软件的自动格式化代码的功能实现,如下: <?xml version="1.0" encoding="UTF-8"?> <animal> ...
  • web性能优化--用gzip压缩资源文件

    万次阅读 多人点赞 2019-07-31 19:14:09
    一、gzip压缩技术 gzip(GNU- ZIP)是一种压缩技术。...浏览器那里不需要我们担心,因为目前的大多数浏览器都支持解析gzip压缩过的资源文件。在实际的应用中我们发现压缩的比率往往在3到10倍,也...
  • xml文件的生成和下载

    千次阅读 2018-08-23 14:20:01
    web.xml文件的配置 &lt;!--下载xml文件--&gt; &lt;servlet&gt; &lt;servlet-name&gt;downloadXmlServlet&lt;/servlet-name&gt; &lt;servlet-class&gt; ...
  • Dom4j处理超大XML文件文件

    千次阅读 2018-03-19 14:24:51
    源码:https://github.com/jimzhou2015/dom4j-big-xml相关原理: 边读取部分文件内容,匹配,处理匹配内容,缓存后面不匹配内容,再继续读取文件,不匹配内容+这次内容匹配,继续相同处理,直到文件处理完成。...
  • XML文件是什么?

    万次阅读 多人点赞 2018-05-25 21:42:05
    XML文件是什么呢?XML是一种可扩展标记语言也是元标记语言,所谓“元标记”就是开发者可以根据自己的需要定义自己的标记,比如开发者可以定义如下标记&lt;book&gt; &lt;name&gt;,任何满足xml命名...
  • AndroidManifest.xml 文件详解

    千次阅读 2018-07-27 16:50:37
    AndroidManifest.xml 文件详解 AndroidManifest.xml 文件详解 概述 文件特性 包名和应用ID(application ID) 应用程序组件(App components) 意图过滤器(Intent filters) Icons和labels 权限(Permissions) ...
  • python操作xml文件详细介绍

    千次阅读 2017-02-17 11:17:10
    关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码。这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件。 一、什么是xml? xml即可扩展...
  • HIVE 文件格式压缩格式 一: mapreduce 的压缩 mapreduce 压缩 主要是在shuffle阶段的优化。 shuffle 端的 –partition (分区) – sort (排序) – combine (合并) – compress (压缩) – group (分组) 在...
  • HDFS的文件压缩格式

    千次阅读 2018-08-01 12:43:59
    text命令),但hive只能用TEXTFILE格式的表加载,然后再insertoverwrite 到其他格式的表(比如SEQUENCEFILE表),如果hive其他格式的表想要直接加载压缩格式数据,需要重写INPUTFORMAT和OUTPUTFORMAT文件类。...
  • Java读取zip压缩包下xml文件

    千次阅读 2015-12-22 11:36:39
    功能需求: Java读取zip压缩包下xml文件,并显示xml文件中&lt;description&gt;&lt;/description&gt;标签中的内容。   代码实现: package com.huangzijing.test; import java.io....
  • 如何.xml文件中引入.dtd文件约束

    千次阅读 2017-07-09 21:56:50
    以mybatis.xml文件为例,其它类似。首先找到自己的.xml文件的dtd文件下载地址,一般在生成的xml文件上面有。然后复制下来。 按照以下步骤,点击Eclipse的Window 选择Preferences 选择XML下的XML Catalog,然后...
  • 对于小数据返回值直接可采用Document、element的解析方式即可获得xml节点值。 但对于返回值大于10M的数据,Document解析就显得吃力甚至出现程序中断情况。针对返回数据大的xml可采取Java String 分割截取方式处理。 ...
  • PHP解析Android APK包的XML文件

    千次阅读 2014-01-07 19:39:28
    但是在编译apk包的过程中,所有XML文件都经过了压缩编码,直接读取xml文件内容是无法解析出需要的信息的。 Google搜索了一下没有找到这个功能的PHP实现,只有找到一个Java工具AXMLPrinter,可以还原经过压缩后的X

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 183,567
精华内容 73,426
关键字:

如何压缩xml文件格式