Exemple #1
0
        public override void Run()
        {
            //-> File: ExcelExample.cs

            // Create an excel storage for specific class
            // By default start row/column is 2/B (index 1)
            ExcelNPOIStorage storage = new ExcelNPOIStorage(typeof(Student));

            // Set storage file name -> that will be excel output file name
            // Extension must be .xlsx or .xls
            storage.FileName = "Students.xlsx";

            // Sheet name is not required. By default sheet name will be "Sheet0"
            storage.SheetName = "Students";
            storage.ColumnsHeaders.Add("Student number");
            storage.ColumnsHeaders.Add("Student name");
            storage.ColumnsHeaders.Add("Course name");

            // Test data
            int count = 3;

            Student[] students = new Student[count];

            students[0] = CreateStudent(0, "Chuck Norris", "Karate");
            students[1] = CreateStudent(1, "Steven Seagal", "Aikido");
            students[2] = CreateStudent(2, "Dennis Ritchie", "Programming");

            // Insert students to excel storage
            // This method will save out excel file
            storage.InsertRecords(students);

            //-> /File
        }
Exemple #2
0
        private static void Main(string[] args)
        {
            /*var provider = new ExcelStorage(typeof(RaRecord)) {
             *  StartRow = 2,
             *  StartColumn = 1,
             *  SheetName = "Sheet2",
             *  FileName = "test.xlsx"
             * };*/
            var provider = new ExcelNPOIStorage(typeof(RaRecord))
            {
                SheetName = "SheetBavo",
                FileName  = "test.xlsx"
            };

            provider.StartRow    = 1;
            provider.StartColumn = 0;

            var records = new List <RaRecord>();

            records.Add(new RaRecord()
            {
                Level = 123.123m,
                Name  = "Dickie"
            });
            records.Add(new RaRecord()
            {
                Level     = null,
                Name      = "Bavo",
                Project   = "too many",
                Startdate = DateTime.Now
            });

            provider.InsertRecords(records.ToArray());
            //var res = (RaRecord[])provider.ExtractRecords();
        }
