Results 1 to 2 of 2

Thread: Export to Excel (Standalone application)

  1. #1

    Thread Starter
    Member
    Join Date
    Feb 2011
    Posts
    58

    Export to Excel (Standalone application)

    Hi Everyone,
    Can somebody please help me with this.
    I have this gridview and I have binded it properly,
    now I have a button and I want to export the data inside the datagrid to excel.
    I can do this in asp.net because the code is quite easy for the webform
    but I am having a hard time in C# and it is a standalone application
    I have googled it and found no step by step tutorial
    I hope someone can help me
    Thank you in advance.

  2. #2
    Lively Member
    Join Date
    Apr 2010
    Location
    York, Uk
    Posts
    103

    Re: Export to Excel (Standalone application)

    here is something i have used in the past and added into my code snippits, source unknown but try this:

    Code:
    #region Export to Excel
    /// <summary>
    /// Exports a passed datagridview to an Excel worksheet.
    /// If captions is true, grid headers will appear in row 1.
    /// Data will start in row 2.
    /// </summary>
    /// <param name="datagridview"></param>
    /// <param name="captions"></param>
    private void Export2Excel(DataGridView datagridview, bool captions)
    {
    object objApp_Late;
    object objBook_Late;
    object objBooks_Late;
    object objSheets_Late;
    object objSheet_Late;
    object objRange_Late;
    object[] Parameters;
    string[] headers = new string[datagridview.ColumnCount-1];
    string[] columns = new string[datagridview.ColumnCount-1];
    
    int i = 0;
    int c = 0;
    for (c = 0; c < datagridview.ColumnCount - 1; c++)
    {
    headers[c] = datagridview.Rows[0].Cells[c].OwningColumn.Name.ToString();
    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;
    objSheet_Late = objSheets_Late.GetType().InvokeMember("Item",
    BindingFlags.GetProperty, null, objSheets_Late, Parameters);
    
    if (captions)
    {
    // Create the headers in the first row of the sheet
    for (c = 0; c < datagridview.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 < datagridview.RowCount; i++)
    {
    for (c = 0; c < datagridview.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] = datagridview.Rows[i].Cells[headers[c]].Value.ToString();
    objRange_Late.GetType().InvokeMember("Value", BindingFlags.SetProperty,
    null, objRange_Late, Parameters);
    }
    }
    
    //Return control of Excel to the user.
    Parameters = new Object[1];
    Parameters[0] = true;
    objApp_Late.GetType().InvokeMember("Visible", BindingFlags.SetProperty,
    null, objApp_Late, Parameters);
    objApp_Late.GetType().InvokeMember("UserControl", BindingFlags.SetProperty,
    null, objApp_Late, Parameters);
    }
    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, "Error");
    }
    }
    #endregion

    ps includes system.reflection


    pps read this:

    http://www.codeproject.com/KB/dotnet...select=1357703
    Last edited by Joshwah!; May 24th, 2011 at 06:18 AM. Reason: includes!

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width