职能企业技巧保护职业创业
创业安检
掌握呵护
案例安身
升初专业
职业小学
形象知识
工作提高
科技职级
保护职务
法务经验
安保方法
中考作文
技巧安全
初中魅力
常识安心
保全安护
企业技能
生活安务
法律纠纷
技艺百科
职能能力
技术安监
培训提升
辩护水平

学习笔记:Excel文件格式之条件格式研究及XSL实现

8月20日 风雨峰投稿
  以前我对WordExcel这类文件的结构很感兴趣,一直想了解它是如何存贮数据的,但苦于找不到相关的资料,而且听说它的文件结构也相当复杂,我等无法理解,因此这种想法也一直是个悬念而已。随着时代发展,这些二进制格式的文档由于生成和提取信息都很困难,影响到了Office在网络时代的数据再利用,Office在2007版之后引进了docx和xlsx等新一代基于XML格式的文档之后,慢慢的这些格式也被用户接受了。原来的版本也日趋老去,微软也在网上开始公开这些过去的二进制的文件结构了。感兴趣的朋友可以访问Office文件格式规范Office文件格式规范链接2了解Excel二进制文件格式了解Word二进制文件格式因为二进制文件格式使用了大量的结构记录,数据的读取与指针记录大小位置偏移等关系密切,一旦某处代码有错,二进制数据很容易越界,影响前后部分的读写,生成的文件很容易出错。因此对这类文档的读写要求很高的精确性,实现起来不容易。
  在新一代的文档格式中,本质上大部分都是文本形式的XML文档,而且各个部分是按一定规则分离存储的,一个部件损坏不会导致全部数据失效,文件的强壮程度好了很多。比如在Excel的XLSX格式中,整个文档是一个压缩包,里面包括了多个部分。有的存贮数值,有的存贮样式,有的存贮查询表,有的存贮共享字串。各自有一定的独立性。比如本文中要实现的条件格式,它在文档中和表格的数据就是分开存贮的。单元格数据在元素内部,条件格式在元素内部。
  本文涉及的文件在此,由于本博客系统的代码排版很丑,有兴趣的可以看以下位置的PDF或PNG图片:
  链接:https:pan。baidu。coms1Zhs42hDRJhLza3Rky9EZ
  提取码:hiu8
  我们先来看看Excel的XLSX文件的结构,这里举例的文件使用上一博客中生成的sampledata。xlsx,为了便于查看结构,将后缀xlsx改为zip再查看:
  在xl目录下的workbook。xml存放的是指向表单的引用,大概内容如下:
  。。。
  
  。。。
  
  
  
  
  
  。。。
  用三个不同的r:id属性代表了三个不同名字的表单。同一目录下,还有一个styles。xml里放的是样式的规定,这个后面再讲。
  我们转到worksheets目录下看:
  有三个XML文件,sheet1。xml到sheet3。xml对应三个工作表。其中sheet1。xml存放了我们导入的数据。为了例于理解条件格式,我把这个文件中相关性不大的部分省略了,留下了部分导入的数据以及生成好的条件格式的部分。,并增加了一些注释。数据导入的部分,其格式前一博客说过这里不再重复。重点讲条件格式的描述。
  
  
  
  
  
  
  
  
  
  
  
  
  
  。。。
  
  。。。
  
  水分
  
  
  水分单位
  
  
  酸度
  
  
  酸度单位
  
  
  
  。。。
  
  31。3
  
  
  ppm
  
  
  25。9
  
  
  ppm
  
  。。。
  
  。。。
  
  9。2
  
  
  ppm
  
  
  59。5
  
  
  ppm
  
  。。。
  
  
  条件格式部分,与sheetData是并列的,允许有多个条件格式的设定
  条件格式设定,其作用范围为sqref指定的范围
  条件格式类型为公式,当条件成立时,格式由dxfID指定。
  (F7:F11)E720
  格式来设定这个单元格。
  条件格式中的公式不太好理解,(F7:F11)E7应用于第7行的单元格时,是(F7)E7的意思;相应地,公式(F7:F11)E7作用于第8行的单元格时,公式是(F8)E8的意思,这样就能理解了。
  
  条件格式结束
  
  条件格式,作用于G7:G11
  
  (H7:H11)G750
  
  
  
  
  
  前面的博客中将xml数据转化为excel文件时,我用了硬编码的方式处理异常数据的显示。比如,先判断一下酸度数值是不是大于50,如果大于50则将数值的格式用rPr元素来指定(这种也称为直接样式化),指定了某个单元格的数值显示为红色。
  这种转化判断的逻辑要写在XSL的语法中,实现起来不太灵活,。既然Excel已经提供了条件格式这样便利的工具,我们何不直接用它来处理呢?因此,我将转换数据的XSL进行精简,去除了导入时对数值的逻辑判断(减少了一大堆冗长的xsl:choosexsl:whenxsl:otherwise),再生成一个条件格式部分,让Excel载入后自己根据条件格式设定异常值的显示效果。
  以下为了突出条件格式的生成,精简了之前展示过的数据导入的内容。
  。。。
  
  。。。
  
  。。。
  
  水分
  
  
  水分单位
  
  
  
  酸度
  
  
  酸度单位
  
  。。。
  
  
  
  
  。。。
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  格式化是比较罗嗦的
  
  
  
  
  
  
  
  
  
  
  格式
  
  
  
  
  
  
  
  〔NMEMO〕
  
  
  
  
  
  
  
  
  
  
  
  条件格式
  
  条件格式,当单位为ppm且值大于20ppm时显示为红色,监控E列
  集合中的第一项设置
  求出变量的值,如果只是简单的将{LastRow}放在公式中,XSL转换时不会自动替换为数值再写入,那样会出错!
  
  
  (F7:F)E720
  
  
  
  条件格式,当单位为ppm且值大于50ppm时显示为红色
  
  
  (H7:H)G750
  
  
  。。。
  
  
  
  
  其实理解了条件格式的公式设置,如何生成条件格式并不复杂。
  最后还剩下一个dxfId是什么东西没有说。是这样的:Excel中为了减少存贮各种格式设置的空间占用,建立了一套套样式的全集,每个样式在对应的集合中都有编号。用到了哪一项,就用一个属性存贮一下这个索引值。需要用的时候就按索引找来使用即可。这些样式都存在压缩包的目录xl下style。xml文件中。与这个相关的部分我掏出来加上注释如下:
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  看到这些,你就可以知道(Excel也是),条件格式指定为dxfId2,就该用上面第3项的字体样式和填充样色来突出显示了。
  如果需要研究这些规范,可以查阅SpreadsheetML的schema(以下压缩包中的sml。xsd)
  链接:https:pan。baidu。coms1nHAfAFx8RBxcNdY1
  提取码:sche
