乔山办公网我们一直在努力
您的位置:乔山办公网 > word文档 > 利用R语言揭开office配色模板的的神秘面纱~(附代码)-word模板路径

利用R语言揭开office配色模板的的神秘面纱~(附代码)-word模板路径

作者:乔山办公网日期:

返回目录:word文档

每日干货好文分享丨请点击+关注

欢迎关注天善智能微信公众号,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区。

对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入头条数据爱好者交流群,数据爱好者们都在这儿。

今天我教大家用R语言做一些有趣的事情,什么事情呢~暂时保密哦,想知道的话,认真往下看哟!

想必经常使用office的童鞋(无论你用的Word、PPT、还是Excel),经常会遇到这样的问题,如果做出来的图表不加修饰的话,然后效果就巨难看,你知道这是为什么嘛~

好吧让小魔方来告诉你吧,因为office给你用的默认配色模板,这种配色模板呢,坦白的说,我不认为好看(至少跟主流的设计搭配风格比起来的话),可是没有办法呀,谁让偌大的地球,只有微软一家开发出了完善的office办公平台了吧(虽然有些组件是收购的,某软只是做了整合的工作)。

可是你要知道,微软是一年技术驱动的公司(至少跟苹果这种设计驱动的公司相比的话),你要让哪些整天码代码的码农给你设计好看的配色,这个也有点儿不现实不是(真的跟公司创始人和企业文化有关,想想当年乔布斯为什么竭力地址IE和Windows甚至不惜自己开发了一套专供MAC平台使用的演示文稿软件——keynote)。

这种配色的不协调、不养眼、没品位在office2003及以前版本中体现的最深(不过也不可以过分苛责、毕竟整个社会的审美水平也是有选序渐进的趋势)。

好吧,说到这里,小魔方就给大家展示一下自己所使用平台的office官方默认配色系统是什么样的:

因为office系统组件贡献配色模板,所以这里给大家对比下Word、PPT、Excel的配色模板入口:

word:设计——颜色——下拉菜单

Excel:页面布局——主题——颜色

ppt:视图——幻灯片模板——背景——颜色

利用R语言揭开office配色模板的的神秘面纱~(附代码)

本人office版本及系统信息:

W10专业版(64) office2016(64)

那么接下来大家可能要问了,如果要想要自己定义配色模板是否可行呢,yes of course!

方法很简单,我刚才已经强调过一点,office平台所有组件共享诸多模块,当然也包含配色模板,也就是说,无论你在那个组件界面自定义了色板,最终都会保存在office平台公用的自定义配色模板文件夹里。(确实如此,无论是在Word界面自定义、还是Excel甚至PPT或者其他office组件内自定义配色模板,最终都会保存在同一个公用自定义配色模板文件夹,但是在软件界面你无法看到该文件保存的路径)。

所以说你就不用纠结应该在哪儿设置自定义配色了,那么我们就用Excel做一个尝试吧~

当你在Excel软件界面的页面布局——颜色下拉菜单底部点击自定义配色的时候,弹出菜单如下:

利用R语言揭开office配色模板的的神秘面纱~(附代码)

主题颜色一共12个选项,前四个是分深浅的两组文字背景颜色,中间6组是以着色1:6进行编号命名的颜色组合(通常用在系列配色中,如图表序列、线条系列等)。最后两个是超链接颜色(包括默认颜色和访问过的颜色显示)。

自定义模板一般来说是定义3:10这8个颜色,因为这也是显示在你软件界面配色选项中第一排的颜色(无论是字体颜色菜单、形状填充颜色菜单还是线条颜色菜单都是如此)。至于颜色1和颜色2为何不显示这个问题我也很纳闷,最后两个超链接颜色用的频率不高可以忽略。

随意打开一个颜色对应下拉框,你就可以看到很熟悉的调色板,没错跟软件主界面的字体、线条和图形填充颜色菜单一模一样,接下来就不用我说了,自己选就行。

利用R语言揭开office配色模板的的神秘面纱~(附代码)

