Beispiel #1
0
        public void Paste(Int32 Pi_Row, Int32 Pi_Col)
        {
            Mws_Sheet.get_Range(Mws_Sheet.Cells[Pi_Row, Pi_Col], Mws_Sheet.Cells[Pi_Row, Pi_Col]).Select();


            Mws_Sheet.Paste(Missing.Value, Missing.Value);
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            Excel.Application app = new Excel.Application();

            app.Visible = true;
            app.Workbooks.Add("");
            app.Workbooks.Add(@"c:\MyWork\WorkBook1.xls");
            app.Workbooks.Add(@"c:\MyWork\WorkBook2.xls");


            for (int i = 2; i <= app.Workbooks.Count; i++)
            {
                int count = app.Workbooks[i].Worksheets.Count;

                app.Workbooks[i].Activate();
                for (int j = 1; j <= count; j++)
                {
                    Excel._Worksheet ws = (Excel._Worksheet)app.Workbooks[i].Worksheets[j];
                    ws.Select(Type.Missing);
                    ws.Cells.Select();

                    Excel.Range sel = (Excel.Range)app.Selection;
                    sel.Copy(Type.Missing);

                    Excel._Worksheet sheet = (Excel._Worksheet)app.Workbooks[1].Worksheets.Add(
                        Type.Missing, Type.Missing, Type.Missing, Type.Missing
                        );

                    sheet.Paste(Type.Missing, Type.Missing);
                }
            }
        }
Beispiel #3
0
        public void filterDummyPriceValues()
        {
            xlAppInvalidOptions         = new Excel.Application();
            xlAppInvalidOptions.Visible = true;

            xlApp         = new Excel.Application();
            xlApp.Visible = true;
            try
            {
                xlWorkbook = xlApp.Workbooks.Open(@"C:\Users\U_jain\Documents\Visual Studio 2013\Projects\InvalidOptionsSheet.xlsx");
                xlWorkbookInvalidOptions = xlAppInvalidOptions.Workbooks.Add(); // Open(@"C:\Users\U_jain\Documents\Visual Studio 2013\Projects\InvalidOptionsSheet.xlsx");
            }
            catch (Exception e)
            {
                MessageBox.Show("Error in opening excel file!");
            }

            try
            {
                xlWorksheet = xlWorkbook.Sheets[1];
                xlWorksheetInvalidOptions = xlWorkbookInvalidOptions.Sheets[1];
            }
            catch (Exception e)
            {
                MessageBox.Show("Expected worksheet not found!");
            }

            xlRangeInvalidOptions = xlWorksheetInvalidOptions.UsedRange;
            xlRange = xlWorksheet.UsedRange;


            Excel.Range originalSheetRange = xlWorksheet.UsedRange;
            xlWorksheet.ListObjects.AddEx(Excel.XlListObjectSourceType.xlSrcRange, xlWorksheet.UsedRange, System.Type.Missing, Excel.XlYesNoGuess.xlYes).Name = "OptionPrices";
            xlWorksheet.ListObjects["OptionPrices"].Range.AutoFilter(21, dummyPricesStrArray, Excel.XlAutoFilterOperator.xlFilterValues);
            Excel.Range invalidOptionsRange = originalSheetRange.SpecialCells(Excel.XlCellType.xlCellTypeVisible);

            xlRange = xlWorksheet.UsedRange;
            xlRange.Copy(Type.Missing);
            xlRangeInvalidOptions = xlWorksheetInvalidOptions.Cells[1, 1];
            xlRangeInvalidOptions.Select();
            xlWorksheetInvalidOptions.Paste(Type.Missing, Type.Missing);

            xlWorksheetInvalidOptions.SaveAs(@"C:\Users\U_jain\Documents\Visual Studio 2013\Projects\InvalidOptionsDummyPriceValues.xlsx");
            xlWorkbookInvalidOptions.Close(0);
            xlAppInvalidOptions.Quit();
            xlWorkbook.Close(0);
            xlApp.Quit();

            openOriginalWorkbook();
        }