Exemple #3
0
        public void Exportar(Type tipo, string nomeArquivo)
        {
            if (tipo == null || nomeArquivo == null)
            {
                return;
            }

            var engine = new FileHelperEngine <Cotacao>();


            ExcelNPOIStorage arquivo = CriarExcel(tipo, nomeArquivo);

            List <Cotacao> cotacoes = new List <Cotacao>();

            var records = engine.ReadFile(@"Input\" + nomeArquivo);

            foreach (var record in records)
            {
                cotacoes.Add(
                    new Cotacao
                {
                    NegociacaoID    = record.NegociacaoID,
                    DataPregao      = record.DataPregao,
                    PrecoAbertura   = record.PrecoAbertura,
                    PrecoFechamento = record.PrecoFechamento
                });
            }
            arquivo.InsertRecords(cotacoes.ToArray());
        }
Exemple #4
0
        private ExcelNPOIStorage CriarExcel(Type tipo, string nomeArquivo)
        {
            ExcelNPOIStorage arquivo = new ExcelNPOIStorage(tipo);

            //O nome do arquivo excel ficará com mesmo nome do arquivo lido no diretório input
            arquivo.FileName = $"{nomeArquivo.Substring(0, nomeArquivo.IndexOf("."))}.xlsx";

            //O nome da tabela tem o mesmo da classe
            arquivo.SheetName = nameof(tipo);

            //Obtem-se os atributos da classe passada como parametro no metódo
            PropertyInfo[] props = tipo.GetProperties();


            foreach (var item in props)
            {
                MemberInfo property  = tipo.GetProperty(item.Name);
                var        attribute = property.GetCustomAttributes(typeof(DisplayNameAttribute), true)
                                       .Cast <DisplayNameAttribute>().Single();
                string displayName = attribute.DisplayName;
                //O Dispaly dos atributos da classe são usados para criar o nome das colunas do arquivo excel
                arquivo.ColumnsHeaders.Add(displayName);
            }
            return(arquivo);
        }
Exemple #5
0
 private static void TestExtractRecordsUsingStream()
 {
     var provider = new ExcelNPOIStorage(typeof(RaRecord))
     {
         StartColumn = 0
     };
     var stream = new FileStream(Directory.GetCurrentDirectory() + @"\test.xlsx", FileMode.Open, FileAccess.Read);
     var res    = provider.ExtractRecords(stream).Cast <RaRecord>();
 }
Exemple #6
0
        private static void TestBlankFields()
        {
            var provider = new ExcelNPOIStorage(typeof(RaRecord))
            {
                FileName    = Directory.GetCurrentDirectory() + @"\testBlankFields.xlsx",
                StartColumn = 0
            };

            var workbook            = new XSSFWorkbook(provider.FileName);
            var row                 = workbook.GetSheet("Sheet2").GetRow(0);
            var firstLineFields     = row.Cells.Select(c => c.StringCellValue.Trim());
            var unusedPropertyNames = provider.FieldFriendlyNames.Except(firstLineFields).ToList();

            foreach (var propertyName in unusedPropertyNames)
            {
                provider.RemoveField(propertyName);
            }

            var res = (RaRecord[])provider.ExtractRecords();
        }
        public override void Run()
        {
            //-> File: ExcelExample.cs

            // Create an excel storage for specific class
            // startRow = 2 & startColumn = 1 -> for skipping column header names
            ExcelNPOIStorage storage = new ExcelNPOIStorage(typeof(Student), 2, 1);

            // Set storage file name -> represents the excel file name we want to read
            storage.FileName = "Students.xlsx";

            // Read from excel file
            Student[] students = storage.ExtractRecords() as Student[];

            Console.WriteLine("\t\tStudents from file:");
            foreach (Student s in students)
            {
                Console.WriteLine(s);
            }

            // Make some changes
            students[0].StudentNumber = 420;
            Console.WriteLine(Environment.NewLine + "Student {0} edited.", students[0].FullName);
            students[1].Course = "Jiu-Jitsu";
            Console.WriteLine("Student {0} edited.", students[1].FullName);

            Console.WriteLine(Environment.NewLine + "\t\tEdited students:");
            foreach (Student s in students)
            {
                Console.WriteLine(s);
            }

            // Insert students to excel storage
            // This method will save out excel file
            storage.InsertRecords(students);
            Console.WriteLine(Environment.NewLine + "Changes saved.");

            //-> /File
        }
        public static ImportDataDelegate <OwnScore> CreateCoolOwnScoreImportDataFromExcelDelegate()
        {
            ExcelNPOIStorage excelNPOIStorage = new ExcelNPOIStorage(typeof(OwnScore))
            {
                FileName    = Directory.GetCurrentDirectory() + @"\Files\OwnScore.xls",
                StartRow    = 8,
                StartColumn = 4
            };

            return(delegate(IObjectSpace os, object[] args) {
                //throw new NotImplementedException("TODO: you can use the FileHelpers library to get the data from Excel and then fill your persistent object.");

                object masterObject = null;
                int index = 0;
                if (args != null)
                {
                    if (args.Length == 2)
                    {
                        masterObject = args[0];
                        index = Convert.ToInt32(args[1]);
                    }
                }

                //if (index < doc.DocumentElement.ChildNodes.Count)
                //{
                //    OwnScore ownScore = os.CreateObject<OwnScore>();
                //    Office office = os.FindObject<Office>(CriteriaOperator.Parse("OfficeId=?", index));

                //    ownScore.Office = office;
                //    ownScore.Result = index;
                //    ownScore.Score = index;
                //    ownScore.WeightScore = index;

                //    return ownScore;
                //}
                return null;
            });
        }
Exemple #9
0
        private static void Main(string[] args)
        {
            /*var provider = new ExcelStorage(typeof(RaRecord)) {
             *  StartRow = 2,
             *  StartColumn = 1,
             *  SheetName = "Sheet2",
             *  FileName = "test.xlsx"
             * };*/

            //Dynamic Records
            var cb = new DelimitedClassBuilder("Customer", "|")
            {
                IgnoreFirstLines = 1,
                IgnoreEmptyLines = true
            };

            cb.AddField("BirthDate", typeof(DateTime));
            cb.LastField.TrimMode       = TrimMode.Both;
            cb.LastField.FieldNullValue = DateTime.Today;

            cb.AddField("Name", typeof(string));
            cb.LastField.FieldQuoted = true;
            cb.LastField.QuoteChar   = '"';

            cb.AddField("Age", typeof(int));

            var providerWithDynamicRecord = new ExcelNPOIStorage(cb.CreateRecordClass())
            {
                FileName = Directory.GetCurrentDirectory() + @"\testDynamicRecords.xlsx"
            };

            providerWithDynamicRecord.StartRow    = 1;
            providerWithDynamicRecord.StartColumn = 1;

            dynamic dynamicRecord = Activator.CreateInstance(providerWithDynamicRecord.RecordType);

            dynamicRecord.Name      = "Jonh";
            dynamicRecord.Age       = 1;
            dynamicRecord.BirthDate = DateTime.Now;

            var valuesList = new List <dynamic>
            {
                dynamicRecord,
                dynamicRecord
            };

            var columnsHeaders = ((System.Reflection.TypeInfo)(dynamicRecord.GetType())).DeclaredFields.Select(x => x.Name).ToList();

            providerWithDynamicRecord.ColumnsHeaders = columnsHeaders;
            providerWithDynamicRecord.InsertRecords(valuesList.ToArray());

            //General export of excel with date time columns
            var provider = new ExcelNPOIStorage(typeof(RaRecord))
            {
                FileName = Directory.GetCurrentDirectory() + @"\test.xlsx"
            };

            provider.StartRow    = 0;
            provider.StartColumn = 0;

            var records = new List <RaRecord>();

            records.Add(new RaRecord()
            {
                Level     = 123.123m,
                Name      = "Dickie",
                Startdate = DateTime.Now
            });

            var values = new List <int>
            {
                1,
                2,
                3
            };

            records.Add(new RaRecord()
            {
                Level     = null,
                Name      = "Bavo",
                Project   = "too many",
                Startdate = DateTime.Now,
                ListOfIds = string.Join(",", values.Select(n => n.ToString(CultureInfo.InvariantCulture)).ToArray())
            });

            provider.HeaderRows = 4;

            provider.InsertRecords(records.ToArray());

            var res = (RaRecord[])provider.ExtractRecords();
        }
Exemple #10
0
        private void ExportGR(object ignored)
        {
            ExcelNPOIStorage storage = new ExcelNPOIStorage(typeof(ImportCLassModel), 0, 0);

            string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Export GR");

            if (!Directory.Exists(path))
            {
                try
                {
                    Directory.CreateDirectory(path);
                }
                catch (IOException ie)
                {
                    Console.WriteLine("IO Error: " + ie.Message);
                }
                catch (Exception e)
                {
                    Console.WriteLine("General Error: " + e.Message);
                }
            }

            storage.FileName = path +
                               string.Concat(@"\GoodsReceiveExport_" + DateTime.Now.ToString("yyyy-MM-dd_HHmm",
                                                                                             System.Globalization.CultureInfo.InvariantCulture)) +
                               ".xlsx";

            storage.ColumnsHeaders.Add("Document Date");
            storage.ColumnsHeaders.Add("Posting Date");
            storage.ColumnsHeaders.Add("Purchase Order");
            storage.ColumnsHeaders.Add("Vendor");
            storage.ColumnsHeaders.Add("Delivery Note");
            storage.ColumnsHeaders.Add("Bill Of Lading");
            storage.ColumnsHeaders.Add("Header Text");
            storage.ColumnsHeaders.Add("Material");
            storage.ColumnsHeaders.Add("Material Short Text");
            storage.ColumnsHeaders.Add("OK");
            storage.ColumnsHeaders.Add("Quantity");
            storage.ColumnsHeaders.Add("Eun");
            storage.ColumnsHeaders.Add("Mvmt Type");
            storage.ColumnsHeaders.Add("Storage Loc");
            storage.ColumnsHeaders.Add("Plant");
            storage.ColumnsHeaders.Add("Storage Bin");
            storage.ColumnsHeaders.Add("Quantity Received");
            storage.ColumnsHeaders.Add("Transaction Reason");
            storage.ColumnsHeaders.Add("Received By");
            storage.ColumnsHeaders.Add("Received On");

            ObservableCollection <ImportCLassModel> importObj = new ObservableCollection <ImportCLassModel>();
            ImportCLassModel temp = new ImportCLassModel();

            using (var db = new InventoryContext())
            {
                foreach (var rec in grCollection)
                {
                    var grTxn = db.GRTransactions.Where(p => p.GRID == rec.ID);
                    if (grTxn != null && grTxn.Count() > 0)
                    {
                        foreach (var item in grTxn)
                        {
                            temp = new ImportCLassModel()
                            {
                                DocumentDate      = rec.DocumentDate,
                                PostingDate       = rec.PostingDate,
                                PurchaseOrder     = rec.PurchaseOrder,
                                Vendor            = rec.Vendor ?? string.Empty,
                                DeliveryNote      = rec.DeliveryNote ?? string.Empty,
                                BillOfLading      = rec.BillOfLading ?? string.Empty,
                                HeaderText        = rec.HeaderText ?? string.Empty,
                                Material          = rec.Material,
                                MaterialShortText = rec.MaterialShortText,
                                Ok               = rec.Ok == null || rec.Ok == false ? "Not Complete" : "Completed",
                                Quantity         = rec.Quantity,
                                Eun              = rec.Eun,
                                MvmtType         = rec.MvmtType ?? string.Empty,
                                StorageLoc       = rec.StorageLoc,
                                Plant            = rec.Plant,
                                StorageBin       = rec.StorageBin,
                                QuantityReceived = item.Quantity,
                                ReasonDesc       = item.Reason != null ? item.Reason.ReasonDesc : string.Empty,
                                ReceivedBy       = item.CreatedBy,
                                ReceivedOn       = Convert.ToString(item.CreatedOn),
                            };
                            importObj.Add(temp);
                        }
                    }
                    else
                    {
                        temp = new ImportCLassModel()
                        {
                            DocumentDate      = rec.DocumentDate,
                            PostingDate       = rec.PostingDate,
                            PurchaseOrder     = rec.PurchaseOrder,
                            Vendor            = rec.Vendor ?? string.Empty,
                            DeliveryNote      = rec.DeliveryNote ?? string.Empty,
                            BillOfLading      = rec.BillOfLading ?? string.Empty,
                            HeaderText        = rec.HeaderText ?? string.Empty,
                            Material          = rec.Material,
                            MaterialShortText = rec.MaterialShortText,
                            Ok               = rec.Ok == null || rec.Ok == false ? "Not Complete" : "Completed",
                            Quantity         = rec.Quantity,
                            Eun              = rec.Eun,
                            MvmtType         = rec.MvmtType ?? string.Empty,
                            StorageLoc       = rec.StorageLoc,
                            Plant            = rec.Plant,
                            StorageBin       = rec.StorageBin,
                            QuantityReceived = 0,
                            ReasonDesc       = string.Empty,
                            ReceivedBy       = string.Empty,
                            ReceivedOn       = string.Empty
                        };
                        importObj.Add(temp);
                    }
                }
            }

            if (importObj != null)
            {
                storage.InsertRecords(importObj.ToArray());

                this.confirmDeleteInteractionRequest.Raise(
                    new Confirmation
                {
                    Content = "Exported successfully. Open file?",
                    Title   = "Notification"
                },
                    c => { InteractionResultMessage = c.Confirmed ? OpenExportedFile(storage.FileName) : "NOT OK!"; });
            }
        }
Exemple #11
0
        private void Export(object ignored)
        {
            ExcelNPOIStorage storage = new ExcelNPOIStorage(typeof(ExportCLassModel), 0, 0);

            string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Export GI");

            if (!Directory.Exists(path))
            {
                try
                {
                    Directory.CreateDirectory(path);
                }
                catch (IOException ie)
                {
                    Console.WriteLine("IO Error: " + ie.Message);
                }
                catch (Exception e)
                {
                    Console.WriteLine("General Error: " + e.Message);
                }
            }

            storage.FileName = path +
                               string.Concat(@"\GoodsIssueExport_" + DateTime.Now.ToString("yyyy-MM-dd_HHmm",
                                                                                           System.Globalization.CultureInfo.InvariantCulture)) +
                               ".xlsx";

            storage.ColumnsHeaders.Add("SAP No.");
            storage.ColumnsHeaders.Add("Text");
            storage.ColumnsHeaders.Add("Quantity");
            storage.ColumnsHeaders.Add("Eun");
            storage.ColumnsHeaders.Add("Transfer Type");
            storage.ColumnsHeaders.Add("Production No.");
            storage.ColumnsHeaders.Add("Location To");
            storage.ColumnsHeaders.Add("Location From");
            storage.ColumnsHeaders.Add("Issued By");
            storage.ColumnsHeaders.Add("Issued On");

            ObservableCollection <ExportCLassModel> exportObj = new ObservableCollection <ExportCLassModel>();

            foreach (var gr in GoodsIssues)
            {
                exportObj.Add(new ExportCLassModel
                {
                    SAPNo        = gr.GoodsReceive.Material,
                    Text         = gr.Text,
                    Quantity     = gr.Quantity,
                    Eun          = gr.GoodsReceive.Eun,
                    TransferType = gr.TransferType.Contains("POST") ? "Transfer Posting" : "Transfer to Production",
                    ProductionNo = gr.ProductionNo,
                    LocationTo   = (gr.Location1 != null) ? gr.Location1.LocationDesc : string.Empty,
                    LocationFrom = (gr.Location != null) ? gr.Location.LocationDesc : string.Empty,
                    IssuedBy     = gr.CreatedBy,
                    IssuedOn     = Convert.ToString(gr.CreatedOn)
                });
            }

            if (exportObj != null)
            {
                storage.InsertRecords(exportObj.ToArray());

                this.confirmDeleteInteractionRequest.Raise(
                    new Confirmation
                {
                    Content = "Exported successfully. Open file?",
                    Title   = "Notification"
                },
                    c =>
                {
                    if (c.Confirmed)
                    {
                        if (OpenExportedFile(storage.FileName))
                        {
                            OnLoaded();
                        }
                    }
                });
            }
        }
        private void LeerExcel()
        {
            try
            {
                ProductosExcel[] resCab;
                if (FormatoCSVRadioButton.Checked)
                {
                    FileStorage provider = new FileStorage(typeof(ProductosExcel), Server.MapPath("TempExcel\\" + ((Entidades.Sesion)Session["Sesion"]).Cuit.Nro + "-" + Session.SessionID + "-Precios.csv"));
                    //ExcelNPOIStorage provider = new ExcelNPOIStorage(typeof(ProductosExcel));
                    //provider..StartRow = 0;
                    //provider.StartColumn = 0;
                    resCab = (ProductosExcel[])provider.ExtractRecords();
                }
                else
                {
                    ExcelNPOIStorage provider = new ExcelNPOIStorage(typeof(ProductosExcel));
                    provider.StartRow    = 0;
                    provider.StartColumn = 0;
                    provider.FileName    = Server.MapPath("TempExcel\\" + ((Entidades.Sesion)Session["Sesion"]).Cuit.Nro + "-" + Session.SessionID + "-Precios.xls");
                    resCab = (ProductosExcel[])provider.ExtractRecords();
                }

                List <Entidades.ListaPrecio> listasPrecio = new List <Entidades.ListaPrecio>();
                Entidades.Sesion             sesion       = (Entidades.Sesion)Session["Sesion"];

                //if (resCab.Length > 1)
                //{
                //    MensajeLabel.Text = "Proceso cancelado: La cabecera del archivo excel debe tener un solo renglón.";
                //    return;
                //}
                if (resCab[0].Lista01 == null || resCab[0].Lista01.Trim().Equals(string.Empty))
                {
                    MensajeLabel.Text = "Proceso cancelado: No está informada la primer lista de precios en la planilla excel.";
                    return;
                }
                else
                {
                    try
                    {
                        listasPrecio.Add(new Entidades.ListaPrecio(resCab[0].Lista01.Trim()));
                        if (!resCab[0].Lista02.Trim().Equals(String.Empty))
                        {
                            listasPrecio.Add(new Entidades.ListaPrecio(resCab[0].Lista02.Trim()));
                        }
                        if (!resCab[0].Lista03.Trim().Equals(String.Empty))
                        {
                            listasPrecio.Add(new Entidades.ListaPrecio(resCab[0].Lista03.Trim()));
                        }
                        if (!resCab[0].Lista04.Trim().Equals(String.Empty))
                        {
                            listasPrecio.Add(new Entidades.ListaPrecio(resCab[0].Lista04.Trim()));
                        }
                        if (!resCab[0].Lista05.Trim().Equals(String.Empty))
                        {
                            listasPrecio.Add(new Entidades.ListaPrecio(resCab[0].Lista05.Trim()));
                        }
                        if (!resCab[0].Lista06.Trim().Equals(String.Empty))
                        {
                            listasPrecio.Add(new Entidades.ListaPrecio(resCab[0].Lista06.Trim()));
                        }
                        if (!resCab[0].Lista07.Trim().Equals(String.Empty))
                        {
                            listasPrecio.Add(new Entidades.ListaPrecio(resCab[0].Lista07.Trim()));
                        }
                        if (!resCab[0].Lista08.Trim().Equals(String.Empty))
                        {
                            listasPrecio.Add(new Entidades.ListaPrecio(resCab[0].Lista08.Trim()));
                        }
                        if (!resCab[0].Lista09.Trim().Equals(String.Empty))
                        {
                            listasPrecio.Add(new Entidades.ListaPrecio(resCab[0].Lista09.Trim()));
                        }
                        if (!resCab[0].Lista10.Trim().Equals(String.Empty))
                        {
                            listasPrecio.Add(new Entidades.ListaPrecio(resCab[0].Lista10.Trim()));
                        }
                    }
                    catch
                    {
                    }
                }

                if (listasPrecio.Count == 0)
                {
                    MensajeLabel.Text = "Proceso cancelado: No hay ninguna Lista de precios definida.";
                    return;
                }

                ViewState["ListasPrecio"] = listasPrecio;

                //Leer detalle del excel
                //ExcelNPOIStorage provider = new ExcelNPOIStorage(typeof(ProductosExcel));
                //provider.StartRow = 3;
                //provider.StartColumn = 1;
                //provider.FileName = Server.MapPath("Temp\\ExcelAProcesar.xlsx");
                //ProductosExcel[] resDet = (ProductosExcel[])provider.ExtractRecords();

                //Completar la Matriz de Precios
                CrearYCompletarMatrizDePrecios(listasPrecio, resCab);

                //Actualizar los precios de la MatrizDePrecios
                DataTable dt = (DataTable)ViewState["MatrizDePrecios"];
                List <Entidades.ListaPrecio> listasPrecioNew = (List <Entidades.ListaPrecio>)ViewState["ListasPrecio"];
                RN.Precio.ImpactarMatriz(listasPrecioNew, dt, sesion);
                MensajeLabel.Enabled = true;
                MensajeLabel.Text    = "PROCESO CONCLUIDO SATISFACTORIAMENTE.\n";
                string listasImp = "Listas importadas: ";
                foreach (Entidades.ListaPrecio lp in listasPrecio)
                {
                    if (listasImp != "Listas importadas: ")
                    {
                        listasImp += ", ";
                    }
                    listasImp += lp.Id;
                }
                MensajeLabel.Text   += listasImp + "\n";
                MensajeLabel.Text   += "Cantidad total de artículos: " + dt.Rows.Count;
                MensajeLabel.Enabled = false;
            }
            catch (Exception ex)
            {
                MensajeLabel.Text = EX.Funciones.Detalle(ex);
            }
        }
Exemple #13
0
        private void Export()
        {
            ExcelNPOIStorage storage = new ExcelNPOIStorage(typeof(FCUImportCLassModel), 0, 0);

            string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Export FG");

            if (!Directory.Exists(path))
            {
                try
                {
                    Directory.CreateDirectory(path);
                }
                catch (IOException ie)
                {
                    Console.WriteLine("IO Error: " + ie.Message);
                }
                catch (Exception e)
                {
                    Console.WriteLine("General Error: " + e.Message);
                }
            }

            storage.FileName = path +
                               string.Concat(@"\FCUExport_" + DateTime.Now.ToString("yyyy-MM-dd_HHmm",
                                                                                    System.Globalization.CultureInfo.InvariantCulture)) +
                               ".xlsx";

            storage.ColumnsHeaders.Add("Project");
            storage.ColumnsHeaders.Add("Unit Tag");
            storage.ColumnsHeaders.Add("Part No.");
            storage.ColumnsHeaders.Add("Model");
            storage.ColumnsHeaders.Add("Quantity");
            storage.ColumnsHeaders.Add("Item");
            storage.ColumnsHeaders.Add("Serial No.");
            storage.ColumnsHeaders.Add("Quantity Received");
            storage.ColumnsHeaders.Add("Shipped By");
            storage.ColumnsHeaders.Add("Shipped On");

            ObservableCollection <FCUImportCLassModel> importObj = new ObservableCollection <FCUImportCLassModel>();

            foreach (var fcu in fcuCollection)
            {
                importObj.Add(new FCUImportCLassModel
                {
                    Project     = fcu.Project,
                    UnitTag     = fcu.UnitTag,
                    PartNo      = fcu.PartNo,
                    Model       = fcu.Model,
                    Qty         = fcu.Qty,
                    Item        = fcu.Item,
                    SerialNo    = fcu.SerialNo,
                    QtyReceived = fcu.QtyReceived.GetValueOrDefault(),
                    ShippedBy   = fcu.CreatedBy,
                    ShippedOn   = Convert.ToString(fcu.CreatedOn)
                });
            }

            if (importObj != null)
            {
                storage.InsertRecords(importObj.ToArray());
            }
            if (MessageBox.Show("Exported successfully. Open file?", "Notification", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
            {
                OpenExportedFile(storage.FileName);
            }
        }