定义完目标色之后,点击保存,在公用配色模板目录就会多一个配色模板(.xml格式,没错就是xml,透露一个秘密,office文档结构其实是一组.xml文件组成的压缩包,不信你用任意一个docx、pptx、xlsx文档修改后缀名为.rar,然后用解压软件打开仔细看看里面都放了什么东西,有惊喜哦~)

利用R语言揭开office配色模板的的神秘面纱~(附代码)

我保存了一个名为balalala的自定义配色模板。然后……

对吧,我没有骗你吧,确实是定义一个,所有的软件都可以共用——

利用R语言揭开office配色模板的的神秘面纱~(附代码)

接下来做一些有挑战性的事情,既然office平台的配色模板是.xml格式的文件,那么我们可不可以不用再软件里面手动定义,而直接生成符合xml语法格式的配色模板文件呢~

答案当然是可以的啦,不过做这个需要你掌握以下两点知识:

1、知道office配色模板的存放路径:

一般有两类模板,一类是系统模板,就是安装软件时候,系统自动加载的,一般配色都不甚好看,显示在颜色下拉菜单的第二个栏目,而自定义模板可以给大家充分发挥想象力的空间。一般显示在颜色下拉菜单的第一个部分。

模板的路径如下(个人电脑的路径,其他平台及品牌类比操作):

系统:C:\\Program Files\\Microsoft Office\\root\\Document Themes 16\\Theme Colors

自定义:C:\\Users\\Administrator\\AppData\\Roaming\\Microsoft\\Templates\\Document Themes\\Theme Colors

2、了解xml语法结构,并会适当修改色值。(只是了解,不要求会写,事实上看不懂没关系,我也不会写,一会儿会一步一步的教你拆解xml)。

接下来我们就来拆拆拆~

首先先随便自定义一个模板(在软件里面自定义),然后定位到自定义模板文件夹里:将xml文件用txt记事本打开(notpad++也可以),随便浏览下xml文档结构:

利用R语言揭开office配色模板的的神秘面纱~(附代码)

看吧,其实模板也没啥神秘的,xml语法结构树中,包含了刚才自定义的所有12中颜色的十六进制色值信息。(数一数一共几个val)。

但是介于好多小伙伴没有xml基础,txt记事本没有标注xml机构的功能,本文全部是紧凑排列的,挤在一起看不出来什么。

这里我将其导入R中,使用规范的xml树结构工具来拆解xml文档。

library(XML)

library(plyr)

library(dplyr)

library(scales)

setwd("C:/Users/Administrator/AppData/Roaming/Microsoft/Templates/Document Themes/Theme Colors")

color2<-xmlTreeParse("balalala.xml",useInternalNodes=TRUE)

color2

利用R语言揭开office配色模板的的神秘面纱~(附代码)

这回看清楚了吧,以上函数将该xml还原成其xml结构下的树结构,这也是一个语法完整的xml文档,第一行是xml的头文件,声明该xml文档的类型、版本号编码方式以及是否含有外部DTD(什么鬼我也不知道)该树结构分为三级子元素结构:

分别是带有命名空间的元素a:clrScheme

二级元素:a:dkl……a:folHlink 刚好12个二级子元素,对应之前自定义的12中颜色;

colornames<-xmlRoot(color2)%>%xmlChildren()%>%names()

[1] "dk1" "lt1" "dk2" "lt2" "accent1" "accent2" "accent3" "accent4"

[9] "accent5" "accent6" "hlink" "folHlink"

三级元素:a:sysClr 12个三级元素拥有同样的名称,而我们定义的颜色色值变存储在这12个三级空子元素的val属性值内。

colorgroup<-getNodeSet(color2,'//a:srgbClr') #选取所有三级节点a

colorindex<-laply(colorgroup,xmlAttrs,name='val') #提取所有三级节点中的val属性值

colorindex

[1] "44546A" "E7E6E6" "4472C4" "ED7D31" "A5A5A5" "FFC000" "5B9BD5" "70AD47" "0563C1" "954F72"

因为R中的16进制色值需要加前缀#才能识别,所以最好加上前缀,这样我们就可以愉快的在R中查看颜色了。

colorindex<-paste0("#",colorindex)