Beispiel #4
0
        public void filterDefaultStatusFalse()
        {
            Excel.Range originalSheetRange = xlWorksheet.UsedRange;
            xlWorksheet.ListObjects.AddEx(Excel.XlListObjectSourceType.xlSrcRange, xlWorksheet.UsedRange, System.Type.Missing, Excel.XlYesNoGuess.xlYes).Name = "DefaultStatus";
            xlWorksheet.ListObjects["DefaultStatus"].Range.AutoFilter(13, new string[] { "FALSE" }, Excel.XlAutoFilterOperator.xlFilterValues);

            xlRange = xlWorksheet.UsedRange;
            xlRange.Copy(Type.Missing);


            xlAppInvalidOptions         = new Excel.Application();
            xlAppInvalidOptions.Visible = true;
            try
            {
                xlWorkbookInvalidOptions = xlAppInvalidOptions.Workbooks.Add(); //Open( @"C:\Users\U_jain\Documents\Visual Studio 2013\Projects\InvalidOptionsSheet.xlsx", false);
            }
            catch (Exception e)
            {
                MessageBox.Show("Error in opening excel file!");
            }

            try
            {
                xlWorksheetInvalidOptions = xlWorkbookInvalidOptions.Sheets[1];
                //xlWorkbookInvalidOptions.SaveAs(@"C:\Users\U_jain\Documents\Visual Studio 2013\Projects\InvalidOptionsSheet.xlsx");
            }
            catch (Exception e)
            {
                MessageBox.Show("Expected worksheet not found!");
            }

            xlRangeInvalidOptions = xlWorksheetInvalidOptions.Cells[1, 1];

            xlRangeInvalidOptions.Select();
            xlWorksheetInvalidOptions.Paste(Type.Missing, Type.Missing);

            xlWorkbookInvalidOptions.SaveAs(@"C:\Users\U_jain\Documents\Visual Studio 2013\Projects\InvalidOptionsSheet.xlsx");
            xlWorkbookInvalidOptions.Close(0);
            xlAppInvalidOptions.Quit();
            xlWorkbook.Close(0);
            xlApp.Quit();
            filterSalesMediaCodeB();
        }
Beispiel #5
0
        public void SetImage(int Pi_Row, int Pi_Col, Image Po_Image)
        {
            Excel.Range Le_Range = null;
            try
            {
                Clipboard.SetDataObject(Po_Image);

                Le_Range = Mws_Sheet.get_Range(Mws_Sheet.Cells[Pi_Row, Pi_Col] as Excel.Range, Mws_Sheet.Cells[Pi_Row, Pi_Col] as Excel.Range);
                Mws_Sheet.Paste(Le_Range, Po_Image);
                //Le_Range.Select();
                //Mws_Sheet.Paste(Missing.Value, Missing.Value);
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                if (Le_Range != null)
                {
                    Marshal.ReleaseComObject(Le_Range);
                }
            }
        }
Beispiel #6
0
        public static void Export2Xls(DataTable data, string filename, bool exportHeader = true)
        {
            if (System.IO.File.Exists(filename))
            {
                System.IO.File.Delete(filename);
            }

            Excel._Application xlsApp   = null;
            Excel._Workbook    xlsBook  = null;
            Excel._Worksheet   xstSheet = null;
            try
            {
                xlsApp = new Excel.ApplicationClass();

                xlsBook  = xlsApp.Workbooks.Add();
                xstSheet = (Excel._Worksheet)xlsBook.Worksheets[1];

                var buffer = new StringBuilder();
                if (exportHeader)
                {
                    // Excel中列与列之间按照Tab隔开
                    foreach (DataColumn col in data.Columns)
                    {
                        buffer.Append(col.ColumnName + "\t");
                    }

                    buffer.AppendLine();
                }
                foreach (DataRow row in data.Rows)
                {
                    foreach (DataColumn col in data.Columns)
                    {
                        buffer.Append(row[col].ToString() + "\t");
                    }

                    buffer.AppendLine();
                }
                System.Windows.Forms.Clipboard.SetDataObject("");
                // 放入剪切板
                System.Windows.Forms.Clipboard.SetDataObject(buffer.ToString());
                var range = (Excel.Range)xstSheet.Cells[1, 1];
                range.Select();
                xstSheet.Paste();
                // 清空剪切板
                System.Windows.Forms.Clipboard.SetDataObject("");

                xstSheet.SaveAs(filename);
            }
            finally
            {
                if (xlsBook != null)
                {
                    xlsBook.Close();
                }

                if (xlsApp != null)
                {
                    xlsApp.Quit();
                }

                // finally里清空Com对象
                Marshal.ReleaseComObject(xlsApp);
                Marshal.ReleaseComObject(xlsBook);
                Marshal.ReleaseComObject(xstSheet);

                xstSheet = null;
                xlsBook  = null;
                xlsApp   = null;
                MessageBox.Show("Save it successfully!");
            }
        }
