临时使用openpyxl代码
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]