private void MakeCert(JDJLFM jdjlfm, RawTemplate template, string[] A)
        {
            var baseDirectory = Directory.GetCurrentDirectory();
            var imgQRC        = Path.Combine(baseDirectory, @"wwwroot\Temp\" + jdjlfm.ID + ".png");

            if (!File.Exists(imgQRC))
            {
                System.DrawingCore.Image image = SJCLQRCode.GetQRCode(jdjlfm.ID.ToString(), 2); // ID 二维码
                image.Save(imgQRC);
            }
            Document doc = new Document();

            doc.LoadFromFileInReadMode(Path.Combine(baseDirectory, @"wwwroot\DocTemp\" + template.QJMCBM + ".docx"), Spire.Doc.FileFormat.Docx);
            string Y1 = jdjlfm.JDRQ.Year.ToString();
            string M1 = jdjlfm.JDRQ.Month.ToString().PadLeft(2, '0');
            string D1 = jdjlfm.JDRQ.Day.ToString().PadLeft(2, '0');
            string Y2 = "";
            string M2 = "";
            string D2 = "";

            var tmpFieldNames  = new string[] { "QRC", "ZSBH", "DWMC", "QJMC", "XHGG", "CCBH", "ZZC", "JDRQY", "JDRQM", "JDRQD", "YXQZY", "YXQZM", "YXQZD", "A01", "A02", "A03", "A04", "A05", "A06", "A07", "A08", "A09", "A10" };
            var tmpFieldValues = new string[] { imgQRC, jdjlfm.ZSBH, jdjlfm.DWMC, jdjlfm.QJMC, jdjlfm.XHGG, jdjlfm.CCBH, jdjlfm.ZZC, Y1, M1, D1, Y2, M2, D2, A[0], A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8], A[9] };

            //创建合并图片自定义事件
            doc.MailMerge.MergeImageField += new MergeImageFieldEventHandler(MailMerge_MergeImageField);

            //合并模板
            doc.MailMerge.Execute(tmpFieldNames, tmpFieldValues);
            doc.SaveToFile(Path.Combine(baseDirectory, "wwwroot\\Results\\Doc\\" + DateTime.Now.Year + "\\" + template.QJMCBM + "\\" + jdjlfm.ID + ".docx"), Spire.Doc.FileFormat.Docx);
            try
            {
                File.Delete(imgQRC);
            }
            catch { }
        }
        public string[] MakeXls(JDJLFM jdjlfm, RawTemplate template, int[] Signer)
        {
            Random   rnd      = new Random();
            Workbook tempbook = new Workbook();

            tempbook.Version = ExcelVersion.Version2010;
            var baseDirectory = Directory.GetCurrentDirectory();
            var xlsTempPath   = Path.Combine(baseDirectory, @"wwwroot\Templates\" + template.MBMC + ".xls");                         // 模板
            var xlsPath       = Path.Combine(baseDirectory, "wwwroot\\Results\\Xls\\" + DateTime.Now.Year + "\\" + template.QJMCBM); // 原始记录目录
            var docPath       = Path.Combine(baseDirectory, "wwwroot\\Results\\Doc\\" + DateTime.Now.Year + "\\" + template.QJMCBM); // 检定证书目录

            if (!Directory.Exists(xlsPath))
            {
                Directory.CreateDirectory(xlsPath);
            }

            if (!Directory.Exists(docPath))
            {
                Directory.CreateDirectory(docPath);
            }

            tempbook.LoadFromFile(xlsTempPath);
            Worksheet sheet = tempbook.Worksheets[0];

            sheet.Range["B2"].Text = jdjlfm.DWMC;
            sheet.Range["B4"].Text = jdjlfm.QJMC;
            sheet.Range["I4"].Text = jdjlfm.ZSBH;

            string zzc  = jdjlfm.ZZC.ToString().Trim();
            string xhgg = jdjlfm.XHGG.ToString().Trim();
            string ccbh = jdjlfm.CCBH.ToString().Trim();

            if (ccbh == "")
            {
                ccbh = "/";
            }

            string ccbh1, ccbh2 = "";
            string zzc1, zzc2 = "";
            string xhgg1, xhgg2 = "";

            if (zzc.Length > 9)
            {
                zzc1 = zzc.Substring(0, 9);
                zzc2 = zzc.Substring(9, zzc.Length - 9);
            }
            else
            {
                zzc1 = zzc;
            }

            if (xhgg.Length > 12)
            {
                xhgg1 = xhgg.Substring(0, 12);
                xhgg2 = xhgg.Substring(12, xhgg.Length - 12);
            }
            else
            {
                xhgg1 = xhgg;
            }

            if (ccbh.Length > 15)
            {
                ccbh1 = ccbh.Substring(0, 15);
                ccbh2 = ccbh.Substring(15, ccbh.Length - 15);
            }
            else
            {
                ccbh1 = ccbh;
            }

            sheet.Range["B5"].Text = zzc1;
            sheet.Range["F5"].Text = xhgg1;
            sheet.Range["I5"].Text = ccbh1;
            sheet.Range["B6"].Text = zzc2;
            sheet.Range["F6"].Text = xhgg2;
            sheet.Range["I6"].Text = ccbh2;

            //sheet.Range["B14"].DateTimeValue = jdjlfm.JDRQ;
            sheet.Range["B14"].Text = string.Format("{0:D}", Convert.ToDateTime(jdjlfm.JDRQ));
            sheet.Range["G14"].Text = string.Format("{0:D}", Convert.ToDateTime(jdjlfm.JDRQ).AddYears(1).AddDays(-1)); //Convert.ToDateTime(jdjlfm.JDRQ).AddYears(1).AddDays(-1).ToString("D");

            sheet.Range["C13"].Text = jdjlfm.JJWD;

            //原始记录验证码
            sheet.Range["FF1"].Style.Font.Color = Color.White;
            sheet.Range["FF1"].Text             = jdjlfm.ID.ToString();

            // ToDo 数据处理
            sheet = tempbook.Worksheets[1]; // 一
                                            // 数据 - 视准轴竖轴垂直度
            double res = 0.0;

            if (jdjlfm.CJJD == "DS05" || jdjlfm.CJJD == "DS1" || jdjlfm.CJJD == "DS3")
            {
                if (jdjlfm.CJJD == "DS3")
                {
                    res = 2 + Math.Round(rnd.NextDouble() * 3, 0);
                }
                else
                {
                    res = 1 + Math.Round(rnd.NextDouble() * 2, 0);
                }
                sheet.Range["D12"].NumberValue = res; // 交叉误差 3 3 5

                res = 7 + Math.Round(rnd.NextDouble() * 3, 0);
                sheet.Range["D13"].NumberValue = res; // i角误差

                sheet.Range["D15"].Text = "/";        // 自安平的指标
                sheet.Range["D16"].Text = "/";
            }
            else // 自安平
            {
                sheet.Range["D12"].Text = "/"; // 自安平无交叉误差
                res = 7 + Math.Round(rnd.NextDouble() * 3, 0);
                sheet.Range["D13"].NumberValue = res; // i角误差
                                                      // D14,15 从后面读取
                res = 8 + Math.Round(rnd.NextDouble() * 3, 0);
                sheet.Range["D16"].NumberValue = res; // 补偿范围
            }

            sheet = tempbook.Worksheets[2]; // 二

            double apjd = 0;

            double[] APJD = { 0.4, 0.3, 0.45, 0.35, 1, 0.8 };
            switch (jdjlfm.CJJD)
            {
            case "DS05":
                apjd = APJD[0];
                break;

            case "DSZ05":
                apjd = APJD[1];
                break;

            case "DS1":
                apjd = APJD[2];
                break;

            case "DSZ1":
                apjd = APJD[3];
                break;

            case "DS3":
                apjd = APJD[4];
                break;

            case "DSZ3":
                apjd = APJD[5];
                break;
            }
            for (int i = 9; i <= 27; i = i + 2)
            {
                res = 2 + Math.Round(1 - rnd.NextDouble() * 1, 1) * apjd;
                sheet.Range["B" + i].NumberValue = res;
            }
            var ret3 = sheet.Range["I32"].NumberText;

            sheet = tempbook.Worksheets[3]; // 三
            double seed = 10;

            if (jdjlfm.CJJD == "DS3" || jdjlfm.CJJD == "DSZ3")
            {
                seed = 15;
            }
            for (int i = 3; i <= 7; i++)  // 数据 D3 - H6
            {
                for (int j = 2; j < 6; j++)
                {
                    res = 100 + Math.Round(15 - rnd.NextDouble() * 15 * 2, 0);
                    sheet.Range[j, i].NumberValue = res;
                }
            }
            var ret2 = sheet.Range["E17"].NumberText;

            // 测微器行差、回程差 没处理
            sheet = tempbook.Worksheets[4]; // 四
            if (jdjlfm.CJJD == "DS05" || jdjlfm.CJJD == "DS1" || jdjlfm.CJJD == "DS3")
            {
                sheet.Range["D27"].Text    = "/";
                sheet.Range["I27"].Text    = "/";
                sheet.Range["D29"].Text    = "/";
                sheet.Range["I29"].Text    = "/";
                sheet.Range["I31"].Text    = "/";
                sheet.Range["C8:K24"].Text = "/";
            }
            else
            { // 自安平
                for (int i = 8; i < 26; i++)
                {
                    res = 4 + Math.Round(1 - rnd.NextDouble() * 2, 1);
                    sheet.Range["C" + i].NumberValue = res;
                    res = 3 + Math.Round(1 - rnd.NextDouble() * 2, 1);
                    sheet.Range["F" + i].NumberValue = res;
                }
            }
            var ret1 = sheet.Range["I31"].NumberText;

            // 望远镜调焦运行误差,测微器,自安平补偿误差写回P2
            sheet = tempbook.Worksheets[1]; // P2
            if (jdjlfm.CJJD == "DSZ05" || jdjlfm.CJJD == "DSZ1" || jdjlfm.CJJD == "DSZ3")
            {
                //ret1 = x.GetValue(4, "I", 31, 2);
                sheet.Range["D15"].Text = ret1;// .Formula = "=水准仪记录5!I31"; // 来自于 P5         /     ″
            }
            //ret2 = x.GetValue(3, "E", 17, 1);
            sheet.Range["D14"].Text = ret2;//  .Formula = "=水准仪记录4!E17"; // 来自于 P4         mm

            //ret3 = x.GetValue(2, "I", 32, 1);
            sheet.Range["D11"].Text = ret3;// .Formula = "=水准仪记录3!I32"; // 来自于 P3         ″

            //sheet = tempbook.Worksheets[2]; // P3
            //sheet.Range["I32"].NumberValue = ret3;
            //sheet = tempbook.Worksheets[3]; // P4
            //sheet.Range["E17"].NumberValue = ret2;
            //sheet = tempbook.Worksheets[4]; // P5
            //sheet.Range["I31"].NumberValue = ret1;

            /*
             *  // tempbook.PrintDocument.Print();// 免费版只能打印3页
             *  Stream stream = new MemoryStream();
             *  tempbook.SaveToStream(stream);
             *  XlsPrinter.Print(stream);
             */

            tempbook.SaveToFile(Path.Combine(xlsPath, jdjlfm.ID.ToString() + ".xls"));

            string[] RES = new string[10];
            tempbook.CalculateAllValue();

            RES[0] = jdjlfm.JJWD; // A01 温度
            RES[1] = "";          // A02 未用

            sheet  = tempbook.Worksheets[1];
            RES[2] = sheet.Range["D11"].NumberText.ToString(); // A03 视准线的安平误差
            RES[3] = sheet.Range["D12"].NumberText.ToString(); // A04 交叉误差
            RES[4] = sheet.Range["D13"].NumberText.ToString(); // A05 视准线误差(i角误差)
            RES[5] = sheet.Range["D14"].NumberText.ToString(); // A06 望远镜调焦运行误差
            RES[6] = sheet.Range["D9"].NumberText.ToString();  // A07 测微器行差
            RES[7] = sheet.Range["E9"].NumberText.ToString();  // A08 测微器回程差
            RES[8] = sheet.Range["D15"].NumberText.ToString(); // A09 自动安平水准仪补偿误差
            RES[9] = sheet.Range["D16"].NumberText.ToString(); // A10 自动安平水准仪补偿工作范围

            MakeCert(jdjlfm, template, Signer, RES);

            string[] resA17 = new string[RES.Length + 3];
            resA17[0] = jdjlfm.ID.ToString();
            resA17[1] = jdjlfm.ZSBH;
            for (int i = 2; i < resA17.Length - 1; i++)
            {
                resA17[i] = RES[i - 2];
            }
            resA17[resA17.Length - 1] = jdjlfm.CJJD;//精度指标
            return(resA17);
        }
 public override string[] Handle(RawTemplate template, JDJLFM jdjlfm)
 {
     return(MakeXls(jdjlfm, template));
 }
 public abstract string[] Handle(RawTemplate template, JDJLFM jdjlfm);
 public override string[] Handle(RawTemplate template, JDJLFM jdjlfm, int[] Signer)
 {
     return(MakeXls(jdjlfm, template, Signer));
 }
 //public interface IDisposable { };
 //public abstract string Handle(RawTemplate template, JDJLFM jdjlfm, int[] Signer);
 public abstract string[] Handle(RawTemplate template, JDJLFM jdjlfm, int[] Signer);
Exemple #7
0
        public string[] MakeXls(JDJLFM jdjlfm, RawTemplate template)
        {
            Random   rnd      = new Random();
            Workbook tempbook = new Workbook();

            tempbook.Version = ExcelVersion.Version2010;
            var baseDirectory = Directory.GetCurrentDirectory();
            var xlsTempPath   = Path.Combine(baseDirectory, @"wwwroot\Templates\" + template.MBMC + ".xls");                         // 模板
            var xlsPath       = Path.Combine(baseDirectory, "wwwroot\\Results\\Xls\\" + DateTime.Now.Year + "\\" + template.QJMCBM); // 原始记录目录
            var docPath       = Path.Combine(baseDirectory, "wwwroot\\Results\\Doc\\" + DateTime.Now.Year + "\\" + template.QJMCBM); // 检定证书目录

            if (!Directory.Exists(xlsPath))
            {
                Directory.CreateDirectory(xlsPath);
            }

            if (!Directory.Exists(docPath))
            {
                Directory.CreateDirectory(docPath);
            }

            tempbook.LoadFromFile(xlsTempPath);
            Worksheet sheet = tempbook.Worksheets[0];

            sheet.Range["B2"].Text = jdjlfm.DWMC;
            sheet.Range["B4"].Text = jdjlfm.QJMC;
            sheet.Range["I4"].Text = jdjlfm.ZSBH;

            string zzc  = jdjlfm.ZZC.ToString().Trim();
            string xhgg = jdjlfm.XHGG.ToString().Trim();
            string ccbh = jdjlfm.CCBH.ToString().Trim();

            if (ccbh == "")
            {
                ccbh = "/";
            }

            string ccbh1, ccbh2 = "";
            string zzc1, zzc2 = "";
            string xhgg1, xhgg2 = "";

            if (zzc.Length > 9)
            {
                zzc1 = zzc.Substring(0, 9);
                zzc2 = zzc.Substring(9, zzc.Length - 9);
            }
            else
            {
                zzc1 = zzc;
            }

            if (xhgg.Length > 12)
            {
                xhgg1 = xhgg.Substring(0, 12);
                xhgg2 = xhgg.Substring(12, xhgg.Length - 12);
            }
            else
            {
                xhgg1 = xhgg;
            }

            if (ccbh.Length > 15)
            {
                ccbh1 = ccbh.Substring(0, 15);
                ccbh2 = ccbh.Substring(15, ccbh.Length - 15);
            }
            else
            {
                ccbh1 = ccbh;
            }

            sheet.Range["B5"].Text = zzc1;
            sheet.Range["F5"].Text = xhgg1;
            sheet.Range["I5"].Text = ccbh1;
            sheet.Range["B6"].Text = zzc2;
            sheet.Range["F6"].Text = xhgg2;
            sheet.Range["I6"].Text = ccbh2;

            //sheet.Range["B14"].DateTimeValue = jdjlfm.JDRQ;
            sheet.Range["B14"].Text = string.Format("{0:D}", Convert.ToDateTime(jdjlfm.JDRQ));
            sheet.Range["G14"].Text = string.Format("{0:D}", Convert.ToDateTime(jdjlfm.JDRQ).AddYears(1).AddDays(-1)); //Convert.ToDateTime(jdjlfm.JDRQ).AddYears(1).AddDays(-1).ToString("D");
                                                                                                                       // sheet.Range["G14"].DateTimeValue // 无法设置格式?

            sheet.Range["C13"].Text = jdjlfm.JJWD;

            //原始记录验证码
            sheet.Range["FF1"].Style.Font.Color = Color.White;
            sheet.Range["FF1"].Text             = jdjlfm.ID.ToString();

            // ToDo 数据处理
            sheet = tempbook.Worksheets[1];
            double res = 0;

            for (int i = 1; i <= 10; i++)
            {
                res = 11 + Math.Round(rnd.NextDouble() * 3 / 1000, 3);
                sheet.Range[8, i + 1].NumberValue = res;
            }

            int FH = 0;

            for (int j = 14; j <= 28; j++)
            {
                if (Math.Round(rnd.NextDouble() * 10) > 5)
                {
                    FH = 1;
                }
                else
                {
                    FH = -1;
                }
                for (int i = 1; i <= 5; i++)
                {
                    res = j - 8 + FH * Math.Round(rnd.NextDouble() * 2 / 1000, 3);
                    sheet.Range[j + 1, i + 1].NumberValue = res;
                }
            }

            /*
             *  // tempbook.PrintDocument.Print();// 免费版只能打印3页
             *  Stream stream = new MemoryStream();
             *  tempbook.SaveToStream(stream);
             *  XlsPrinter.Print(stream);
             */

            tempbook.SaveToFile(Path.Combine(xlsPath, jdjlfm.ID.ToString() + ".xls"));

            string[] RES = new string[10];
            tempbook.CalculateAllValue();

            RES[0] = jdjlfm.JJWD; // A01 温度
            RES[1] = "";          // A02 未用

            sheet  = tempbook.Worksheets[1];
            RES[2] = sheet.Range["E10"].NumberText.ToString(); // A03 测量重复性
            RES[3] = sheet.Range["C30"].NumberText.ToString(); // A04 示值误差

            MakeCert(jdjlfm, template, RES);

            string[] resA17 = new string[RES.Length + 2];
            resA17[0] = jdjlfm.ID.ToString();
            resA17[1] = jdjlfm.ZSBH;
            for (int i = 2; i < resA17.Length; i++)
            {
                resA17[i] = RES[i - 2];
            }
            return(resA17);
        }
Exemple #8
0
        public string MakeXls(RawTemplate template, JDJLFM jdjlfm, int[] Signer)
        {
            Random   rnd      = new Random();
            Workbook tempbook = new Workbook();

            tempbook.Version = ExcelVersion.Version2010;
            var baseDirectory = Directory.GetCurrentDirectory();
            var xlsTempPath   = Path.Combine(baseDirectory, @"wwwroot\Templates\" + template.MBMC + ".xls");                         // 模板
            var xlsPath       = Path.Combine(baseDirectory, "wwwroot\\Results\\Xls\\" + DateTime.Now.Year + "\\" + template.QJMCBM); // 原始记录目录
            var docPath       = Path.Combine(baseDirectory, "wwwroot\\Results\\Doc\\" + DateTime.Now.Year + "\\" + template.QJMCBM); // 检定证书目录

            if (!Directory.Exists(xlsPath))
            {
                Directory.CreateDirectory(xlsPath);
            }

            if (!Directory.Exists(docPath))
            {
                Directory.CreateDirectory(docPath);
            }

            tempbook.LoadFromFile(xlsTempPath);
            Worksheet sheet = tempbook.Worksheets[0];

            sheet.Range["B2"].Text = jdjlfm.DWMC;
            sheet.Range["B4"].Text = jdjlfm.QJMC;
            sheet.Range["I4"].Text = jdjlfm.ZSBH;

            string zzc  = jdjlfm.ZZC.ToString().Trim();
            string xhgg = jdjlfm.XHGG.ToString().Trim();
            string ccbh = jdjlfm.CCBH.ToString().Trim();

            if (ccbh == "")
            {
                ccbh = "/";
            }

            string ccbh1, ccbh2 = "";
            string zzc1, zzc2 = "";
            string xhgg1, xhgg2 = "";

            if (zzc.Length > 9)
            {
                zzc1 = zzc.Substring(0, 9);
                zzc2 = zzc.Substring(9, zzc.Length - 9);
            }
            else
            {
                zzc1 = zzc;
            }

            if (xhgg.Length > 12)
            {
                xhgg1 = xhgg.Substring(0, 12);
                xhgg2 = xhgg.Substring(12, xhgg.Length - 12);
            }
            else
            {
                xhgg1 = xhgg;
            }

            if (ccbh.Length > 15)
            {
                ccbh1 = ccbh.Substring(0, 15);
                ccbh2 = ccbh.Substring(15, ccbh.Length - 15);
            }
            else
            {
                ccbh1 = ccbh;
            }

            sheet.Range["B5"].Text = zzc1;
            sheet.Range["F5"].Text = xhgg1;
            sheet.Range["I5"].Text = ccbh1;
            sheet.Range["B6"].Text = zzc2;
            sheet.Range["F6"].Text = xhgg2;
            sheet.Range["I6"].Text = ccbh2;

            //sheet.Range["B14"].DateTimeValue = jdjlfm.JDRQ;
            sheet.Range["B14"].Text = string.Format("{0:D}", Convert.ToDateTime(jdjlfm.JDRQ));
            sheet.Range["G14"].Text = string.Format("{0:D}", Convert.ToDateTime(jdjlfm.JDRQ).AddYears(1).AddDays(-1)); //Convert.ToDateTime(jdjlfm.JDRQ).AddYears(1).AddDays(-1).ToString("D");
                                                                                                                       // sheet.Range["G14"].DateTimeValue // 无法设置格式?

            sheet.Range["C13"].Text = jdjlfm.JJWD;

            //原始记录验证码
            sheet.Range["FF1"].Style.Font.Color = Color.White;
            sheet.Range["FF1"].Text             = jdjlfm.ID.ToString();

            // ToDo 数据处理
            sheet = tempbook.Worksheets[1];
            double baseline_value = sheet.Range["C10"].NumberValue;

            //double res1 = Math.Round(1 + rnd.NextDouble(), 1);
            //double res2 = Math.Round((1 - rnd.NextDouble() * 2) / 10, 1);
            double res   = 0;
            var    cells = sheet.Range["D10:G10"].CellList;

            foreach (CellRange cell in cells)
            {
                res = Math.Round((baseline_value * 10000 + rnd.Next(-30, 30)) / 10000, 4);
                cell.NumberValue = res;
            }
            baseline_value = sheet.Range["D17"].NumberValue;
            res            = Math.Round((baseline_value * 10000 + rnd.Next(-30, 30) * 10) / 10000, 4);
            sheet.Range["F17"].NumberValue = res;

            /*
             *  // tempbook.PrintDocument.Print();// 免费版只能打印3页
             *  Stream stream = new MemoryStream();
             *  tempbook.SaveToStream(stream);
             *  XlsPrinter.Print(stream);
             */

            tempbook.SaveToFile(Path.Combine(xlsPath, jdjlfm.ID.ToString() + ".xls"));

            string[] RES = new string[5];
            tempbook.CalculateAllValue();
            RES[0] = jdjlfm.JJWD;                              // A01 温度
            RES[2] = sheet.Range["C12"].NumberText.ToString(); // A03 相位误差
            RES[3] = sheet.Range["D17"].NumberText.ToString(); // A04 基线
            RES[4] = sheet.Range["C19"].NumberText.ToString(); // A05 测量误差
            MakeCert(jdjlfm, template, Signer, RES);

            RESA17 resA17 = new RESA17();

            resA17.A01 = RES[0];
            resA17.A03 = RES[2];
            resA17.A04 = RES[3];
            resA17.A05 = RES[4];

            //return resA17;
            return(JsonConvert.SerializeObject(resA17));
        }
        public string[] MakeXls(JDJLFM jdjlfm, RawTemplate template, int[] Signer)
        {
            Workbook tempbook = new Workbook();

            tempbook.Version = ExcelVersion.Version2010;
            var baseDirectory = Directory.GetCurrentDirectory();

            var MBJD = "2";

            // jdjlfm.CJJD 2 5
            if (int.Parse(jdjlfm.CJJD) > 2)
            {
                MBJD = "5";
            }

            var xlsTempPath = Path.Combine(baseDirectory, @"wwwroot\Templates\" + template.MBMC + "-" + MBJD + ".xls");            // 模板
            var xlsPath     = Path.Combine(baseDirectory, "wwwroot\\Results\\Xls\\" + DateTime.Now.Year + "\\" + template.QJMCBM); // 原始记录目录
            var docPath     = Path.Combine(baseDirectory, "wwwroot\\Results\\Doc\\" + DateTime.Now.Year + "\\" + template.QJMCBM); // 检定证书目录

            if (!Directory.Exists(xlsPath))
            {
                Directory.CreateDirectory(xlsPath);
            }

            if (!Directory.Exists(docPath))
            {
                Directory.CreateDirectory(docPath);
            }

            tempbook.LoadFromFile(xlsTempPath);
            sheet = tempbook.Worksheets[0];
            sheet.Range["B2"].Text = jdjlfm.DWMC;
            sheet.Range["B4"].Text = jdjlfm.QJMC;
            sheet.Range["I4"].Text = jdjlfm.ZSBH;

            string zzc  = jdjlfm.ZZC.ToString().Trim();
            string xhgg = jdjlfm.XHGG.ToString().Trim();
            string ccbh = jdjlfm.CCBH.ToString().Trim();

            if (ccbh == "")
            {
                ccbh = "/";
            }

            string ccbh1, ccbh2 = "";
            string zzc1, zzc2 = "";
            string xhgg1, xhgg2 = "";

            if (zzc.Length > 9)
            {
                zzc1 = zzc.Substring(0, 9);
                zzc2 = zzc.Substring(9, zzc.Length - 9);
            }
            else
            {
                zzc1 = zzc;
            }

            if (xhgg.Length > 12)
            {
                xhgg1 = xhgg.Substring(0, 12);
                xhgg2 = xhgg.Substring(12, xhgg.Length - 12);
            }
            else
            {
                xhgg1 = xhgg;
            }

            if (ccbh.Length > 15)
            {
                ccbh1 = ccbh.Substring(0, 15);
                ccbh2 = ccbh.Substring(15, ccbh.Length - 15);
            }
            else
            {
                ccbh1 = ccbh;
            }

            sheet.Range["B5"].Text = zzc1;
            sheet.Range["F5"].Text = xhgg1;
            sheet.Range["I5"].Text = ccbh1;
            sheet.Range["B6"].Text = zzc2;
            sheet.Range["F6"].Text = xhgg2;
            sheet.Range["I6"].Text = ccbh2;


            //sheet.Range["B14"].DateTimeValue = jdjlfm.JDRQ;
            sheet.Range["B14"].Text = string.Format("{0:D}", Convert.ToDateTime(jdjlfm.JDRQ));
            sheet.Range["G14"].Text = string.Format("{0:D}", Convert.ToDateTime(jdjlfm.JDRQ).AddYears(1).AddDays(-1)); //Convert.ToDateTime(jdjlfm.JDRQ).AddYears(1).AddDays(-1).ToString("D");
                                                                                                                       // sheet.Range["G14"].DateTimeValue // 无法设置格式?

            // 日期 -> String
            //XlsWorksheet.TRangeValueType cellType = sheet.GetCellType(14, 2, false); // B14
            //var test = sheet.GetText(14, 2);


            sheet.Range["C13"].Text = jdjlfm.JJWD;
            sheet.Range["G13"].Text = jdjlfm.QT05 + "hPa";

            //原始记录验证码
            sheet.Range["FF1"].Style.Font.Color = Color.White;
            sheet.Range["FF1"].Text             = jdjlfm.ID.ToString();

            // ToDo 数据处理
            Random rnd      = new Random();
            var    cellName = "";

            sheet = tempbook.Worksheets[1];                          // 测角一
            // 数据 - 横轴竖轴垂直度
            double res  = Math.Round(1 + 0.5 - rnd.NextDouble(), 1); // 1±.5
            double res1 = 0;

            cellName = "J10";
            sheet.Range[cellName].NumberValue = res;
            if (double.Parse(jdjlfm.CJJD) < 2)
            {
                res1 = Math.Round((1 - rnd.NextDouble() * 2) / 10, 1);
            }
            else if (double.Parse(jdjlfm.CJJD) == 2)
            {
                res1 = Math.Round((2 - rnd.NextDouble() * 4) / 10, 1);
            }
            else
            {
                res1 = Math.Round((3 - rnd.NextDouble() * 6) / 10, 1);
            }

            if (res1 == 0)
            {
                res1 = 0.1;
            }
            res      = res + res1;
            cellName = "J11";
            sheet.Range[cellName].NumberValue = res;

            // 数据 - 指标差
            cellName = "E13";
            res      = 89;
            sheet.Range[cellName].NumberValue = res;
            cellName = "G13";
            res      = 59;
            sheet.Range[cellName].NumberValue = res;
            cellName = "E14";
            res      = 269;
            sheet.Range[cellName].NumberValue = res;
            cellName = "G14";
            res      = 59;
            sheet.Range[cellName].NumberValue = res;


            res      = Math.Round(58 + 1 - rnd.NextDouble() * 2, 0);
            cellName = "I13";
            sheet.Range[cellName].NumberValue = res;

            res      = Math.Round(57 + 1 - rnd.NextDouble() * 2, 0);
            cellName = "I14";
            sheet.Range[cellName].NumberValue = res;

            cellName = "E15";
            res      = 113;
            sheet.Range[cellName].NumberValue = res;
            cellName = "E16";
            res      = 246;
            sheet.Range[cellName].NumberValue = res;

            res      = Math.Round(5 + 1 - rnd.NextDouble() * 2, 0);
            cellName = "G15";
            sheet.Range[cellName].NumberValue = res;

            res      = 59 - res;
            cellName = "G16";
            sheet.Range[cellName].NumberValue = res;

            res      = Math.Round(45 + 2 - rnd.NextDouble() * 4, 0);
            cellName = "I15";
            sheet.Range[cellName].NumberValue = res;


            res      = 59 - res + Math.Round(1 - rnd.NextDouble() * 2, 0);
            cellName = "I16";
            sheet.Range[cellName].NumberValue = res;

            // 数据 - 照准误差
            sheet.Range["L13"].NumberValue = 0;
            sheet.Range["L14"].NumberValue = 180;
            sheet.Range["L15"].NumberValue = 179;
            sheet.Range["L16"].NumberValue = 0;
            sheet.Range["N13"].NumberValue = 0;
            sheet.Range["N14"].NumberValue = 0;
            sheet.Range["N15"].NumberValue = 59;
            sheet.Range["N16"].NumberValue = 0;

            res = 4 + Math.Round(2 - rnd.NextDouble() * 4, 0);
            sheet.Range["P13"].NumberValue = res;
            res = 4 + Math.Round(2 - rnd.NextDouble() * 4, 0);
            sheet.Range["P14"].NumberValue = res;
            res = 55 + Math.Round(2 - rnd.NextDouble() * 4, 0);
            sheet.Range["P15"].NumberValue = res;
            sheet.Range["P16"].NumberValue = 0;

            // 数据 - 横轴误差
            res = 1 + Math.Round(rnd.NextDouble() * .4, 0);
            sheet.Range["J19"].NumberValue = res;
            res1 = Math.Round((3 - rnd.NextDouble() * 6) / 10, 1);
            if (res1 == 0)
            {
                res1 = 0.1;
            }
            res = res + res1;
            sheet.Range["J20"].NumberValue = res;

            // 数据 - 补偿范围
            sheet.Range["I22"].Text = jdjlfm.QT01;  // 补偿范围来自数据库

            // 数据 - 补偿精度
            sheet.Range["L23"].NumberValue = 89;
            sheet.Range["L24"].NumberValue = 89;
            sheet.Range["N23"].NumberValue = 59;
            sheet.Range["N24"].NumberValue = 59;

            res = 55 + Math.Round(rnd.NextDouble() * 4, 0);
            sheet.Range["P23"].NumberValue = res;
            res = 55 + Math.Round(rnd.NextDouble() * 4, 0);
            sheet.Range["P24"].NumberValue = res;

            if (jdjlfm.QT04 == "2")
            {
                sheet.Range["L25"].NumberValue = 0;
                sheet.Range["L26"].NumberValue = 0;
                sheet.Range["N25"].NumberValue = 0;
                sheet.Range["N26"].NumberValue = 0;
                res = Math.Round(rnd.NextDouble() * 3, 0);
                sheet.Range["P25"].NumberValue = res;
                res = Math.Round(rnd.NextDouble() * 3, 0);
                sheet.Range["P26"].NumberValue = res;
            }
            else
            {
                sheet.Range["L25"].Text = @"\";
                sheet.Range["L26"].Text = @"\";
                sheet.Range["N25"].Text = @"\";
                sheet.Range["N26"].Text = @"\";
                sheet.Range["P25"].Text = @"\";
                sheet.Range["P26"].Text = @"\";
                sheet.Range["L28"].Text = @"\";
            }

            // 数据 - 零位误差
            res = Math.Round(rnd.NextDouble() * 3, 0);
            sheet.Range["H29"].NumberValue = res;
            if (res != 0)
            {
                res++;
            }
            sheet.Range["H30"].NumberValue = res;

            res = Math.Round(rnd.NextDouble() * 3, 0);
            sheet.Range["L29"].NumberValue = res;
            if (res != 0)
            {
                res++;
            }
            sheet.Range["L30"].NumberValue = res;

            sheet = tempbook.Worksheets[2]; // 二
            if (jdjlfm.CJJD == "2")
            {
                sheet.Range["C6"].NumberValue = 0;
                sheet.Range["D6"].NumberValue = 0;

                //多齿分度台标准角值
                double[] J2BZJZ = new double[22];
                int      j      = 0;
                J2BZJZ[j] = 7.8; j++;
                J2BZJZ[j] = 15.7; j++;
                J2BZJZ[j] = 23.5; j++;
                J2BZJZ[j] = 31.3; j++;
                J2BZJZ[j] = 39.1; j++;
                J2BZJZ[j] = 47; j++;
                J2BZJZ[j] = 54.8; j++;
                J2BZJZ[j] = 2.6; j++;
                J2BZJZ[j] = 10.4; j++;
                J2BZJZ[j] = 18.2; j++;
                J2BZJZ[j] = 26; j++;
                J2BZJZ[j] = 33.9; j++;
                J2BZJZ[j] = 41.7; j++;
                J2BZJZ[j] = 49.5; j++;
                J2BZJZ[j] = 57.3; j++;
                J2BZJZ[j] = 05.2; j++;
                J2BZJZ[j] = 13; j++;
                J2BZJZ[j] = 20.8; j++;
                J2BZJZ[j] = 28.6; j++;
                J2BZJZ[j] = 36.5; j++;
                J2BZJZ[j] = 44.3; j++;
                J2BZJZ[j] = 52.2;
                double seed = 2;
                int    zfh  = 1;
                if (double.Parse(jdjlfm.CJJD) <= 1)
                {
                    seed = 0.5;
                }
                for (int i = 7; i <= 28; i++)
                {
                    res = Math.Round(J2BZJZ[i - 7], 0) + Math.Round(seed / 2 - rnd.NextDouble() * seed, 0);
                    sheet.Range["C" + i].NumberValue = res;
                    res1 = Math.Round(seed / 2 - rnd.NextDouble() * seed, 0);
                    if (rnd.NextDouble() > 0.5)
                    {
                        zfh = -1;
                    }
                    else
                    {
                        zfh = 1;
                    }
                    if (res1 == 0)
                    {
                        res1 = 0.1 * zfh;
                    }
                    res = res + res1;
                    sheet.Range["D" + i].NumberValue = res;
                }
            }
            else if (jdjlfm.CJJD == "5")
            {
                for (int i = 6; i <= 17; i++)
                {
                    res = 1 + Math.Round(rnd.NextDouble() * 10, 0);
                    sheet.Range["C" + i].NumberValue = res;
                    res1 = Math.Round(2 - rnd.NextDouble() * 4, 0);
                    if (res1 == 0)
                    {
                        res1 = 0.5;
                    }
                    res = res + res1;
                    sheet.Range["D" + i].NumberValue = res;
                }
            }

            sheet = tempbook.Worksheets[3];             // 三 内符精度
            Calcu_NFJD(jdjlfm.QT02);                    // BCJDA

            sheet = tempbook.Worksheets[4];             // 四 加成常数
            Cal(jdjlfm.JJWD, jdjlfm.QT02, jdjlfm.QT05); // 温度 气压

            /*
             * // tempbook.PrintDocument.Print();// 免费版只能打印3页
             * Stream stream = new MemoryStream();
             * tempbook.SaveToStream(stream);
             * XlsPrinter.Print(stream);
             */

            tempbook.SaveToFile(Path.Combine(xlsPath, jdjlfm.ID.ToString() + ".xls"));

            //System.Diagnostics.Process.Start(Path.Combine(xlsPath, jdjlfm.ID.ToString() + ".xls")); // .net core 不支持

            /*
             * sheet.Range["A2"].Text = "我是A2单元格";
             * sheet.Range["A3"].NumberValue = 100.23;
             * sheet.Range["A4"].DateTimeValue = DateTime.Now;
             * sheet.Range["A5"].BooleanValue = true;
             *
             * Console.WriteLine(sheet.Range["A1"].Value2.ToString());
             * Console.WriteLine(sheet.Range["A1"].Value);
             * Console.WriteLine(sheet.Range["B1"].Text);
             *
             * //对一定范围内的单元格进行字体控制
             * sheet.Range["A1:B10"].Style.Font.FontName = "微软雅黑";
             * sheet.Range["A1:B10"].Style.Font.Size = 20;
             * sheet.Range["A1:B10"].Style.Font.Underline = FontUnderlineType.DoubleAccounting;
             *
             * var columes = sheet.Range["C5:E6"].Columns ;
             * foreach (var column in columes)
             * { }
             */

            string[] RES = new string[17];
            tempbook.CalculateAllValue();
            RES[0] = jdjlfm.JJWD;                              // A01 温度
            RES[1] = jdjlfm.QT05;                              // A02 气压
            sheet  = tempbook.Worksheets[1];
            RES[2] = sheet.Range["H21"].NumberText.ToString(); // A03 横轴误差
            RES[3] = sheet.Range["G12"].NumberText.ToString(); // A04 望远镜视轴对横轴的垂直度
            RES[4] = sheet.Range["E17"].NumberText.ToString(); // A05 指 标 差

            sheet  = tempbook.Worksheets[2];
            RES[5] = sheet.Range["E32"].NumberText.ToString(); // A06 一测回水平方向标准偏差

            sheet   = tempbook.Worksheets[1];
            RES[6]  = sheet.Range["I22"].NumberText.ToString(); // A07 补偿范围
            RES[7]  = sheet.Range["L27"].NumberText.ToString(); // A08 垂直角补偿精度
            RES[8]  = sheet.Range["L28"].NumberText.ToString(); // A09 水平角补偿精度
            RES[9]  = sheet.Range["H29"].NumberText.ToString(); // A10 零位误差X
            RES[10] = sheet.Range["L29"].NumberText.ToString(); // A11 零位误差Y
            RES[11] = sheet.Range["M17"].NumberText.ToString(); // A12 照准误差

            sheet   = tempbook.Worksheets[3];
            RES[12] = sheet.Range["J21"].NumberText.ToString(); // A13 测量重复性

            sheet   = tempbook.Worksheets[4];
            RES[13] = sheet.Range["F52"].NumberText.ToString(); // A14 K
            RES[14] = sheet.Range["F53"].NumberText.ToString(); // A15 R
            RES[15] = sheet.Range["F54"].NumberText.ToString(); // A16 A
            RES[16] = sheet.Range["F55"].NumberText.ToString(); // A17 B

            MakeCert(jdjlfm, template, Signer, RES);

            string[] resA17 = new string[RES.Length + 2];
            resA17[0] = jdjlfm.ID.ToString();
            resA17[1] = jdjlfm.ZSBH;
            for (int i = 2; i < resA17.Length; i++)
            {
                resA17[i] = RES[i - 2];
            }
            return(resA17);
        }
        public string[] MakeXls(JDJLFM jdjlfm, RawTemplate template, int[] Signer)
        {
            Random   rnd      = new Random();
            Workbook tempbook = new Workbook();

            tempbook.Version = ExcelVersion.Version2010;
            var baseDirectory = Directory.GetCurrentDirectory();
            var MBJD          = jdjlfm.CJJD;                                                                            // 2 6

            var xlsTempPath = Path.Combine(baseDirectory, @"wwwroot\Templates\" + template.MBMC + "-" + MBJD + ".xls"); // 模板

            //var xlsTempPath = Path.Combine(baseDirectory, @"wwwroot\Templates\" + template.MBMC + "-" + jdjlfm.CJJD + ".xls"); // 模板

            var xlsPath = Path.Combine(baseDirectory, "wwwroot\\Results\\Xls\\" + DateTime.Now.Year + "\\" + template.QJMCBM);  // 原始记录目录
            var docPath = Path.Combine(baseDirectory, "wwwroot\\Results\\Doc\\" + DateTime.Now.Year + "\\" + template.QJMCBM);  // 检定证书目录

            if (!Directory.Exists(xlsPath))
            {
                Directory.CreateDirectory(xlsPath);
            }

            if (!Directory.Exists(docPath))
            {
                Directory.CreateDirectory(docPath);
            }

            tempbook.LoadFromFile(xlsTempPath);
            Worksheet sheet = tempbook.Worksheets[0];

            sheet.Range["B2"].Text = jdjlfm.DWMC;
            sheet.Range["B4"].Text = jdjlfm.QJMC;
            sheet.Range["I4"].Text = jdjlfm.ZSBH;

            string zzc  = jdjlfm.ZZC.ToString().Trim();
            string xhgg = jdjlfm.XHGG.ToString().Trim();
            string ccbh = jdjlfm.CCBH.ToString().Trim();

            if (ccbh == "")
            {
                ccbh = "/";
            }

            string ccbh1, ccbh2 = "";
            string zzc1, zzc2 = "";
            string xhgg1, xhgg2 = "";

            if (zzc.Length > 9)
            {
                zzc1 = zzc.Substring(0, 9);
                zzc2 = zzc.Substring(9, zzc.Length - 9);
            }
            else
            {
                zzc1 = zzc;
            }

            if (xhgg.Length > 12)
            {
                xhgg1 = xhgg.Substring(0, 12);
                xhgg2 = xhgg.Substring(12, xhgg.Length - 12);
            }
            else
            {
                xhgg1 = xhgg;
            }

            if (ccbh.Length > 15)
            {
                ccbh1 = ccbh.Substring(0, 15);
                ccbh2 = ccbh.Substring(15, ccbh.Length - 15);
            }
            else
            {
                ccbh1 = ccbh;
            }

            sheet.Range["B5"].Text = zzc1;
            sheet.Range["F5"].Text = xhgg1;
            sheet.Range["I5"].Text = ccbh1;
            sheet.Range["B6"].Text = zzc2;
            sheet.Range["F6"].Text = xhgg2;
            sheet.Range["I6"].Text = ccbh2;

            //sheet.Range["B14"].DateTimeValue = jdjlfm.JDRQ;
            sheet.Range["B14"].Text = string.Format("{0:D}", Convert.ToDateTime(jdjlfm.JDRQ));
            sheet.Range["G14"].Text = string.Format("{0:D}", Convert.ToDateTime(jdjlfm.JDRQ).AddYears(1).AddDays(-1)); //Convert.ToDateTime(jdjlfm.JDRQ).AddYears(1).AddDays(-1).ToString("D");
                                                                                                                       // sheet.Range["G14"].DateTimeValue // 无法设置格式?

            sheet.Range["C13"].Text = jdjlfm.JJWD;

            //原始记录验证码
            sheet.Range["FF1"].Style.Font.Color = Color.White;
            sheet.Range["FF1"].Text             = jdjlfm.ID.ToString();

            // ToDo 数据处理
            sheet = tempbook.Worksheets[1];                          // 一
            // 数据 - 视准轴竖轴垂直度
            double res  = Math.Round(1 + 0.5 - rnd.NextDouble(), 1); // 1±.5
            double res1 = 0;

            sheet.Range["I10"].NumberValue = res;
            res1 = Math.Round((3 - rnd.NextDouble() * 6) / 10, 1);
            if (res1 == 0)
            {
                res1 = 0.1;
            }
            res = res + res1;
            sheet.Range["I11"].NumberValue = res;

            // 数据 - 横轴竖轴垂直度
            res = Math.Round(1 + 0.5 - rnd.NextDouble(), 1); // 1±.5
            sheet.Range["I13"].NumberValue = res;
            res1 = Math.Round((3 - rnd.NextDouble() * 6) / 10, 1);
            if (res1 == 0)
            {
                res1 = 0.1;
            }
            res = res + res1;
            sheet.Range["I14"].NumberValue = res;

            // 数据 - 指标差
            sheet.Range["F16"].NumberValue = 89;
            sheet.Range["H16"].NumberValue = 59;
            sheet.Range["F17"].NumberValue = 269;
            sheet.Range["H17"].NumberValue = 59;

            res = Math.Round(57 + 2 - rnd.NextDouble() * 4, 0);
            sheet.Range["J16"].NumberValue = res;
            res = Math.Round(54 + 2 - rnd.NextDouble() * 4, 0);
            sheet.Range["J17"].NumberValue = res;


            // 数据 - 竖盘指标补偿误差
            sheet.Range["F21"].NumberValue = 90;
            sheet.Range["F22"].NumberValue = 90;
            sheet.Range["F23"].NumberValue = 90;
            sheet.Range["F24"].NumberValue = 90;
            sheet.Range["F25"].NumberValue = 90;
            sheet.Range["H21"].NumberValue = 0;
            sheet.Range["H22"].NumberValue = 0;
            sheet.Range["H23"].NumberValue = 0;
            sheet.Range["H24"].NumberValue = 0;
            sheet.Range["H25"].NumberValue = 0;

            if (jdjlfm.CJJD == "6")  // <12
            {
                res = rnd.NextDouble() >= 0.5 ? 6 : 0;
                sheet.Range["J21"].NumberValue = res;
                res = rnd.NextDouble() >= 0.5 ? 6 : 0;
                sheet.Range["J22"].NumberValue = res;
                res = rnd.NextDouble() >= 0.5 ? 6 : 0;
                sheet.Range["J23"].NumberValue = res;
                res = rnd.NextDouble() >= 0.5 ? 6 : 0;
                sheet.Range["J24"].NumberValue = res;
                res = rnd.NextDouble() >= 0.5 ? 6 : 0;
                sheet.Range["J25"].NumberValue = res;
            }
            else
            {   // <6
                res = Math.Round(4 - rnd.NextDouble() * 4, 0);
                sheet.Range["J21"].NumberValue = res;
                res = Math.Round(4 - rnd.NextDouble() * 4, 0);
                sheet.Range["J22"].NumberValue = res;
                res = Math.Round(4 - rnd.NextDouble() * 4, 0);
                sheet.Range["J23"].NumberValue = res;
                res = Math.Round(4 - rnd.NextDouble() * 4, 0);
                sheet.Range["J24"].NumberValue = res;
                res = Math.Round(4 - rnd.NextDouble() * 4, 0);
                sheet.Range["J25"].NumberValue = res;
            }

            sheet = tempbook.Worksheets[2]; // 二
            if (jdjlfm.CJJD == "2")
            {
                for (int i = 5; i < 10; i++)
                {
                    if (i != 7)
                    {
                        res = Math.Round(1 + rnd.NextDouble() * 10, 0);
                        sheet.Range["I" + i].NumberValue = res;
                        res = Math.Round(1 + rnd.NextDouble() * 10, 0);
                        sheet.Range["O" + i].NumberValue = res;
                        res = Math.Round(3 + rnd.NextDouble() * 10, 0);
                        sheet.Range["U" + i].NumberValue = res;
                        res = Math.Round(3 + rnd.NextDouble() * 10, 0);
                        sheet.Range["AA" + i].NumberValue = res;
                        res = Math.Round(3 + rnd.NextDouble() * 10, 0);
                        sheet.Range["AG" + i].NumberValue = res;
                    }
                }
            }
            else
            {
                for (int i = 5; i < 10; i++)
                {
                    if (i != 7)
                    {
                        res = Math.Round(rnd.NextDouble() * 3 * 6, 0);
                        sheet.Range["I" + i].NumberValue = res;
                        res = Math.Round(rnd.NextDouble() * 3 * 6, 0);
                        sheet.Range["O" + i].NumberValue = res;
                        res = Math.Round(rnd.NextDouble() * 3 * 6, 0);
                        sheet.Range["U" + i].NumberValue = res;
                        res = Math.Round(rnd.NextDouble() * 3 * 6, 0);
                        sheet.Range["AA" + i].NumberValue = res;
                        res = Math.Round(rnd.NextDouble() * 3 * 6, 0);
                        sheet.Range["AG" + i].NumberValue = res;
                    }
                }
            }
            sheet = tempbook.Worksheets[3]; // 三
            if (jdjlfm.CJJD == "2")
            {
                sheet.Range["G7"].NumberValue = Math.Round(rnd.NextDouble() * 4, 0);
                sheet.Range["J7"].NumberValue = Math.Round(rnd.NextDouble() * 6, 0);
                //多齿分度台标准角值
                double[] J2BZJZ = new double[22];
                int      j      = 0;
                J2BZJZ[j] = 7.8; j++;
                J2BZJZ[j] = 15.7; j++;
                J2BZJZ[j] = 23.5; j++;
                J2BZJZ[j] = 31.3; j++;
                J2BZJZ[j] = 39.1; j++;
                J2BZJZ[j] = 47; j++;
                J2BZJZ[j] = 54.8; j++;
                J2BZJZ[j] = 2.6; j++;
                J2BZJZ[j] = 10.4; j++;
                J2BZJZ[j] = 18.2; j++;
                J2BZJZ[j] = 26; j++;
                J2BZJZ[j] = 33.9; j++;
                J2BZJZ[j] = 41.7; j++;
                J2BZJZ[j] = 49.5; j++;
                J2BZJZ[j] = 57.3; j++;
                J2BZJZ[j] = 05.2; j++;
                J2BZJZ[j] = 13; j++;
                J2BZJZ[j] = 20.8; j++;
                J2BZJZ[j] = 28.6; j++;
                J2BZJZ[j] = 36.5; j++;
                J2BZJZ[j] = 44.3; j++;
                J2BZJZ[j] = 52.2;
                for (int i = 8; i <= 29; i++)
                {
                    res = Math.Round(J2BZJZ[i - 8], 0) + Math.Round(1.5 - rnd.NextDouble() * 3, 0);
                    sheet.Range["G" + i].NumberValue = res;
                    res = res + Math.Round(1 - rnd.NextDouble() * 3, 0);
                    sheet.Range["J" + i].NumberValue = res;
                }
            }
            else
            {
                for (int i = 6; i <= 17; i++)
                {
                    res = 1 + Math.Round(rnd.NextDouble() * 10, 0);
                    sheet.Range["C" + i].NumberValue = res;
                    res = res + Math.Round(2 - rnd.NextDouble() * 4, 0);
                    if (res == 0)
                    {
                        res = 2;
                    }
                    sheet.Range["D" + i].NumberValue = res;
                }
            }

            /*
             *  // tempbook.PrintDocument.Print();// 免费版只能打印3页
             *  Stream stream = new MemoryStream();
             *  tempbook.SaveToStream(stream);
             *  XlsPrinter.Print(stream);
             */

            tempbook.SaveToFile(Path.Combine(xlsPath, jdjlfm.ID.ToString() + ".xls"));

            string[] RES = new string[8];
            tempbook.CalculateAllValue();
            RES[0] = jdjlfm.JJWD;                              // A01 温度
            RES[1] = "";                                       // A02 未用
            sheet  = tempbook.Worksheets[1];
            RES[2] = sheet.Range["F12"].NumberText.ToString(); // A03 视准轴与横轴的垂直度
            RES[3] = sheet.Range["G15"].NumberText.ToString(); // A04 横轴与竖轴的垂直度
            RES[4] = sheet.Range["H18"].NumberText.ToString(); // A05 竖盘指标差

            sheet = tempbook.Worksheets[3];
            if (jdjlfm.CJJD == "2")
            {
                RES[5] = sheet.Range["L35"].NumberText.ToString(); // A06 一测回水平方向标准偏差
            }
            else
            {
                RES[5] = sheet.Range["F32"].NumberText.ToString(); // A06 一测回水平方向标准偏差
            }
            sheet  = tempbook.Worksheets[2];
            RES[6] = sheet.Range["D13"].NumberText.ToString(); // A07 望远镜调焦运行误差

            sheet  = tempbook.Worksheets[1];
            RES[7] = sheet.Range["J26"].NumberText.ToString(); // A08 竖盘指标自动补偿误差

            MakeCert(jdjlfm, template, Signer, RES);

            string[] resA17 = new string[RES.Length + 3];
            resA17[0] = jdjlfm.ID.ToString();
            resA17[1] = jdjlfm.ZSBH;
            for (int i = 2; i < resA17.Length - 1; i++)
            {
                resA17[i] = RES[i - 2];
            }
            resA17[resA17.Length - 1] = jdjlfm.CJJD;//精度指标
            return(resA17);
        }