Beispiel #7
0
        public void CreateSectionReport()
        {
            Report.XL.Visible     = false;
            Report.XL.UserControl = false;
            Microsoft.Office.Interop.Excel._Workbook  oWB    = Report.CreateWorkBook();
            Microsoft.Office.Interop.Excel._Worksheet oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet;

            //string strTrace = string.Format("preamble {0}", DateTime.Now.TimeOfDay);
            //System.Diagnostics.Trace.WriteLine(strTrace);
            string strReportName = "Section Detail Report";

            Report.SheetPageSetup(oSheet, strReportName, 50d, 20d, 10d, "Network: " + m_strNetworkName, DateTime.Now.ToLongDateString(), "Page &P", 1);
            //oSheet.PageSetup.RightFooter = "Network: " + m_strNetworkName;
            //oSheet.PageSetup.LeftFooter = DateTime.Now.ToLongDateString();
            //oSheet.PageSetup.CenterFooter = "Page &P";
            //oSheet.PageSetup.FirstPageNumber = 1;
            //oSheet.PageSetup.LeftMargin = 50d;
            //oSheet.PageSetup.RightMargin = 20d;
            //oSheet.Columns.Font.Size = 10;

            object  oEndCell      = new object();
            DataSet dsPage        = null;
            DataSet dsGroupNames  = null;
            DataSet dsGroupDetail = null;

            try
            {
                dsPage        = DBOp.QueryPageHeader(strReportName);
                dsGroupNames  = DBOp.QueryAttributeGroupNames();
                dsGroupDetail = DBOp.QueryAttributeByGroup();
            }
            catch (Exception e)
            {
                throw e;
            }

            int nSize = m_nMaxYear - m_nMinYear + 2;

            nSize = nSize < 1? 1: nSize;

            // Set up column header once, for multiple uses
            object[] oColumnHeader = new object[nSize];

            oColumnHeader[0] = "ATTRIBUTE_";
            int currentYear = m_nMinYear;

            for (int i = 1; i < nSize; i++, currentYear++)
            {
                oColumnHeader[i] = currentYear.ToString();
            }

            string[] strCols = new string[m_ds.Tables[0].Columns.Count];
            int      idx     = 0;

            foreach (DataColumn dataColumn in m_ds.Tables[0].Columns)
            {
                strCols[idx] = dataColumn.ColumnName.ToString();
                idx++;
            }
            List <string> subList = new List <string>();

            Cursor c = Cursor.Current;

            Cursor.Current = new Cursor(Cursors.WaitCursor.Handle);

            DataRow drPage        = dsPage.Tables[0].Rows[0];
            string  strMajorTitle = drPage["phText"].ToString();

            drPage = dsPage.Tables[0].Rows[2];
            string strMinorTitle = drPage["phText"].ToString();
            //if (strMinorTitle.IndexOf("@1") > 0) strMinorTitle = strMinorTitle.Replace("@1", m_strNetworkName);
            //if (strMinorTitle.IndexOf("@2") > 0) strMinorTitle = strMinorTitle.Replace("@2", m_ds.Tables[0].Rows[0]["FACILITY"].ToString() + ", Section: " + m_ds.Tables[0].Rows[0]["SECTION"].ToString());

            int sumCol = 0, numSpacers = dsGroupNames.Tables[0].Rows.Count, numColHeaders = 1;

            sumCol = dsGroupDetail.Tables[0].Rows.Count; // number of detail rows

            // calculate number of array rows for report
            int aryRows = ((dsPage.Tables[0].Rows.Count + 1 + dsGroupNames.Tables[0].Rows.Count + sumCol + (dsGroupNames.Tables[0].Rows.Count * numColHeaders) + numSpacers) * m_ds.Tables[0].Rows.Count);

            int aryCurrentRow = 0;

            object[,] oData1 = new object[aryRows, nSize];
            Report.ClearDataArray(ref oData1);

            //string strTrace = string.Format("start LOOP {0}", DateTime.Now.TimeOfDay);
            //System.Diagnostics.Trace.WriteLine(strTrace);
            string strFilter;

            #region Load data array
            //strTrace = string.Format("/tData start {0}", DateTime.Now.TimeOfDay);
            //System.Diagnostics.Trace.WriteLine(strTrace);
            foreach (DataRow drdata in m_ds.Tables[0].Rows)
            {
                // Page Header
                strMinorTitle = drPage["phText"].ToString();
                if (strMinorTitle.IndexOf("@1") > 0)
                {
                    strMinorTitle = strMinorTitle.Replace("@1", m_strNetworkName);
                }
                if (strMinorTitle.IndexOf("@2") > 0)
                {
                    strMinorTitle = strMinorTitle.Replace("@2", drdata["FACILITY"].ToString() + ", Section: " + drdata["SECTION"].ToString());
                }
                oData1[aryCurrentRow, 0] = "";
                oData1[aryCurrentRow, 1] = strMajorTitle;
                aryCurrentRow++;
                oData1[aryCurrentRow, 0] = "";
                aryCurrentRow++;
                oData1[aryCurrentRow, 0] = "";
                oData1[aryCurrentRow, 1] = strMinorTitle;

                aryCurrentRow += 2;
                // Load Group Header
                foreach (DataRow dr1 in dsGroupNames.Tables[0].Rows)
                {
                    oData1[aryCurrentRow, 0] = dr1["GROUPING"].ToString();
                    aryCurrentRow++;
                    // Load Column Header
                    for (int i = 0; i < nSize; i++)
                    {
                        oData1[aryCurrentRow, i] = oColumnHeader[i];
                    }
                    aryCurrentRow++;
                    //Load Detail Data
                    strFilter = "GROUPING = '" + dr1["GROUPING"].ToString() + "'";
                    foreach (DataRow drDetail in dsGroupDetail.Tables[0].Select(strFilter))
                    {
                        // Set the Row Label text
                        oData1[aryCurrentRow, 0] = drDetail["ATTRIBUTE_"].ToString();
                        // Load the Data values
                        subList = columnsFromArrayStartingWith(strCols, drDetail["ATTRIBUTE_"].ToString());
                        PopulateGroupArrayRowAt(ref oData1, subList, drdata, aryCurrentRow);
                        aryCurrentRow++;
                    }
                    aryCurrentRow++;
                }
            }
            //strTrace = string.Format("/tData stop {0}", DateTime.Now.TimeOfDay);
            //System.Diagnostics.Trace.WriteLine(strTrace);
            #endregion

            oEndCell = "A1";
            oEndCell = Report.WriteObjectArrayToExcel(oData1, oSheet, oEndCell, false);
            Range         oR        = oSheet.get_Range("A1", "A1");
            String        strWork   = "";
            List <string> rangeList = new List <string>();
            int           sheetRow;

            #region set column widths
            //strTrace = string.Format("/tColWidth start {0}", DateTime.Now.TimeOfDay);
            //System.Diagnostics.Trace.WriteLine(strTrace);
            sheetRow       = 1;
            oR             = oSheet.get_Range("A1:A1", Missing.Value);
            oR.ColumnWidth = 16;
            Report.BuildRange(ref strWork, ref rangeList, sheetRow, 'B', nSize - 1);
            Report.EndRangeList(ref strWork, ref rangeList);
            oR             = oSheet.get_Range(rangeList.First(), Missing.Value);
            oR.ColumnWidth = 9;
            rangeList.Clear();
            strWork = "";
            //strTrace = string.Format("/tColWidth stop {0}", DateTime.Now.TimeOfDay);
            //System.Diagnostics.Trace.WriteLine(strTrace);
            #endregion

            #region ranges helper Array
            // Build a rows array used for building ranges, formatting report, etc.
            int [] clearRows = new int[dsGroupNames.Tables[0].Rows.Count + 1];
            aryCurrentRow = 1;
            clearRows[0]  = dsPage.Tables[0].Rows.Count + 1;
            foreach (DataRow drGrouping in dsGroupNames.Tables[0].Rows)
            {
                strFilter = "grouping = '" + drGrouping["grouping"].ToString() + "'";

                int filterCount = 0;
                foreach (DataRow drDetail in dsGroupDetail.Tables[0].Select(strFilter))
                {
                    filterCount++;
                }
                int cc = clearRows[aryCurrentRow - 1];
                clearRows[aryCurrentRow++] = cc + filterCount + 3;
            }
            #endregion

            #region clear gridlines
            //strTrace = string.Format("/tGridlines start {0}", DateTime.Now.TimeOfDay);
            //System.Diagnostics.Trace.WriteLine(strTrace);
            sheetRow = 0;

            // Clear gridlines between data group, pages
            for (int i = 0; i < m_ds.Tables[0].Rows.Count; i++)
            {
                for (int clearCount = 0; clearCount <= clearRows.GetUpperBound(0); clearCount++)
                {
                    if (clearCount == 0)
                    {
                        sheetRow += clearRows[0];
                    }
                    else
                    {
                        sheetRow += clearRows[clearCount] - clearRows[clearCount - 1];
                    }

                    if (clearCount == 0)
                    {
                        strWork += "A" + (sheetRow - 3).ToString() + ":I" + sheetRow.ToString() + ",";
                    }
                    else
                    {
                        Report.BuildRange(ref strWork, ref rangeList, sheetRow, 'A', nSize - 1);
                    }
                }
            }
            // Finish the range List
            Report.EndRangeList(ref strWork, ref rangeList);
            foreach (string strRange in rangeList)
            {
                oR = oSheet.get_Range(strRange, Missing.Value);
                oR.ClearFormats();
            }
            rangeList.Clear();
            strWork = "";
            //strTrace = string.Format("/tGridline stop {0}", DateTime.Now.TimeOfDay);
            //System.Diagnostics.Trace.WriteLine(strTrace);
            #endregion

            #region pageBreaks
            // Add page breaks
            //strTrace = string.Format("/tPgBreak start {0}", DateTime.Now.TimeOfDay);
            //System.Diagnostics.Trace.WriteLine(strTrace);
            sheetRow = clearRows[clearRows.GetUpperBound(0)];
            for (int i = 0; i < m_ds.Tables[0].Rows.Count; i++)
            {
                oR           = oSheet.get_Range("A" + sheetRow.ToString(), Missing.Value);
                oR.PageBreak = (int)XlPageBreak.xlPageBreakManual;
                sheetRow    += clearRows[clearRows.GetUpperBound(0)];
            }
            //strTrace = string.Format("/tPgBreak stop {0}", DateTime.Now.TimeOfDay);
            //System.Diagnostics.Trace.WriteLine(strTrace);
            #endregion

            #region pageHeader
            // Format page header for each page in report
            //strTrace = string.Format("/tPgHeader start {0}", DateTime.Now.TimeOfDay);
            //System.Diagnostics.Trace.WriteLine(strTrace);
            sheetRow = 1;
            idx      = 1;
            foreach (DataRow drPgHdr in dsPage.Tables[0].Rows)
            {
                for (int i = 0; i < m_ds.Tables[0].Rows.Count; i++)
                {
                    //Report.BuildRange(ref strWork, ref rangeList, sheetRow, 'B', nSize - 2);
                    Report.BuildRange(ref strWork, ref rangeList, sheetRow, 'B', 7);
                    sheetRow += clearRows[clearRows.GetUpperBound(0)];
                }
                // Finish the range List
                Report.EndRangeList(ref strWork, ref rangeList);
                foreach (string strRange in rangeList)
                {
                    Report.FormatHeaders(oR, drPgHdr, oSheet, "ph", strRange);
                }
                rangeList.Clear();
                sheetRow = ++idx; // point to the next pageheader line
                strWork  = "";
            }

            //strTrace = string.Format("/tPgHeader stop {0}", DateTime.Now.TimeOfDay);
            //System.Diagnostics.Trace.WriteLine(strTrace);
            #endregion

            #region pageImage
            //strTrace = string.Format("/tImage start {0}", DateTime.Now.TimeOfDay);
            //System.Diagnostics.Trace.WriteLine(strTrace);
            //string strPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\RoadCare Projects\\" + drPage["reportGraphicFile"].ToString();
            string strPath = ".\\" + drPage["reportGraphicFile"].ToString();
            if (strPath != ".\\")
            {
                Image img = Image.FromFile(strPath);
                System.Windows.Forms.Clipboard.SetDataObject(img, true);
                sheetRow = 1;
                for (int i = 0; i < m_ds.Tables[0].Rows.Count; i++)
                {
                    oR = oSheet.get_Range("A" + sheetRow.ToString(), Missing.Value);
                    oSheet.Paste(oR, img);
                    sheetRow += (clearRows[clearRows.GetUpperBound(0)]);
                }
            }
            //strTrace = string.Format("/tImage stop {0}", DateTime.Now.TimeOfDay);
            //System.Diagnostics.Trace.WriteLine(strTrace);
            #endregion

            #region groupHeaders
            // Format group headers for each page in report, programmed for single line group header with multiple group headers per page
            //strTrace = string.Format("/tGroupHeader start {0}", DateTime.Now.TimeOfDay);
            //System.Diagnostics.Trace.WriteLine(strTrace);
            aryCurrentRow = 0;
            sheetRow      = clearRows[0] + 1;
            for (int i = 0; i < m_ds.Tables[0].Rows.Count; i++)
            {
                aryCurrentRow = 0;
                foreach (DataRow drGroupName in dsGroupNames.Tables[0].Rows)
                {
                    Report.BuildRange(ref strWork, ref rangeList, sheetRow, 'A', nSize - 1);
                    aryCurrentRow++;
                    sheetRow += clearRows[aryCurrentRow] - clearRows[aryCurrentRow - 1];
                }
                sheetRow += clearRows[0];
            }
            // Finish the range List
            Report.EndRangeList(ref strWork, ref rangeList);
            foreach (string strRange in rangeList)
            {
                DataRow drGroupHdr = dsPage.Tables[0].Rows[0];
                Report.FormatHeaders(oR, drGroupHdr, oSheet, "gh", strRange);
            }
            rangeList.Clear();
            strWork = "";
            //strTrace = string.Format("/tGroupHeader stop {0}", DateTime.Now.TimeOfDay);
            //System.Diagnostics.Trace.WriteLine(strTrace);
            #endregion

            #region columnHeaders
            // Build the range list for the column headers for each page in report
            //strTrace = string.Format("/tColHeader start {0}", DateTime.Now.TimeOfDay);
            //System.Diagnostics.Trace.WriteLine(strTrace);
            aryCurrentRow = 0;
            sheetRow      = clearRows[0] + 2;
            for (int i = 0; i < m_ds.Tables[0].Rows.Count; i++)
            {
                aryCurrentRow = 0;
                foreach (DataRow dr1 in dsGroupNames.Tables[0].Rows) // column header is repeated for each group
                {
                    Report.BuildRange(ref strWork, ref rangeList, sheetRow, 'A', nSize - 1);
                    aryCurrentRow++;
                    sheetRow += clearRows[aryCurrentRow] - clearRows[aryCurrentRow - 1];
                }
                sheetRow += clearRows[0];
            }
            // Finish the range List
            Report.EndRangeList(ref strWork, ref rangeList);

            DataRow drCol = dsPage.Tables[0].Rows[0]; // only one row
            foreach (string strRange in rangeList)
            {
                Report.FormatHeaders(oR, drCol, oSheet, "ch", strRange);
            }
            //strTrace = string.Format("/tColHeader stop {0}", DateTime.Now.TimeOfDay);
            //System.Diagnostics.Trace.WriteLine(strTrace);
            #endregion

            //strTrace = string.Format("stop LOOP {0}", DateTime.Now.TimeOfDay);
            //System.Diagnostics.Trace.WriteLine(strTrace);
            Report.XL.Visible     = true;
            Report.XL.UserControl = true;
        } // end createsectionreport
