Beispiel #1
0
 public static bool Save(Calculation3d calc, string path)
 {
     try
     {
         string        appFolder = System.AppDomain.CurrentDomain.BaseDirectory;
         XmlSerializer x         = new XmlSerializer(typeof(Calculation3d));
         DirectoryInfo tempDir   = new DirectoryInfo(path);
         Directory.CreateDirectory(tempDir.Parent.FullName);
         TextWriter writer = new StreamWriter(tempDir.FullName);
         x.Serialize(writer, calc);
         writer.Close();
         return(true);
     }
     catch (Exception exc)
     {
         logger.Error(string.Format(Strings.EventExceptionOccurredFormated, exc.TargetSite, exc.Message));
         throw exc;
         //logger.Error(ex.Message);
     }
 }
Beispiel #2
0
 // https://stackoverflow.com/questions/965042/c-sharp-serializing-deserializing-a-des-encrypted-file-from-a-stream
 public static bool EncryptAndSerialize(string filename, Calculation3d obj)
 {
     try
     {
         var key = new DESCryptoServiceProvider();
         var e   = key.CreateEncryptor(Encoding.ASCII.GetBytes("64bitPas"), Encoding.ASCII.GetBytes(secString));
         using (FileStream fs = File.Open(filename, FileMode.Create))
         {
             using (CryptoStream cs = new CryptoStream(fs, e, CryptoStreamMode.Write))
             {
                 XmlSerializer xmlser = new XmlSerializer(typeof(Calculation3d));
                 xmlser.Serialize(cs, obj);
                 return(true);
             }
         }
     }
     catch (Exception exc)
     {
         logger.Error(string.Format(Strings.EventExceptionOccurredFormated, exc.TargetSite, exc.Message));
         return(false);
     }
 }
