将化合物结构转成SDF,并批量插入excel
205服务器
其实能用canvas直接导出成excel最为简单,但是由于某些时候canvas导出的结构显示错误,所以就写了以下脚本以备不时之需
安装所需要的python模块
- pip3 install cairosvg
- pip3 install pillow
先用openbabel将cdx文件转成svg矢量图,再用cairosvg(直接转成png格式清晰度受限,因此先转成svg)
- for i in
`ls ../cdx`
;do a=`basename $i .cdx`
;echo $a;obabel -icdx ../cdx/$i -osvg -O $a.svg;done - for i in
`ls ./`
;do a=`basename $i .svg`
;echo $a;cairosvg $i -d 1200 --output-width 600 --output-height 600 -o $a.png;done
白底直接插入excel会导致边框受限,不利于查看,因此用python脚本将白底去掉(transparent.py)
- import sys
- file=sys.argv[1] #将脚本后的第一个参数传入
- import PIL.Image as Image
- img = Image.open(file + ".png").convert('RGBA')
- W, L = img.size
- white_pixel = (255, 255, 255, 255) # 白色
- for h in range(W):
- for i in range(L):
- if img.getpixel((h, i)) == white_pixel:
- img.putpixel((h, i), (0, 0, 0, 0)) # 设置透明
- img.save(file + "-trans.png") # 自己设置保存名称
运行上述脚本,需要转换的图片名称放在脚本后面作为参数输入
- for i in
`ls ./|grep "png"`
;do a=`basename $i .png`
;echo $a;/home/zjxu/prog/anaconda3/bin/python3.8 transparent.py $a;done
生成excel插入图片的函数
- <table><img src="C:\Users\zlp\Desktop\图库\NF-6-10a2.png"width="180"height="180"> #根据文件路径以及需要插入的长宽调整参数
- for i in
`ls ./|grep "-trans.png"`
;do echo "<table><img src=\"C:\\Users\\zlp\\Desktop\\图库\\$i\"width=\"180\"height=\"180\">" >> insert.txt;done #生成批量插入的函数 - #可根据需要的顺序先从excel表格中copy到文本order.dat,再将for i in
`ls ./|grep "-trans.png"`
替换为for i in`cat order.dat`
将excel需要插入图片的那一列根据图片大小调整长宽,然后复制insert.txt的内容,右击第一个插入的单元格
图片会按照函数的顺序将图片插入到单元格中,如果需要调整位置和大小,可ctrl+A全选之后,批量调整