Quantcast
Channel: Windows Forms Data Controls and Databinding forum
Viewing all articles
Browse latest Browse all 2535

Write to Excel multiple sheet using late binding

$
0
0

Hi, 

Experts, I have following Code To add a Data Table To Work sheet ,

how can i make it suitable to add data to multiple sheet per table i.e. if i pass rather then a table a data set with n number of tables i want n nos of works sheets 

 private void WriteToExcel(ref System.Data.DataTable dtExcel)
        {

            if (dgvData.RowCount == 0)
            {
                MessageBox.Show("GridView is Empty.");
                return;
            }

            tlsStatus.Text = "Export To Excel Strats.... ";

            tlsStatus.ForeColor = System.Drawing.Color.DeepPink;

            prbExcelGen.Value = 0;
            prbExcelGen.Minimum = 0;
            prbExcelGen.Maximum = dgvData.RowCount;
            prbExcelGen.Step = 1;
            prbExcelGen.Refresh();
            object objApp_Late;
            object objBooks_Late;
            object objBook_Late;
            object objSheets_Late;
            object objSheet_Late;
            object objRange_Late;
            object[] Parameters;

            string[] headers = new string[dgvData .ColumnCount];
            string[] columns = new string[dgvData.ColumnCount];
            int i = 0;
            int c = 0;
            for (c = 0; c <= dgvData.ColumnCount - 1; c++)
            {
                headers[c] = dgvData.Rows[0].Cells[c].OwningColumn.Name.ToString();
                //Convert Cell Names To A,B,C...Z , 65+C=CHR(C)=>A WHEN C=0
                i = c + 65;
                columns[c] = Convert.ToString((char)i);
            }

            try
            {
                // Get the class type and instantiate Excel.
                Type objClassType;
                objClassType = Type.GetTypeFromProgID("Excel.Application");
                objApp_Late = Activator.CreateInstance(objClassType);
                //Get the workbooks collection.
                objBooks_Late = objApp_Late.GetType().InvokeMember("Workbooks",BindingFlags.GetProperty, null, objApp_Late, null);
                //Add a new workbook.
                objBook_Late = objBooks_Late.GetType().InvokeMember("Add",BindingFlags.InvokeMethod, null, objBooks_Late, null);
                //Get the worksheets collection.
                objSheets_Late = objBook_Late.GetType().InvokeMember("Worksheets",BindingFlags.GetProperty, null, objBook_Late, null);
                //Get the first worksheet.
                Parameters = new Object[1];
                Parameters[0] = 1; //san 27.4.15 @10.15am
                objSheet_Late = objSheets_Late.GetType().InvokeMember("Item",
                BindingFlags.GetProperty, null, objSheets_Late, Parameters);

                //san help taken from https://social.msdn.microsoft.com/Forums/windows/en-US/36340ada-e13b-41cb-a31d-fb76121aa0d2/c-exporting-text-file-to-excel-and-column-formatting-problem?forum=csharpgeneral

                //Get all cells on the sheet
                Object Range = objSheets_Late.GetType().InvokeMember("Cells", BindingFlags.GetProperty, null, objSheet_Late, null);
                Parameters = new Object[1];
                Parameters[0] = "@";// Set Thne Format To Text
                Range.GetType().InvokeMember("NumberFormat", BindingFlags.SetProperty, null, Range, Parameters);//..and format to text

                Object EntireColumn = Range.GetType().InvokeMember("EntireColumn", BindingFlags.GetProperty, null, Range, null);//get entire column property of Cells
                EntireColumn.GetType().InvokeMember("Autofit", BindingFlags.InvokeMethod, null, EntireColumn, null);//..in order to use Autofit on all contents
                Parameters = new Object[1];
                Parameters[0] = "1:1";
                //san

                //if (true)
                //{
                // Create the headers in the first row of the sheet

                for (c = 0; c <= dgvData.ColumnCount - 1; c++)
                {
                    //Get a range object that contains cell.
                    Parameters = new Object[2];
                    Parameters[0] = columns[c] + "1";
                    Parameters[1] = Missing.Value;
                    objRange_Late = objSheet_Late.GetType().InvokeMember("Range",
                    BindingFlags.GetProperty, null, objSheet_Late, Parameters);
                    //Write Headers in cell.
                    Parameters = new Object[1];
                    Parameters[0] = headers[c];
                    objRange_Late.GetType().InvokeMember("Value", BindingFlags.SetProperty,
                    null, objRange_Late, Parameters);
                }
                //}

                // Now add the data from the grid to the sheet starting in row 2

                for (i = 0; i < dgvData.RowCount - 1; i++)
                {
                    prbExcelGen.PerformStep();
                    prbExcelGen.Refresh();
                    for (c = 0; c <= dgvData.ColumnCount - 1; c++)
                    {


                        //Get a range object that contains cell.
                        Parameters = new Object[2];
                        Parameters[0] = columns[c] + Convert.ToString(i + 2);
                        Parameters[1] = Missing.Value;
                        objRange_Late = objSheet_Late.GetType().InvokeMember("Range",
                        BindingFlags.GetProperty, null, objSheet_Late, Parameters);
                        //Write Headers in cell.
                        Parameters = new Object[1];
                        Parameters[0] = dgvData.Rows[i].Cells[headers[c]].Value.ToString();
                        objRange_Late.GetType().InvokeMember("Value", BindingFlags.SetProperty,
                        null, objRange_Late, Parameters);
                        //if (i == 0)
                        //    BoldRow(i, c, (EXL._Worksheet)objSheet_Late);
                    }
                    tlsStatus.Text = "Exporting Records...." + i;
                }

                //Return control of Excel to the user.
                Parameters = new Object[1];
                Parameters[0] = true;
                tlsStatus.Text = "Exporting Completed.";
                objApp_Late.GetType().InvokeMember("Visible", BindingFlags.SetProperty,
                null, objApp_Late, Parameters);
                objApp_Late.GetType().InvokeMember("UserControl", BindingFlags.SetProperty,
                null, objApp_Late, Parameters);
                /*
                 * oWB.SaveAs(fileName, Excel.XlFileFormat.xlOpenXMLWorkbook,
                    missing, missing, missing, missing,
                    Excel.XlSaveAsAccessMode.xlNoChange,
                    missing, missing, missing, missing, missing);
                 */

                //oWB = (Microsoft.Office.Interop.Excel._Workbook)objBook_Late;
                //oWB.SaveAs("file", EXL.XlFileFormat.xlXMLSpreadsheet, Type.Missing, Type.Missing, Type.Missing, Type.Missing, EXL.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                //oWB.Save();
            }
            catch (Exception theException)
            {
                String errorMessage;
                errorMessage = "Error: ";
                errorMessage = String.Concat(errorMessage, theException.Message);
                errorMessage = String.Concat(errorMessage, " Line: ");
                errorMessage = String.Concat(errorMessage, theException.Source);
                MessageBox.Show(errorMessage);
            }
            finally
            {

            }



        }


Viewing all articles
Browse latest Browse all 2535

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>