ReportsSavingBl.cs 3.89 KB
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<MGoodFlaws> 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();
            }
        }
    }
}