CompetitionAPI_dotnet/RuralPower/RuralPowerAPI.cs

848 lines
37 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Newtonsoft.Json;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using RestSharp;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.IO;
using System.Linq;
using System.Net;
//using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace RuralPower
{
public class RuralPowerAPI
{
/// <summary>
/// Post 登录接口
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="login_name"></param>
/// <param name="real_name"></param>
/// <param name="password"></param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string Login(string url, string login_name, string real_name, string password)
{
var value = RSAHelper.EncryptData(password);
var post_data = JsonConvert.SerializeObject(new { login_name = login_name, password = value });
var src = get_page_json(url + "/unity/Login", post_data, "");
return src;
}
/// <summary>
/// Post 修改密码接口
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="token">token</param>
/// <param name="UserId">用户id</param>
/// <param name="OldPassword">旧密码</param>
/// <param name="NewPassword">新密码</param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string ChangePassword(string url, string token, string LoginName, string OldPassword, string NewPassword)
{
OldPassword = RSAHelper.EncryptData(OldPassword);
NewPassword = RSAHelper.EncryptData(NewPassword);
var post_data = JsonConvert.SerializeObject(new { LoginName = LoginName, OldPassword = OldPassword, NewPassword = NewPassword });
var src = get_page_json(url + "/unity/ChangePassword", post_data, token);
return src;
}
/// <summary>
/// Post 记录用户登录ip
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="UserId">用户id</param>
/// <param name="ExamId">考试id</param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string LogIP(string url, string token, string UserId, string ExamId, string IP)
{
var post_data = string.Format("UserId={0}&ExamId={1}&IP={2}", UserId, ExamId, IP);
var src = get_page(url + "/unity/LoginLog", post_data, token);
return src;
}
#region
/// <summary>
/// Get 获取当前时间已发布的考试信息接口
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="UserId">考生id</param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string GetExam(string url, string token, string UserId, string ExamId)
{
var post_data = string.Format("UserId={0}&ExamId={1}", UserId, ExamId);
var src = get_page(url + "/unity/GetExam", post_data, token);
return src;
}
/// <summary>
/// Post 开始考试接口
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="ExamId">考试id</param>
/// <param name="UserId">考生id</param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string StartExam(string url, string token, string ExamId, string UserId)
{
var post_data = string.Format("ExamId={0}&UserId={1}", ExamId, UserId);
var src = get_page(url + "/unity/StartExam", post_data, token);
return src;
}
/// <summary>
/// Post 结束考试接口
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="ExamId">考试id</param>
/// <param name="UserId">考生id</param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string EndExam(string url, string token, string ExamId, string UserId)
{
var post_data = string.Format("ExamId={0}&UserId={1}", ExamId, UserId);
var src = get_page(url + "/unity/EndExam", post_data, token);
return src;
}
/// <summary>
/// 操作票接口
/// </summary>
/// <param name="url"></param>
/// <param name="ExamId">开始id</param>
/// <param name="UserId">用户id</param>
/// <param name="Type">送电、停电</param>
/// <param name="data">json数组</param>
/// <returns></returns>
public string WriteTicket(string url, string token, string ExamId, string UserId, string Type, string data)
{
//var src = get_page_json(url + "/unity/WriteUserOperationTicket?action=writeTicket&ExamId=" + ExamId+ "&UserId="+ UserId+ "&Type="+ Type, data);
var post_data = string.Format("ExamId={0}&UserId={1}&Type={2}&data={3}", ExamId, UserId, Type, data);
var src = get_page(url + "/unity/WriteUserOperationTicket", post_data, token);
return src;
}
/// <summary>
/// 查询操作票步骤,用以初始化或断点续传操作票步骤
/// </summary>
/// <param name="url"></param>
/// <param name="ExamId">开始id</param>
/// <param name="UserId">用户id</param>
/// <param name="Type">送电、停电</param>
/// <param name="data">json数组</param>
/// <returns></returns>
public string QueryTicketProc(string url, string token, string ExamId, string UserId, string Type)
{
var post_data = string.Format("ExamId={0}&UserId={1}&Type={2}", ExamId, UserId, Type);
var src = get_page(url + "/unity/QueryTicketProc", post_data, token);
return src;
}
/// <summary>
/// 单步填写操作票步骤接口
/// </summary>
/// <param name="url"></param>
/// <param name="ExamId">开始id</param>
/// <param name="UserId">用户id</param>
/// <param name="Type">送电、停电</param>
/// <param name="data">json数组</param>
/// <returns></returns>
public string WriteTicketProc(string url, string token, string ExamId, string UserId, string Type, string OperationTicketId, string Score, string ScoreReason)
{
//OperationTicketId: 步骤id
//UserId :用户id
//ExamId:考试id
//Type:送电、停电
//Score 扣分值:0不扣分
//ScoreReason扣分原因
var post_data = string.Format("ExamId={0}&UserId={1}&Type={2}&OperationTicketId={3}&Score={4}&ScoreReason={5}"
, ExamId, UserId, Type, OperationTicketId, Score, ScoreReason);
var src = get_page(url + "/unity/WriteTicketProc", post_data, token);
return src;
}
/// <summary>
/// 查询操作票步骤,用以初始化或断点续传操作票步骤
/// </summary>
/// <param name="url"></param>
/// <param name="ExamId">开始id</param>
/// <param name="UserId">用户id</param>
/// <param name="Type">送电、停电</param>
/// <returns></returns>
public string StopTicketProc(string url, string token, string ExamId, string UserId, string Type)
{
var post_data = string.Format("ExamId={0}&UserId={1}&Type={2}", ExamId, UserId, Type);
var src = get_page(url + "/unity/StopTicketProc", post_data, token);
return src;
}
/// <summary>
/// Post 巡线、排故工器具接口
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="parameter">参数</param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string AddUserTool(string url, string token, string parameter)
{
var src = get_page_json(url + "/unity/AddUserTool", parameter, token);
return src;
}
/// <summary>
/// Post 保存考试故障记录接口
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="parameter">参数</param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string AddUserFaultRecord(string url, string token, string parameter)
{
var src = get_page_json(url + "/unity/AddUserFaultRecord", parameter, token);
return src;
}
/// <summary>
/// Post 上传考试选择题数据接口
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="parameter">参数</param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string AddUserChoiceQuestion(string url, string token, string parameter)
{
var src = get_page_json(url + "/unity/AddUserChoiceQuestion", parameter, token);
return src;
}
/// <summary>
/// Post 上传故障排故数据接口
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="parameter">参数</param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string AddFaultOperation(string url, string token, string parameter)
{
var src = get_page_json(url + "/unity/AddFaultOperation", parameter, token);
return src;
}
/// <summary>
/// Post 结束故障排故处理接口
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="ExamId">考试id</param>
/// <param name="UserId">用户id</param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string EndFaultOperation(string url, string token, string ExamId, string UserId)
{
var post_data = string.Format("ExamId={0}&UserId={1}", ExamId, UserId);
var src = get_page(url + "/unity/EndFaultOperation", post_data, token);
return src;
}
/// <summary>
/// Post 选择台区上传接口
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="ExamId">考试id</param>
/// <param name="UserId">考生id</param>
/// <param name="SelectPlatformArea">选择的台区</param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string SelectPlatformArea(string url, string token, string ExamId, string UserId, string SelectPlatformArea)
{
var post_data = string.Format("ExamId={0}&UserId={1}&SelectPlatformArea={2}", ExamId, UserId, SelectPlatformArea);
var src = get_page(url + "/unity/SelectPlatformArea", post_data, token);
return src;
}
/// <summary>
/// Post 更新验电结果接口
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="ExamId">考试id</param>
/// <param name="UserId">考生id</param>
/// <param name="Type">类型 巡线、排故</param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string UpdateElectricity(string url, string token, string ExamId, string UserId, string Type)
{
var post_data = string.Format("ExamId={0}&UserId={1}&Type={2}", ExamId, UserId, Type);
var src = get_page(url + "/unity/UpdateElectricity", post_data, token);
return src;
}
/// <summary>
/// Post 更新爬杆结果
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="ExamId">考试id</param>
/// <param name="UserId">考生id</param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string UpdateClimbrod(string url, string token, string ExamId, string UserId)
{
var post_data = string.Format("ExamId={0}&UserId={1}", ExamId, UserId);
var src = get_page(url + "/unity/UpdateClimbrod", post_data, token);
return src;
}
/// <summary>
/// Post 更新未分闸状态拉合熔芯扣分接口
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="ExamId">考试id</param>
/// <param name="UserId">考生id</param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string UpdateFusibleCore(string url, string token, string ExamId, string UserId)
{
var post_data = string.Format("ExamId={0}&UserId={1}", ExamId, UserId);
var src = get_page(url + "/unity/UpdateFusibleCore", post_data, token);
return src;
}
/// <summary>
/// Post 更新考试环节接口
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="ExamId">考试id</param>
/// <param name="UserId">考生id</param>
/// <param name="SelectPlatformArea">选择的台区</param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string UpdateExaminationLink(string url, string token, string ExamId, string UserId, string ExaminationLink)
{
var post_data = string.Format("ExamId={0}&UserId={1}&ExaminationLink={2}", ExamId, UserId, ExaminationLink);
var src = get_page(url + "/unity/UpdateExaminationLink", post_data, token);
return src;
}
/// <summary>
/// Post 更新围栏接口
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="ExamId">考试id</param>
/// <param name="UserId">考生id</param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string UpdateEnclosure(string url, string token, string ExamId, string UserId)
{
var post_data = string.Format("ExamId={0}&UserId={1}", ExamId, UserId);
var src = get_page(url + "/unity/UpdateEnclosure", post_data, token);
return src;
}
/// <summary>
/// Post 获取考试状态接口
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="ExamId">考试id</param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string GetExamStatus(string url, string token, string ExamId)
{
var post_data = string.Format("ExamId={0}", ExamId);
var src = get_page(url + "/unity/GetExamStatus", post_data, token);
return src;
}
/// <summary>
/// 上传视频录屏文件
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="ExamId">考试id</param>
/// <param name="UserId">考生id</param>
/// <param name="FileDesc">视频描述</param>
/// <param name="FilePath">视频路径</param>
/// <returns></returns>
public string UploadFile(string url, string token, string ExamId, string UserId, string FileDesc, string FilePath)
{
try
{
//using (var httpClient = new HttpClient())
//{
// using (var request = new HttpRequestMessage(new HttpMethod("Post"), url + "/unity/UploadFile"))
// {
// request.Headers.TryAddWithoutValidation("User-Agent", "Apipost client Runtime/+https://www.apipost.cn/");
// request.Headers.TryAddWithoutValidation("Content-Type", "application/x-www-form-urlencoded");
// var multipartContent = new MultipartFormDataContent();
// multipartContent.Add(new StringContent("ExamId"), ExamId);
// multipartContent.Add(new StringContent("UserId"), UserId);
// multipartContent.Add(new StringContent("FileDesc"), FileDesc);
// multipartContent.Add(new StringContent("Files"), FilePath);
// request.Content = multipartContent;
// var task = httpClient.SendAsync(request);
// task.Wait();
// HttpResponseMessage response = task.Result;
// var result = response.Content.ReadAsStringAsync();
// string responseBodyAsText = result.Result;
// return responseBodyAsText;
// }
//}
//var mfdc = new System.Net.Http.MultipartFormDataContent();
//mfdc.Headers.Add("ContentType", "multipart/form-data");//声明头部
//mfdc.Add(new System.Net.Http.StringContent("ExamId"), ExamId);//参数, 内容在前,参数名称在后
//mfdc.Add(new System.Net.Http.StringContent("UserId"), UserId);
//mfdc.Add(new System.Net.Http.StringContent("FileDesc"), FileDesc);
//mfdc.Add(new System.Net.Http.StringContent("Files"), FilePath);
//var clientTask = new System.Net.Http.HttpClient().PostAsync(url + "/unity/UploadFile", mfdc);//发起异步请求
//clientTask.Wait();//等待请求结果
//if (clientTask.Result.IsSuccessStatusCode)
//{
// //请求正常
// var resultTask = clientTask.Result.Content.ReadAsStringAsync();//异步读取返回内容
// resultTask.Wait();//等读取返回内容
// var resultStr = resultTask.Result;//返回内容字符串
// return resultStr;
//}
//else
//{
// //请求异常
// return "请求接口出错";
//}
var client = new RestClient(url + "/unity/UploadFile");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddFile("Files", FilePath);
request.AddParameter("ExamId", ExamId);
request.AddParameter("UserId", UserId);
request.AddParameter("FileDesc", FileDesc);
IRestResponse response = client.Execute(request);
var result = response.Content;
if (!string.IsNullOrEmpty(result))
{
if (result.Contains("\ufeff"))
{
result = result.Substring(1);
}
}
return result;
}
catch (Exception ex)
{
return "";
}
}
/// <summary>
/// Post 更新考试时长接口
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="UserId">用户id</param>
/// <param name="ExamId">考试id</param>
/// <param name="ExaminationDuration">剩余考试时长</param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string UpdateExaminationDuration(string url, string token, string UserId, string ExamId, string ExaminationDuration)
{
var post_data = string.Format("UserId={0}&ExamId={1}&ExaminationDuration={2}", UserId, ExamId, ExaminationDuration);
var src = get_page(url + "/unity/UpdateExaminationDuration", post_data, token);
return src;
}
/// <summary>
/// Post 更新场景设备状态接口
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="UserId">用户id</param>
/// <param name="ExamId">考试id</param>
/// <param name="ExaminationDuration">剩余考试时长</param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string UpdateRestoreSceneMsg(string url, string token, string UserId, string ExamId, string RestoreSceneMsg)
{
var post_data = string.Format("UserId={0}&ExamId={1}&RestoreSceneMsg={2}", UserId, ExamId, RestoreSceneMsg);
var src = get_page(url + "/unity/UpdateRestoreSceneMsg", post_data, token);
return src;
}
/// <summary>
/// Post 获取并更新考生考试时间
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="UserId">用户id</param>
/// <param name="ExamId">考试id</param>
/// <param name="Read">1 读取, 0 更新</param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string UpdateUserExamTime(string url, string token, string UserId, string ExamId, string Read)
{
var post_data = string.Format("UserId={0}&ExamId={1}&Read={2}", UserId, ExamId, Read);
var src = get_page(url + "/unity/UpdateUserExamTime", post_data, token);
return src;
}
#endregion
#region
/// <summary>
/// Get 获取我的实训列表接口
/// </summary>
/// <param name="url">接口域名</param>
/// <param name="UserId">考生id</param>
/// <param name="PageIndex">页码</param>
/// <param name="PageSize">每页条数</param>
/// <returns>反序列化返回的值失败,代表请求接口失败</returns>
public string GetTrainList(string url, string token, string UserId, string PageIndex, string PageSize)
{
var post_data = string.Format("UserId={0}&PageIndex={1}&PageSize={2}", UserId, PageIndex, PageSize);
var src = get_page(url + "/unity/GetTrainList", post_data, token);
return src;
}
#endregion
/// <summary>
/// POST json转excel接口
/// </summary>
/// <param name="url">接口路径</param>
/// <param name="parameter">请求参数 json字符串</param>
/// <returns></returns>
public byte[] JsonTurnExcel(string url, string parameter)
{
var model = new Api.json_turn_excel_request();
if (!string.IsNullOrEmpty(parameter))
{
model = JsonConvert.DeserializeObject<Api.json_turn_excel_request>(parameter);
}
HSSFWorkbook workbook = new NPOI.HSSF.UserModel.HSSFWorkbook();
ISheet sheet1 = workbook.CreateSheet("考试试卷");
var row1 = sheet1.CreateRow(0);//选择第1行
var cell1_1 = row1.CreateCell(0);//选择第1列
cell1_1.SetCellValue("考试名称");
var cell1_2 = row1.CreateCell(1);
cell1_2.SetCellValue("考试时长");
var cell1_3 = row1.CreateCell(2);
cell1_3.SetCellValue("开票日期");
var cell1_4 = row1.CreateCell(3);
cell1_4.SetCellValue("村组");
var cell1_5 = row1.CreateCell(4);
cell1_5.SetCellValue("台区");
var cell1_6 = row1.CreateCell(5);
cell1_6.SetCellValue("线路");
#region
IRow rowH = sheet1.CreateRow(1);
IDataFormat dataformat = workbook.CreateDataFormat();
ICellStyle cellstytle = workbook.CreateCellStyle();
cellstytle.DataFormat = dataformat.GetFormat("@");
for (int i = 0; i < 1000; i++)
{
if (i == 0)
{
sheet1.GetRow(0).GetCell(2).CellStyle = cellstytle;
}
else
{
var row = sheet1.CreateRow(i);
var cell = row.CreateCell(2);
cell.CellStyle = cellstytle;
}
}
#endregion
ISheet sheet2 = workbook.CreateSheet("考试工具");
var row2 = sheet2.CreateRow(0);//选择第1行
var cell2_1 = row2.CreateCell(0);//选择第1列
cell2_1.SetCellValue("工具名称");
var cell2_2 = row2.CreateCell(1);
cell2_2.SetCellValue("类型(工具、材料、着装)");
var cell2_3 = row2.CreateCell(2);
cell2_3.SetCellValue("用途(巡检、排故)");
ISheet sheet3 = workbook.CreateSheet("考试故障");
var row3 = sheet3.CreateRow(0);//选择第1行
var cell3_1 = row3.CreateCell(0);
cell3_1.SetCellValue("设备类型(杆塔、线档、配电箱)");
var cell3_2 = row3.CreateCell(1);
cell3_2.SetCellValue("线路");
var cell3_3 = row3.CreateCell(2);
cell3_3.SetCellValue("位置");
var cell3_4 = row3.CreateCell(3);
cell3_4.SetCellValue("缺陷类型");
var cell3_5 = row3.CreateCell(4);
cell3_5.SetCellValue("相位");
var cell3_6 = row3.CreateCell(5);
cell3_6.SetCellValue("缺陷类别");
ISheet sheet4 = workbook.CreateSheet("考试选择题");
var row4 = sheet4.CreateRow(0);//选择第1行
var cell4_1 = row4.CreateCell(0);//选择第1列
cell4_1.SetCellValue("题干");
var cell4_2 = row4.CreateCell(1);
cell4_2.SetCellValue("选项A");
var cell4_3 = row4.CreateCell(2);
cell4_3.SetCellValue("选项B");
var cell4_4 = row4.CreateCell(3);
cell4_4.SetCellValue("选项C");
var cell4_5 = row4.CreateCell(4);
cell4_5.SetCellValue("选项D");
var cell4_6 = row4.CreateCell(5);
cell4_6.SetCellValue("正确答案");
ISheet sheet5 = workbook.CreateSheet("考试操作票选项");
var row5 = sheet5.CreateRow(0);//选择第1行
var cell5_1 = row5.CreateCell(0);//选择第1列
cell5_1.SetCellValue("类型(送电、停电)");
var cell5_2 = row5.CreateCell(1);
cell5_2.SetCellValue("序号");
var cell5_3 = row5.CreateCell(2);
cell5_3.SetCellValue("内容");
if (model != null)
{
if (model.Exam != null)
{
var row = sheet1.CreateRow(1);//选择第1行
var cell1 = row.CreateCell(0);
cell1.SetCellValue(model.Exam.ExamName);
var cell2 = row.CreateCell(1);
cell2.SetCellValue(model.Exam.ExamDuration);
var cell3 = row.CreateCell(2);
cell3.SetCellValue(model.Exam.BillingDate);
cell3.CellStyle = cellstytle;
var cell4 = row.CreateCell(3);
cell4.SetCellValue(model.Exam.VillageGroup);
var cell5 = row.CreateCell(4);
cell5.SetCellValue(model.Exam.PlatformArea);
var cell6 = row.CreateCell(5);
cell6.SetCellValue(model.Exam.Line);
}
if (model.ToolList != null)
{
if (model.ToolList.Count > 0)
{
for (int i = 0; i < model.ToolList.Count; i++)
{
var row = sheet2.CreateRow(i);//选择第1行
var cell1 = row.CreateCell(0);
cell1.SetCellValue(model.ToolList[i].ToolName);
var cell2 = row.CreateCell(1);
cell2.SetCellValue(model.ToolList[i].ToolType);
var cell3 = row.CreateCell(2);
cell3.SetCellValue(model.ToolList[i].Purpose);
}
}
}
if (model.FaultList != null)
{
if (model.FaultList.Count > 0)
{
for (int i = 0; i < model.FaultList.Count; i++)
{
var row = sheet3.CreateRow(i);//选择第1行
var cell1 = row.CreateCell(0);
cell1.SetCellValue(model.FaultList[i].DeviceType);
var cell2 = row.CreateCell(1);
cell2.SetCellValue(model.FaultList[i].Line);
var cell3 = row.CreateCell(2);
cell3.SetCellValue(model.FaultList[i].Position);
var cell4 = row.CreateCell(3);
cell4.SetCellValue(model.FaultList[i].DefectType);
var cell5 = row.CreateCell(4);
cell5.SetCellValue(model.FaultList[i].Phase);
var cell6 = row.CreateCell(5);
cell6.SetCellValue(model.FaultList[i].DefectCategory);
}
}
}
if (model.ChoiceQuestionList != null)
{
if (model.ChoiceQuestionList.Count > 0)
{
for (int i = 0; i < model.ChoiceQuestionList.Count; i++)
{
var row = sheet4.CreateRow(i);//选择第1行
var cell1 = row.CreateCell(0);
cell1.SetCellValue(model.ChoiceQuestionList[i].Topic);
var cell2 = row.CreateCell(1);
cell2.SetCellValue(model.ChoiceQuestionList[i].OptionA);
var cell3 = row.CreateCell(2);
cell3.SetCellValue(model.ChoiceQuestionList[i].OptionB);
var cell4 = row.CreateCell(3);
cell4.SetCellValue(model.ChoiceQuestionList[i].OptionC);
var cell5 = row.CreateCell(4);
cell5.SetCellValue(model.ChoiceQuestionList[i].OptionD);
var cell6 = row.CreateCell(5);
cell6.SetCellValue(model.ChoiceQuestionList[i].RightKey);
}
}
}
if (model.OperationTicketList != null)
{
if (model.OperationTicketList.Count > 0)
{
for (int i = 0; i < model.OperationTicketList.Count; i++)
{
var row = sheet5.CreateRow(i);//选择第1行
var cell1 = row.CreateCell(0);
cell1.SetCellValue(model.OperationTicketList[i].Type);
var cell2 = row.CreateCell(1);
cell2.SetCellValue(model.OperationTicketList[i].SerialNumber);
var cell3 = row.CreateCell(2);
cell3.SetCellValue(model.OperationTicketList[i].Content);
}
}
}
}
//保存Workbook方式二 保存到内存流中
var stream = new MemoryStream();
workbook.Write(stream);
stream.Flush();
stream.Position = 0;
sheet1 = null;
sheet2 = null;
sheet3 = null;
sheet4 = null;
sheet5 = null;
workbook = null;
//byte[] data;
//try
//{
// // 发起POST请求超时时间15秒返回响应字节数组
// var api_result = get_page_json(url + "/unity/JsonTurnExcel", parameter);
// data = System.Text.Encoding.Default.GetBytes(api_result);
//}
//catch (Exception)
//{
// return null;
//}
return stream.ToArray();
}
/// <summary>
/// Get请求
/// </summary>
/// <param name="post_url">请求地址</param>
/// <returns></returns>
public static string get_page(string post_url, string token)
{
Stream instream = null;
StreamReader sr = null;
HttpWebResponse response = null;
HttpWebRequest request = null;
Encoding encoding = Encoding.UTF8;
// 准备请求...
try
{
// 设置参数
request = WebRequest.Create(post_url) as HttpWebRequest;
CookieContainer cookieContainer = new CookieContainer();
request.CookieContainer = cookieContainer;
request.AllowAutoRedirect = true;
request.Headers.Add("Authorization", "Bearer " + token);
//默认值TimeOut100 秒
//发送请求并获取相应回应数据
response = request.GetResponse() as HttpWebResponse;
//直到request.GetResponse()程序才开始向目标网页发送Post请求
instream = response.GetResponseStream();
sr = new StreamReader(instream, encoding);
//返回结果网页html代码
string content = sr.ReadToEnd();
string err = string.Empty;
return content;
}
catch (Exception ex)
{
return ex.Message;
}
}
/// <summary>
/// form-data post请求请求时带cookie值
/// </summary>
/// <param name="post_url">请求地址</param>
/// <param name="post_data">请求参数</param>
/// <returns></returns>
public static string get_page(string post_url, string post_data, string token)
{
Stream outstream = null;
Stream instream = null;
StreamReader sr = null;
HttpWebResponse response = null;
HttpWebRequest request = null;
Encoding encoding = Encoding.UTF8;
byte[] data = encoding.GetBytes(post_data);
// 准备请求...
try
{
// 设置参数
request = WebRequest.Create(post_url) as HttpWebRequest;
request.AllowAutoRedirect = true;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
request.Headers.Add("Authorization", "Bearer " + token);
outstream = request.GetRequestStream();
outstream.Write(data, 0, data.Length);
outstream.Close();
//发送请求并获取相应回应数据
response = request.GetResponse() as HttpWebResponse;
//直到request.GetResponse()程序才开始向目标网页发送Post请求
instream = response.GetResponseStream();
sr = new StreamReader(instream, encoding);
//返回结果网页html代码
string content = sr.ReadToEnd();
string err = string.Empty;
return content;
}
catch (Exception ex)
{
string err = ex.Message;
return err;
}
}
public static string get_page_json(string post_url, string post_data, string token)
{
Stream outstream = null;
Stream instream = null;
StreamReader sr = null;
HttpWebResponse response = null;
HttpWebRequest request = null;
Encoding encoding = Encoding.UTF8;
byte[] data = encoding.GetBytes(post_data);
// 准备请求...
try
{
// 设置参数
request = WebRequest.Create(post_url) as HttpWebRequest;
CookieContainer cookieContainer = new CookieContainer();
request.CookieContainer = cookieContainer;
request.AllowAutoRedirect = true;
request.Method = "POST";
request.ContentType = "application/json";
request.Headers.Add("Authorization", "Bearer " + token);
request.ContentLength = data.Length;
request.Timeout = 6000;
outstream = request.GetRequestStream();
outstream.Write(data, 0, data.Length);
outstream.Close();
//发送请求并获取相应回应数据
response = request.GetResponse() as HttpWebResponse;
//直到request.GetResponse()程序才开始向目标网页发送Post请求
//instream = response.GetResponseStream();
string message = "";
using (var responseStream = response.GetResponseStream())
using (var mstream = new MemoryStream())
{
responseStream.CopyTo(mstream);
message = Encoding.UTF8.GetString(mstream.ToArray());
}
//sr = new StreamReader(instream, encoding);
//返回结果网页html代码
string content = message;
string err = string.Empty;
return content;
}
catch (Exception ex)
{
string err = ex.Message;
return err;
}
}
}
}