搜索 投诉 评论 转载

博士生录取申请审核制利弊谈高校博士生录取越来越多采用申请审核制。赞成者有之,批评者有之。赞成者认为,相对于招考,申请制让导师可以更好地考查学生科研以及各方面潜力,也免去各种考试组织、阅卷之类的麻烦……张海霞告别鸡汤,从炸靶到打靶【题记】告别鸡汤,避免把课讲成无营养的鸡汤而变成对听众能够有一定帮助和启发的教育,就是要从“虚拟炸靶”变成“精准打靶”,让语言从“”暴力”变成“抱力”!20190801……博士论文的影响力庆祝八一许培扬南昌枪声战旗红,工农红军打前锋,全国学习解放军,八一节日共庆功。n……学习笔记:Excel文件格式之条件格式研究及XSL实现以前我对WordExcel这类文件的结构很感兴趣,一直想了解它是如何存贮数据的,但苦于找不到相关的资料,而且听说它的文件结构也相当复杂,我等无法理解,因此这种想法也一直是个悬念……数学是人类的发明还是发现?有的数学是发明,有的是发现。比如,112就是发现,而113则是发明。因为,前者与真实世界相符,数学家只是发现了这些数学命题;而后者则是虚构的。发现与发明,就好比历史记录与……一般地方高校是否应该有精英培养计划最近我们电子工程系的老师就“一般地方高校是否应该有精英培养计划”展开了广泛的讨论。我本人是持赞同观点的,什么是好的教育,用工程教育的观点说,就是要产出导向,产出说话,我非常赞同……本科生科研指南(49):相似条件本科生科研指南(49):相似条件张宇宁华北电力大学(北京)相似原理和量纲分析在流体力学领域中有……安全札记:安全生产能从生产活动中单拎出来吗?一直以来存在一个现象,即就安全生产谈安全生产,就安全监管谈安全监管。须知,就一个社会整体而言,安全与否是整个社会各项事业综合作用的结果;就一家企业而言,安全与否是整体企业……欺负老实人前几天看上海复旦大学附属华山医院感染科主任、党支部书记张文宏的讲话非常有意思:“第一批都是了不起的医生,他们在对疾病的传播性、疾病性一无所知的情况下,就把自……LoetLeydesdorff的集大成著作之1。11和1。1LoetLeydesdorff的集大成著作之1。11和1。12武夷山2021年1月,施普林格出版社出版了荷兰科学计量学家、普赖斯……今日妄言道德经(三十一)兵今日妄言道德经(三十一)兵王谢夫兵者,不祥之器也。何为兵,战士、军队也。何为祥,《周书武顺》指出“无道曰祥”,指凶吉的预兆,预……safety和security的区别Sisthepreventionofaccidents(accidentswhichmayormaynotinvolvehumanagents,butare……
也说“自主创新”的翻译破四维难在哪里?又没中!(给基金委的建议感想)跨学科和协同戏说人工智能计算方法牛顿法漫谈DTD的几种结构类似物〔转载〕赵春江院士:智慧农业发展现状及战略目标研究高校生态研究生导师资格1969:河南错过中科大大学一年级“逻辑课”期中考试试卷企业家精神走向创新之路
小兔踩尾巴土传病害的防治方法有哪些男人脾虚肾虚怎么调理由什么引起的穿腻了长大衣,建议试试面包羽绒服,时髦精都爱,保暖时髦债券创新加快今年以来绿债扩容超1600亿急救的误区正确急救避免九个重大误区儿童应掌握哪些预防煤气中毒知识湖北黄头山中学食堂半年收75万赚43万学校食堂缘何成暴利产业毕节市是哪里(毕节最穷没有之一)卧室里放花形的灯好吗NASA观测一颗汽车大小的小行星刚与地球擦肩而过你跟命运吵过架吗?

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找常识日常社交礼仪安全防范适应宝库新闻军事国内国际财经股票基金外汇科技手机众测体育娱乐时尚女性育儿