show_col(colorindex,labels=F)

利用R语言揭开office配色模板的的神秘面纱~(附代码)

好吧,就问你,这个配色方案丑不丑,之前自定义的时候一个颜色没改,就是office2016默认的配色方案,怪不得你做不出来好点的图表作品~

那么我们是不是可以自己在txt中把一些好看的色值给黏贴进去呢,这样也做成了也挺神奇的哈~说干就干~

首先找一个好的在线配色平台——

没错就它了——Adobe Color CC

利用R语言揭开office配色模板的的神秘面纱~(附代码)

看着还不错

setwd("C:/Users/Administrator/AppData/Roaming/Microsoft/Templates/Document Themes/Theme Colors")

color2<-xmlTreeParse("balalala.xml",useInternalNodes=TRUE)

colorgroup<-getNodeSet(color2,'//a:srgbClr')

colorindex<-laply(colorgroup,xmlAttrs,name='val')

colorindex<-paste0("#",colorindex)

show_col(colorindex,labels=F)

利用R语言揭开office配色模板的的神秘面纱~(附代码)

哈哈,这回配色是不是稍微好一些了,至少要比刚才好很多!

接下来我有个疯狂的想法,我想把office平台系统默认配色模板全部都导出到R中,然后做成一个万花筒,让大家好好看看微软的工程师都给我们弄了啥花花绿绿的颜色——

setwd("C:/Program Files/Microsoft Office/root/Document Themes 16/Theme Colors")

a<-list.files(".",pattern = "*.xml$")

[1] "Aspect.xml" "Blue Green.xml" "Blue II.xml"

[4] "Blue Warm.xml" "Blue.xml" "Grayscale.xml"

[7] "Green Yellow.xml" "Green.xml" "Marquee.xml"

[10] "Median.xml" "Office 2007 - 2010.xml" "Orange Red.xml"

[13] "Orange.xml" "Paper.xml" "Red Orange.xml"

[16] "Red Violet.xml" "Red.xml" "Slipstream.xml"

[19] "Violet II.xml" "Violet.xml" "Yellow Orange.xml"

[22] "Yellow.xml"

没错这就是某软提供的所有默认配色模板(一共22套)

mycolorfile<-c()

fun<-function(i){

color2<-xmlTreeParse(a[i],useInternalNodes=TRUE)

colornames<-xmlRoot(color2)%>%xmlChildren()%>%names()

colorgroup<-getNodeSet(color2,'//a:srgbClr')

colorindex<-laply(colorgroup,xmlAttrs,name='val')

colorindex<-paste0("#",colorindex)

}

for ( i in 1:length(a)){

mycolorfile<-c(mycolorfile,fun(i))

}

show_col(mycolorfile,labels=F)

利用R语言揭开office配色模板的的神秘面纱~(附代码)

好吧,这就是微软office所提供的所有默认配色,给你一个眼神,自己体会~_~

colordata<-myfullcolorfile[c(-221,-222)]

dim(colordata)<-c(10,length(a))

rownames(colordata)<-colornames[c(-1,-2)]

colnames(colordata)<-sub(".xml","",a)

colordata<-t(colordata)

利用R语言揭开office配色模板的的神秘面纱~(附代码)

write.table(colordata,"F:/colordata.txt",sep=" ",row.names=FALSE,col.names=TRUE,quote=FALSE)

利用R语言揭开office配色模板的的神秘面纱~(附代码)

对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣同学加微信:tstoutiao,邀请您加入头条数据爱好者交流群,数据爱好者们都在这儿。

利用R语言揭开office配色模板的的神秘面纱~(附代码)

转载请保留以下内容:

本文来源自天善社区专家EasyCharts的博客(公众号)。

原文链接:https://ask.hellobi.com/blog/EasyCharts/6912 。

相关阅读

  • Word文件加密-word文档密码破解

  • 乔山办公网word文档
  • word文档密码破解,了解文件加密的基本原理和方法使用Microsoft Office Word软件内置的加密功能对Word文件进行加密(1)创建或打开一个word文件,在菜单栏上选择“工具”选项卡,并在弹出的
关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网