Beispiel #3
0
        public static bool Load(string path, out Calculation3d calc)
        {
            try
            {
                // Construct an instance of the XmlSerializer with the type
                // of object that is being deserialized.
                XmlSerializer mySerializer =
                    new XmlSerializer(typeof(Calculation3d));
                // To read the file, create a FileStream.

                FileStream myFileStream = new FileStream(path, FileMode.Open);
                // Call the Deserialize method and cast to the object type.
                Calculation3d retval = (Calculation3d)mySerializer.Deserialize(myFileStream);
                myFileStream.Close();
                calc = retval;
                return(true);
            }
            catch (Exception exc)
            {
                logger.Error(string.Format(Strings.EventExceptionOccurredFormated, exc.TargetSite, exc.Message));
                throw exc;
                //logger.Error(ex.Message);
            }
        }
        public static bool WriteCalculationToExporterTemplate(Calculation3d calculation,
                                                              string path, ExporterTemplate template, bool asPdf = false
                                                              )
        {
            try
            {
                using (ExcelEngine excelEngine = new ExcelEngine())
                {
                    IApplication application    = excelEngine.Excel;
                    bool         targetIsFolder = false;
                    application.DefaultVersion = ExcelVersion.Excel2013;
                    string ext = Path.GetExtension(path);
                    targetIsFolder = string.IsNullOrEmpty(ext);

                    string root = Path.GetDirectoryName(path);

                    // Foreach printer...
                    foreach (Printer3d printer in calculation.Printers)
                    {
                        //... and material
                        foreach (Material3d material in calculation.Materials)
                        {
                            string filename = string.Format(@"{0}_{1}{2}",
                                                            Regex.Replace(printer.ToString(), "[^a-zA-Z0-9_]+", "_", RegexOptions.Compiled),
                                                            Regex.Replace(material.ToString(), "[^a-zA-Z0-9_]+", "_", RegexOptions.Compiled),
                                                            string.IsNullOrEmpty(ext) ? asPdf ? ".pdf" : ".xlsx" : ext
                                                            );
                            //Create a workbook
                            IWorkbook  workbook  = application.Workbooks.Open(template.TemplatePath, ExcelOpenType.Automatic);
                            IWorksheet worksheet = workbook.Worksheets[0];

                            string currencySymbol = CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol;

                            foreach (ExporterSettings setting in template.Settings)
                            {
                                worksheet = workbook.Worksheets[setting.WorkSheetName];
                                switch (setting.Attribute.Property)
                                {
                                    #region Prices
                                case ExporterProperty.CalculationMargin:
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].Number
                                        = Convert.ToDouble(calculation.CalculatedMargin);
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].NumberFormat = currencySymbol + "#,##0.00";
                                    break;

                                case ExporterProperty.CalculationPriceMaterial:
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].Number
                                        = Convert.ToDouble(calculation.MaterialCosts);
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].NumberFormat = currencySymbol + "#,##0.00";
                                    break;

                                case ExporterProperty.CalculationPriceEnergy:
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].Number
                                        = Convert.ToDouble(calculation.EnergyCosts);
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].NumberFormat = currencySymbol + "#,##0.00";
                                    break;

                                case ExporterProperty.CalculationPriceHandling:
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].Number
                                        = Convert.ToDouble(calculation.getTotalCosts(CalculationAttributeType.FixCost));
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].NumberFormat = currencySymbol + "#,##0.00";
                                    break;

                                case ExporterProperty.CalculationPricePrinter:
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].Number
                                        = Convert.ToDouble(calculation.MachineCosts);
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].NumberFormat = currencySymbol + "#,##0.00";
                                    break;

                                case ExporterProperty.CalculationPriceTax:
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].Number
                                        = Convert.ToDouble(calculation.CalculatedTax);
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].NumberFormat = currencySymbol + "#,##0.00";
                                    break;

                                case ExporterProperty.CalculationPriceWorksteps:
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].Number
                                        = Convert.ToDouble(calculation.WorkstepCosts);
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].NumberFormat = currencySymbol + "#,##0.00";
                                    break;

                                case ExporterProperty.CalculationPriceTotal:
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].Number
                                        = Convert.ToDouble(calculation.TotalCosts);
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].NumberFormat = currencySymbol + "#,##0.00";
                                    break;
                                    #endregion

                                    #region Material
                                case ExporterProperty.CalculationMaterial:
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].Text
                                        = material.ToString();
                                    break;
                                    #endregion

                                    #region Printer
                                case ExporterProperty.CalculationPrinter:
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].Text
                                        = printer.ToString();
                                    break;
                                    #endregion

                                    #region Misc

                                case ExporterProperty.CalculationFailrate:
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].Number
                                        = Convert.ToDouble(calculation.FailRate);
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].NumberFormat = "#0 %";
                                    break;

                                case ExporterProperty.CalculationPrintTime:
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].Number
                                        = Convert.ToDouble(calculation.TotalPrintTime);
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].NumberFormat = "#0 %";
                                    break;

                                case ExporterProperty.CalculationQuantity:
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].Number
                                        = Convert.ToDouble(calculation.Quantity);
                                    worksheet.Range[string.Format("{0}{1}", setting.Coordinates.Column, setting.Coordinates.Row)].NumberFormat = "0";
                                    break;
                                    #endregion
                                }
                            }

                            if (asPdf)
                            {
                                //Open the Excel document to Convert
                                ExcelToPdfConverter converter = new ExcelToPdfConverter(workbook);

                                //Initialize PDF document
                                PdfDocument pdfDocument = new PdfDocument();

                                //Convert Excel document into PDF document
                                pdfDocument = converter.Convert();

                                //Save the PDF file
                                string savePath = targetIsFolder ? Path.Combine(path, filename) : Path.Combine(root, filename);
                                pdfDocument.Save(savePath);
                            }
                            else
                            {
                                string savePath = targetIsFolder ? Path.Combine(path, filename) : Path.Combine(root, filename);
                                workbook.SaveAs(savePath);
                            }

                            workbook.Close();
                        }
                    }
                    return(true);
                }
            }
            catch (Exception exc)
            {
                logger.Error(string.Format(Strings.EventExceptionOccurredFormated, exc.TargetSite, exc.Message));
                return(false);
            }
        }