/// <summary> /// 将当前设计方案集合与另一设计方案集合组合成新的设计方案集合,并更新当前设计方案集合 /// </summary> /// <param name="designList">另一个设计方案集合</param> public void Combine(ConverterDesignList designList) { if (head == null) { head = designList.head; size = designList.size; } else { ConverterDesignList newList = new ConverterDesignList(); ConverterDesignData p = head; while (p != null) { ConverterDesignData q = designList.head; while (q != null) { string[] configs = new string[p.Configs.Length + q.Configs.Length]; p.Configs.CopyTo(configs, 0); q.Configs.CopyTo(configs, p.Configs.Length); newList.Add(p.Efficiency + q.Efficiency - 1, p.Volume + q.Volume, p.Cost + q.Cost, configs); q = q.Next; } p = p.Next; } head = newList.head; size = newList.size; } }
/// <summary> /// 合并另一个设计方案集合 /// </summary> /// <param name="designList">另一个设计方案集合</param> public void Merge(ConverterDesignList designList) { ConverterDesignData now = designList.head; while (now != null) { Add(now.Efficiency, now.Volume, now.Cost, now.Configs); now = now.Next; } }
/// <summary> /// 保存设计结果 /// </summary> /// <param name="path">路径</param> /// <param name="name">文件名</param> /// <param name="conditionTitles">设计条件标题</param> /// <param name="conditions">设计条件</param> /// <param name="designList">设计方案</param> public static void Save(string path, string name, string[] conditionTitles, string[] conditions, ConverterDesignList designList) { IWorkbook workbook = new XSSFWorkbook(); //新建Excel //记录设计条件 ISheet sheet = workbook.CreateSheet("Conditions"); //新建一个工作薄 IRow row = sheet.CreateRow(0); //设计条件标题 for (int i = 0; i < conditionTitles.Length; i++) { row.CreateCell(i).SetCellValue(conditionTitles[i]); } row = sheet.CreateRow(1); //设计条件 for (int i = 0; i < conditions.Length; i++) { row.CreateCell(i).SetCellValue(conditions[i]); } //记录设计结果 sheet = workbook.CreateSheet("Results"); //新建一个工作薄 IConverterDesignData[] designs = designList.GetData(); for (int i = 0; i < designs.Length; i++) { row = sheet.CreateRow(i); for (int j = 0; j < designs[i].Configs.Length; j++) { row.CreateCell(j).SetCellValue(designs[i].Configs[j]); } } //检查文件夹是否存在,若不存在则创建 if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } //再次检查,查看文件夹是否创建成功 if (Directory.Exists(path)) { FileStream file = new FileStream(path + name + ".xlsx", FileMode.Create); workbook.Write(file); file.Close(); } //TODO 错误提示 workbook.Close(); }
/// <summary> /// 保存设计结果 /// </summary> /// <param name="name">文件名</param> /// <param name="conditionTitles">设计条件标题</param> /// <param name="conditions">设计条件</param> /// <param name="designList">设计方案</param> public static void Save(string name, string[] conditionTitles, string[] conditions, ConverterDesignList designList) { Save(resultPath, name + "_" + DateTime.Now.ToString("yyyyMMdd_HHmmss_fff"), conditionTitles, conditions, designList); }