import openpyxl
from openpyxl import Workbook
from openpyxl.drawing import image
from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font, colors
"""试验报表类"""
class ExcelReport(object):
def __init__(self, data, path):
self.data = data
self.path = path
cells = ['A', 'B', 'C', 'D', 'E', 'F']
# 工作簿实例化
wb = Workbook()
self.book = wb
# 激活工作表
ws = wb.active
#ws1 = wb.create_sheet("Mysheet")
# 更改表名
ws.title = "流出杯实验报表"
for cell in cells:
ws.column_dimensions[cell].width = 20
sideStyle = Side(border_style='thin', color='00000000')
borderStyle = Border(left=sideStyle, right=sideStyle,
top=sideStyle, bottom=sideStyle)
# 第1行
ws.row_dimensions[1].height = 35
ws.merge_cells('A1:F1')
ws['A1'].alignment = Alignment(horizontal='center', vertical='center')
ws['A1'].font = Font(name='宋体', size=20, bold=True)
for x in ws['A1:F1']:
for y in x:
y.border = borderStyle
ws['A1'] = "自动流出杯式粘度测定仪试验报表"
# 第2行
ws.merge_cells('A2:F2')
ws.row_dimensions[2].height = 20
ws['A2'].alignment = Alignment(horizontal='left', vertical='center')
ws['A2'].font = Font(name='宋体', size=13, bold=True)
ws['A2'] = "实验基本信息"
for x in ws['A2:F2']:
for y in x:
y.border = borderStyle
# 第3行
ws.merge_cells('A3:B3')
ws.merge_cells('C3:D3')
ws.merge_cells('E3:F3')
ws.row_dimensions[3].height = 25
for x in ws['A3:F3']:
for y in x:
y.border = borderStyle
y.font = Font(name='宋体', size=12)
y.alignment = Alignment(horizontal='center', vertical='center')
ws['A3'] = "实验时间:" + data[0].start_time
ws['C3'] = "试验类型:" + self.getExperimentTypeName(data[0].experiment_type)
ws['E3'] = "实验人:" + data[0].experiment_user_name
# 第4行
ws.merge_cells('A4:B4')
ws.merge_cells('C4:D4')
ws.merge_cells('E4:F4')
ws.row_dimensions[4].height = 25
for x in ws['A4:F4']:
for y in x:
y.border = borderStyle
y.font = Font(name='宋体', size=12)
y.alignment = Alignment(horizontal='center', vertical='center')
ws['A4'] = "试验材料:" + data[0].material_name
ws['C4'] = "流出杯规格:{0}号杯".format(data[0].cup_type)
ws['E4'] = "结论:" + str(data[0].result)
# 第5行
ws.merge_cells('A5:B5')
ws.merge_cells('C5:D5')
ws.merge_cells('E5:F5')
ws.row_dimensions[5].height = 25
for x in ws['A5:F5']:
for y in x:
y.border = borderStyle
y.font = Font(name='宋体', size=12)
y.alignment = Alignment(horizontal='center', vertical='center')
ws['A5'] = "试验次数:" + str(data[0].total_count)
ws['C5'] = "总耗时:{0}s".format(data[0].total_cost/10)
ws['E5'] = "平均耗时:{0}s".format(data[0].total_cost / data[0].total_count/10)
# 第6行
ws.merge_cells('A6:F6')
ws.row_dimensions[6].height = 20
ws['A6'].alignment = Alignment(horizontal='left', vertical='center')
ws['A6'].font = Font(name='宋体', size=13, bold=True)
ws['A6'] = "实验阶段耗时信息"
for x in ws['A6:F6']:
for y in x:
y.border = borderStyle
# 第8行
ws.merge_cells('A8:F8')
ws.row_dimensions[8].height = 20
ws['A8'].alignment = Alignment(horizontal='left', vertical='center')
ws['A8'].font = Font(name='宋体', size=13, bold=True)
ws['A8'] = "实验温度信息"
for x in ws['A8:F8']:
for y in x:
y.border = borderStyle
# 第9行
ws.merge_cells('A9:B9')
ws.merge_cells('C9:D9')
ws.merge_cells('E9:F9')
ws.row_dimensions[9].height = 25
for x in ws['A9:F9']:
for y in x:
y.border = borderStyle
y.font = Font(name='宋体', size=12)
y.alignment = Alignment(horizontal='center', vertical='center')
# 第10行
ws.row_dimensions[10].height = 25
for x in ws['A10:F10']:
for y in x:
y.border = borderStyle
y.font = Font(name='宋体', size=12)
y.alignment = Alignment(horizontal='center', vertical='center')
ws.merge_cells('A7:B7')
ws.merge_cells('C7:D7')
ws.merge_cells('E7:F7')
ws.row_dimensions[7].height = 25
for x in ws['A7:F7']:
for y in x:
y.border = borderStyle
y.font = Font(name='宋体', size=12)
y.alignment = Alignment(horizontal='center', vertical='center')
lenghtlist = []
for index, x in enumerate(data[1]):
lenghtlist.append(len(data[2][index]))
ws[cells[index * 2] + '7'] = "试样{0}实验耗时:{1}s".format(index + 1, x.time_cost/10)
ws[cells[index * 2] + '9'] = "试样{0}实验温度".format(index + 1)
ws[cells[index * 2] + '10'] = "记录时间"
ws[cells[index * 2 + 1] + '10'] = "温度值"
for index1, x1 in enumerate(data[2][index]):
ws.row_dimensions[index1 + 11].height = 18
ws[cells[index * 2] + str(index1 + 11)] = x1.record_time
ws[cells[index * 2 + 1] + str(index1 + 11)] = x1.temp_value
for x in ws['A11:F' + str(max(lenghtlist) + 10)]:
for y in x:
y.border = borderStyle
y.font = Font(name='宋体', size=12)
y.alignment = Alignment(horizontal='center', vertical='center')
rowIndex = max(lenghtlist) + 11
ws.row_dimensions[rowIndex].height = 20
ws.merge_cells('A{0}:F{1}'.format(str(rowIndex),str(rowIndex)))
ws['A' + str(rowIndex)].alignment = Alignment(horizontal='left', vertical='center')
ws['A' + str(rowIndex)].font = Font(name='宋体', size=13, bold=True)
ws['A' + str(rowIndex)] = "实验断点图片"
for x in ws['A{0}:F{1}'.format(str(rowIndex),str(rowIndex))]:
for y in x:
y.border = borderStyle
rowIndex+=1
ws.row_dimensions[rowIndex].height = 25
ws.merge_cells('A{0}:B{1}'.format(str(rowIndex),str(rowIndex)))
ws.merge_cells('C{0}:D{1}'.format(str(rowIndex),str(rowIndex)))
ws.merge_cells('E{0}:F{1}'.format(str(rowIndex),str(rowIndex)))
for x in ws['A{0}:F{1}'.format(str(rowIndex),str(rowIndex))]:
for y in x:
y.border = borderStyle
y.alignment = Alignment(horizontal='center', vertical='center')
y.font = Font(name='宋体', size=12)
rowIndex+=1
ws.row_dimensions[rowIndex].height = 400
ws.merge_cells('A{0}:B{1}'.format(str(rowIndex),str(rowIndex)))
ws.merge_cells('C{0}:D{1}'.format(str(rowIndex),str(rowIndex)))
ws.merge_cells('E{0}:F{1}'.format(str(rowIndex),str(rowIndex)))
ws['A' + str(rowIndex)].alignment = Alignment(horizontal='center', vertical='center')
ws['A' + str(rowIndex)].font = Font(name='宋体', size=12)
#ws.add_image(image.Image("/home/pi/Downloads/11/Resources/EXImages/{0}/1.jpg".format(data[0].experiment_id)),
#'A' + rowIndex)
#ws.add_image(image.Image("/home/pi/Downloads/11/Resources/EXImages/{0}/2.jpg".format(data[0].experiment_id)),
#'C' + rowIndex)
#ws.add_image(image.Image("/home/pi/Downloads/11/Resources/EXImages/{0}/3.jpg".format(data[0].experiment_id)),
#'E' + rowIndex)
for x in ws['A{0}:F{1}'.format(str(rowIndex),str(rowIndex))]:
for y in x:
y.border = borderStyle
for index, x in enumerate(data[1]):
ws[cells[index * 2] + str(rowIndex - 1)] = "试样{0}断点图片".format(index + 1)
#img =
#image.Image("/home/pi/Downloads/11/Resources/EXImages/{0}/1.jpg".format(data[0].experiment_id))
#img.anchor(ws.cell("{0}{1}".format(cells[index * 2],rowIndex)))
#ws.add_image(img)
ws.add_image(image.Image("/home/pi/Downloads/11/Resources/EXImages/{0}/{1}.jpg".format(data[0].experiment_id,index + 1)),"{0}{1}".format(cells[index * 2],rowIndex))
ws.add_image(image.Image("image.png"),"A{0}".format(rowIndex+12))
# 导出
def export(self):
try:
self.book.save(self.path)
except Exception as e:
print(e)
def getExperimentTypeName(self,experimentType):
if(experimentType==1):
return '标准试验'
elif(experimentType==2):
return '预备试验'
elif(experimentType==3):
return '校准试验'
else:
return '标准试验'
if __name__ == "__main__":
import ExcelReport
excelReport = ExcelReport.ExcelReport(BllExperiment().getExperimentAllInfo('067a5926-3dce-11e8-a46a-b827eb9007d3'), "22222.xls")
excelReport.export()
https://pvp.qq.com/web201605/js/herolist.json
https://api.oddfar.com/yl/q.php?c=1007&encode=text
using System;
using System.Net;
using System.Text;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
/**
* 作者:致远
*
* 主页:http:oddfar.com
* 教程:http://oddfar.com/index.php/archives/41/
*/
namespace pvp
{
class Program
{
static string getpvpjson()
{
WebClient wc = new WebClient();
wc.Encoding = Encoding.UTF8;
//以字符串的形式返回数据
string html = wc.DownloadString("http://pvp.qq.com/web201605/js/herolist.json");
return html;
}
static void Main(string[] args)
{
string ename, cname, skinname, title, purl, shuchu;
string jsonnr = getpvpjson().Replace("\"","\'");
string mulu = @"E:\C\pvp\";
JArray userArry = (JArray)JsonConvert.DeserializeObject(jsonnr);
//获取树形用户json字符串
string userList = userArry.ToString();
//解析用户json信息
JArray jar = (JArray)JsonConvert.DeserializeObject(userList);
Console.WriteLine("英雄数量:{0}\n",jar.Count);
for (int i = 0; i < jar.Count; i++)
{
JObject j = JObject.Parse(jar[i].ToString());
string jn = j.ToString();
int skin_num = jn.Length - jn.Replace("|", "").Length ;
skin_num = skin_num + 1;
ename = j["ename"].ToString();
cname = j["cname"].ToString();
title = j["title"].ToString();
if (skin_num == 1)
{
skinname = "null";
purl = "http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/" + ename + "/" + ename + "-bigskin-" + 1 + ".jpg";
shuchu = cname + "(" + title + ")" + "url:" + purl;
Console.WriteLine(shuchu+"(下载)");
string filepath = mulu + cname +"-"+ title + ".jpg";
WebClient mywebclient = new WebClient();
mywebclient.DownloadFile(purl, filepath);
}
else
{
skinname = j["skin_name"].ToString();
char[] s = new char[] { '|' };
string[] ad = skinname.Split(s);
for (int i2 = 0; i2 < ad.Length; i2++)
{
int i3 = i2 + 1;
purl = "http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/"+ ename + "/"+ ename + "-bigskin-"+i3+".jpg";
shuchu = cname +"("+ ad[i2] + ")"+ "url:"+ purl;
Console.WriteLine(shuchu + "(下载)");
string filepath = mulu + cname + "-" + ad[i2] + ".jpg";
WebClient mywebclient = new WebClient();
mywebclient.DownloadFile(purl, filepath);
}
}
}
}
}
}
API
[scode type="share"]API接口:https://api.oddfar.com/yl/q.php
请求示例:https://api.oddfar.com/yl/q.php?c=2004&encode=text
支持协议:HTTP/HTTPS
提交方式:GET/POST
返回格式:UTF8[/scode]
[scode type="blue"]
本接口已成功调用1128549次
[/scode]
[button color="info" icon="" url="https://api.oddfar.com" type="round"]点我进入api首页[/button]
参数
名称 值 可选 说明
c 见后表 是 句子类型,默认为2001
encode 见后表 是 返回编码,默认为text
句子类型(参数)
参数 说明
1001 土味情话
1002 精神语录
1003 网易云热评
1004 成人笑话
1005 奇葩对话
1006 舔狗日记
1007 毒鸡汤
1008 朋友圈文案
1009 骂人宝典
2001 动画
2002 漫画
2003 游戏
2004 文学
2005 原创
2006 来自网络
2007 其他
2008 影视
2009 诗词
2010 网易云
2011 哲学
2012 抖机灵
返回编码(参数)
参数 说明
text 返回纯洁文本
json 返回JSON文本
js 返回JavaScript的文本
返回
JSON返回数据
返回参数名称 描述
code 获取状态
msg 获取状态提示
type 正文类型
text 正文
例子:
{ "code": "200", "msg": "success", "type": "2004", "text": "我点燃了火,却控制不了它。" }
网站显示方法
<script src="https://api.oddfar.com/yl/q.php?c=2004&encode=js"></script>
然后把这句放到你想把语录放置的地方
现就这样以后慢慢更新,先来一段土味情话
[scode type="green"] “我想去旅游了”
想去哪?
“你的被窝一日游” [/scode]