using System; using System.Collections.Generic; using OS.Spin.ViewModle.Flaw; using Microsoft.Office.Interop.Excel; using OS.Spin.Common; namespace OS.Spin.BusinessLayer.SubBusiness { public class ReportsSavingBl { protected Application objExcelApp;//定义Excel Application对象 private Workbooks objExcelWorkBooks;//定义Workbook工作簿集合对象 protected Workbook objExcelWorkbook;//定义Excel workbook工作簿对象 private Worksheet objExcelWorkSheet;//定义Workbook工作表对象 public void SaveReport(List reports) { if (null == reports) { return; } try { var sys = System.IO.Directory.GetCurrentDirectory(); string workTmp = System.IO.Path.Combine(sys, @"Server\Report\Template.xlsx"); string report = System.IO.Path.Combine(sys, "Reports"); if (!System.IO.Directory.Exists(report)) { System.IO.Directory.CreateDirectory(report); } objExcelApp = new ApplicationClass(); objExcelWorkBooks = objExcelApp.Workbooks; objExcelWorkbook = objExcelWorkBooks.Open(workTmp, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); objExcelWorkSheet = (Worksheet)objExcelWorkbook.Worksheets[1]; //strSheetName是指的Exce工作簿的Sheet名,如果没有命名则为"1" //var header = 2; var row = 3; foreach (var good in reports) { objExcelWorkSheet.Cells[row, 1] = good.SnNo; objExcelWorkSheet.Cells[row, 2] = good.Meter; //objExcelWorkSheet.Cells[row, 3] = good.Score; objExcelWorkSheet.Cells[row, 3] = OS.Spin.Running.Cache.GetInstance().ClothWidth + "毫米"; objExcelWorkSheet.Cells[row, 4] = good.FinishedTime.ToLocalTime().ToString(); var i = 0; foreach (var rowFlaws in good.Flaws) { foreach (var flaw in rowFlaws.Flaws) { objExcelWorkSheet.Cells[row, 5] = "瑕疵"; objExcelWorkSheet.Cells[row + 1, 5] = "位置"; //objExcelWorkSheet.Cells[row + 2, 6 + i] = "扣分"; objExcelWorkSheet.Cells[row, 6] = flaw.FlawName; objExcelWorkSheet.Cells[row + 1, 6] = flaw.Meter.ToString("N") + "米"; //objExcelWorkSheet.Cells[row + 2, 7 + i] = flaw.Score; //i++; row += 2; } //row += 3; //i = 0; } //row += 3; } string fileName = System.IO.Path.Combine(report, string.Format("{0}.xlsx", DateTime.Now.ToString("yyyyMMddHHmmss"))); //objExcelWorkbook.SaveAs(string.Format(@"{0}.xlsx", DateTime.Now.ToString("yyyyMMddHHmmssms")), Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); objExcelWorkbook.SaveAs(fileName, Type.Missing, "", "", Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, 1, false, Type.Missing, Type.Missing, Type.Missing); } catch (Exception ex) { LogisTrac.WriteLog(string.Format("SaveReport:{0}", ex.Message)); } finally { objExcelApp.Quit(); } } } }