添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

最近这几个东东打交道了几天,总算是弄明白了,综合多个帖子,现在总结如下:

在创建stylesheet时,必须创建fonts,Fills,Borders 和cellXfs(CellFormats)四个节点。

而cellXfs节点是综合节点,它需要引用numFormatId列表、FontId列表、fillId列表和borderId列表,这些都包含在Styles.xml文件中。

1.cellXfs,是给单元格自行设置的样式。
2.CellStyleXfs,就是在单元格样式中建立的自定义样式,用于cellXfs中的xfid属性。
3.cellStyle, 在"name"属性可以找到CellStyleXfs中的样式名,对应的属性"xfId",是"CellStyleXfs"节点的子节点"xf"的索引,从"0"开始。

他们之间的具体关系,下面这篇文章写的很精辟,how to understand the process of cell formatting ? http://social.msdn.microsoft.com/Forums/zh-CN/e6fe3ff0-152e-4398-9d17-fee8476ae466/how-to-understand-the-process-of-cell-formatting -

总结一下:即单元格没有指定特别的样式时,也就是打开excel,在单元格中随意输入一个字符,然后什么都不做就保存,这就是没有指定特别的样式,用excel再次打开该文档时,它就去cellStyle里找默认的Normal样式,该样式在CellStyleXfs里定义,可以找到对应的fontid, fillid, borderid, numfmtid等等。 如果给单元格指定了某种样式,就去cellXfs里找这种格式,它里面也可以找到对应的fontid, fillid, borderid, numfmtid等等。

实际的Demo如下:

1.打开excel,在单元格中随意输入一个字符,然后什么都不做就保存,这就是没有指定特别的样式, 此时style.xml中的cellXfs, cellStyleXfs, cellStyles如下:

2.用excel打开这个文件,新建一种单元格样式:样式1,但不给任何一个单元格应用,操作步骤如下:

保存该文件,现在styles.xml里的代码如下:

可以看到,新增的样式保存在cellStyleXfs和cellStyles节点中了,因为没有单元格应用它,所以在cellXfs中没有它的踪迹。

在sheet1.xml中,如下图,该单元格没有s="*"的标记,excel就去cellStyles里去找默认的常规样式,然后按照xfId="0"再去cellStyleXfs里找第一项,用里面标记的borderid, fillid, fontid, numFmtId去给它应用了。

3.给一个单元格应用:样式1

此时styles.xml中代码如下:

这时,cellXfs里就有添加进样式1的内容了, 同时在sheet1.xml中,应用了此样式的单元格上有了s="1"的标记,如下图,索引从0开始,s="1"其实指的第二项,这时excel就直接用cellXfs里第二项,用里面标记的borderid, fillid, fontid, numFmtId去给它应用了。

1.CellStyle Class Cell Style.When the object is serialized out as xml, its qualified name is x:cellStyle. http://msdn.microsoft.com/zh-cn/library/ie/documentformat.openxml.spreadsheet.cellstyle.aspx?cs-save-lang=1&cs-lang=vb

2.CellStyleFormats Class Formatting Records.When the object is serialized out as xml, its qualified name is x:cellStyleXfs. http://msdn.microsoft.com/zh-cn/library/ie/documentformat.openxml.spreadsheet.cellstyleformats.aspx

3.CellFormats Class Cell Formats.When the object is serialized out as xml, its qualified name is x:cellXfs. http://msdn.microsoft.com/zh-cn/library/ie/documentformat.openxml.spreadsheet.cellformats.aspx

excel 2007 的/xl/ style s. xml 文件 的" cell Style Xfs "和" cell Style s"节点都有什么作用,具体的怎么关联的? Cell Style Xfs 节点其实是在单元格样式 建立的自定义样式。 < cell Style Xfs count="3"> <xf numFmtId="0" fo... using System.IO; using DocumentFormat. Open Xml .Packaging; using DocumentFormat. Open Xml ; using DocumentFormat. Open Xml .Spreadsheet; using X14 = Docume 目前发现 Open XML 的SDK有两个版本,SDK2.0和SDK2.5。 Open XML 2.0的帮助文档:https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2010/ff478153(v=office.14) Open XML 2.5的帮助文档:https://docs.microsoft.com/zh-cn/office/ open - xml /spreadsheets 很多时候,需要一个软件应用程序来生成Microsoft Excel 文件格式的报告。有时,甚至希望应用程序接收 Excel 文件作为输入数据。例如,为公司财务部门开发的应用程序将需要在 Excel 生成所有输出。任何想要生成MS Office文件作为输出的Java程序员都必须使用预定义的只读API来执行此操作。 Apache POI概述 什么是Apache POI? Apache POI是一种流行的API,允许程序员使用Java程序创建,修改和显示MS Office文件。它是由Apache Software 感觉说的不够清楚,简单举例:fontId1=1 为自己设置的宋体,fonid2=2为微软雅黑且forecolor设置为红色,fillId0=0,fillId1=1被office占用,fillid2=2为自定义填充蓝色,fillId3=3为自定义填充紫色,borderId=0还是无边框。那么 第一次调用 Uint32Value result[1]=create Cell Format( style sheet,fontid2, 前言:本文简单介绍使用 Open XML 如何设置 Excel 单元格格式。 在操作 Excel 时,不可避免的需要设置单元格的格式。使用 Open XML 设置简单的单元格格式还是很方便的。 Excel 需要使用到的单元格式在 Cell Formats对象 Cell Formats是对象workbookPart.Workbook Style sPart. Style sh... //添加Sheet Style :Font\Border\Fill\字体居 Fonts fonts = new Fonts() { Count = (UInt32Value)2U, KnownFonts = true }; //fontId = 0 DocumentFormat. Open Xml .Spreadsheet.Font font =...