Beispiel #8
0
        private void ToExcel(string fileName)
        {
            int rowSuccess = 0;
            int row = 0, column = 0;

            try
            {
                string filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), fileName + DateTime.Now.ToString("dd-MM-yyyy-HH.mm.ss") + ".xlsx");
                // creating Excel Application
                Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();
                // creating new WorkBook within Excel application
                Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);
                // creating new Excelsheet in workbook
                Microsoft.Office.Interop.Excel._Worksheet worksheet = null;
                // see the excel sheet behind the program
                app.Visible = false;
                // get the reference of first sheet. By default its name is Sheet1.
                // store its reference to worksheet
                worksheet = workbook.Sheets["Sheet1"];
                worksheet = workbook.ActiveSheet;
                // changing the name of active sheet
                worksheet.Name = "Sheet1";
                // storing header part in Excel
                //var columnHeadingsRange = worksheet.Range[worksheet.Cells[1, 4], worksheet.Cells[1, 8]];
                //columnHeadingsRange.Interior.Color = XlRgbColor.rgbOrange;
                Bitmap bmp;
                byte[] imgData;
                //using (var ms = new MemoryStream(imgData))
                //{
                //    bmp = new Bitmap(ms);
                //    System.Windows.Forms.Clipboard.SetDataObject(bmp, false);
                //    var rng = worksheet.Cells[2,1];
                //    worksheet.Paste(rng, bmp);
                //}
                int columnHeader = 0;

                for (int i = 0; i < dtProductNew.Columns.Count; i++)
                {
                    if (dtProductNew.Columns[i].ColumnName == "Barcode")
                    {
                        columnHeader += 1;
                    }
                    worksheet.Cells[1, columnHeader + 1] = dtProductNew.Columns[i].ToString();
                    columnHeader++;
                }

                // storing Each row and column value to excel sheet
                for (int i = 0; i < dtProductNew.Rows.Count; i++)
                {
                    rowSuccess++;
                    for (int j = 0; j < dtProductNew.Columns.Count; j++)
                    {
                        if (dtProductNew.Columns[j].ColumnName == "Barcode")
                        {
                            imgData = (byte[])dtProductNew.Rows[i][j];
                            using (var ms = new MemoryStream(imgData))
                            {
                                bmp = new Bitmap(ms);
                                System.Windows.Forms.Clipboard.SetDataObject(bmp, false);
                                var rng = worksheet.Cells[row + 2, column + 1];
                                worksheet.Paste(rng, bmp);
                                column += 2;
                            }
                        }
                        else
                        {
                            worksheet.Cells[row + 2, column + 1] = dtProductNew.Rows[i][j].ToString();
                            //row++;
                            column++;
                        }
                    }
                    column = 0;
                    row   += 5;
                }
                // save the application
                workbook.SaveAs(filePath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                workbook.Close();
                // Exit from the application
                app.Quit();
            }

            catch (Exception ex)
            {
                MessageBox.Show("NOT SUCCESS" + rowSuccess);
            }
        }