michael nabil Ответов: 1

Почему не удается получить первую строку в datagridview C# результаты моего кода все данные, кроме первой строки ?


Почему не удается получить первую строку в datagridview c# результаты моего кода все данные, кроме первой строки ?
я хочу, чтобы скопировать текущие данные из набора данных или grideview на файлы, находящиеся в корневом каталоге диска C:\: через файл Excel

Что я уже пробовал:

private void ExportToExcel()
    {
        // Creating a Excel object.
        Microsoft.Office.Interop.Excel._Application excel = new Microsoft.Office.Interop.Excel.Application();
        Microsoft.Office.Interop.Excel._Workbook workbook = excel.Workbooks.Add(Type.Missing);
        Microsoft.Office.Interop.Excel._Worksheet worksheet = null;

        try
        {

            worksheet = workbook.ActiveSheet;

            worksheet.Name = "ExportedFromDatGrid";


            int cellRowIndex = 1;
            int cellColumnIndex = 1;

            //Loop through each row and read value from each column.
            for (int i = 0; i < dg1.Rows.Count  ; i++)
            {
                for (int j =0; j < dg1.Columns.Count -1; j++)
                {
                    // Excel index starts from 1,1. As first Row would have the Column headers, adding a condition check.
                    if (cellRowIndex == 1)
                    {
                        worksheet.Cells[cellRowIndex, cellColumnIndex] = dg1.Columns[j].HeaderText;
                    }
                    else
                    {
                        worksheet.Cells[cellRowIndex, cellColumnIndex] = dg1.Rows[i].Cells[j].Value.ToString();
                    }
                    cellColumnIndex++;
                }
                cellColumnIndex = 1;
                cellRowIndex++;
            }


            //Getting the location and file name of the excel to save from user.
            SaveFileDialog saveDialog = new SaveFileDialog();
            saveDialog.Filter = "Excel files (*.xlsx)|*.xlsx|All files (*.*)|*.*";
            saveDialog.FilterIndex = 2;

            if (saveDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                workbook.SaveAs(saveDialog.FileName);
                MessageBox.Show("Export Successful");
            }
        }
        catch (System.Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        finally
        {
            excel.Quit();
            workbook = null;
            excel = null;
        }
    }

благодарить

1 Ответов

Рейтинг:
12

Patrice T

Цитата:
Почему не удается получить первую строку в datagridview c# результаты моего кода все данные, кроме первой строки ?

Потому что это то, что вы запросили в своем коде. Вместо того чтобы печатать первую строку, вы печатаете заголовки.
Вам нужно распечатать заголовки перед обработкой строк.

Попробуй вот так:
private void ExportToExcel()
{
  // Creating a Excel object.
  Microsoft.Office.Interop.Excel._Application excel = new Microsoft.Office.Interop.Excel.Application();
  Microsoft.Office.Interop.Excel._Workbook workbook = excel.Workbooks.Add(Type.Missing);
  Microsoft.Office.Interop.Excel._Worksheet worksheet = null;

  try
  {

    worksheet = workbook.ActiveSheet;

    worksheet.Name = "ExportedFromDatGrid";


    int cellRowIndex = 1;
    int cellColumnIndex = 1;

    for (int j =0; j < dg1.Columns.Count -1; j++)
    {
      // Excel index starts from 1,1. As first Row would have the Column headers, adding a condition check.
      worksheet.Cells[cellRowIndex, cellColumnIndex] = dg1.Columns[j].HeaderText;
      cellColumnIndex++;
    }
    cellColumnIndex = 1;
    cellRowIndex++;
    //Loop through each row and read value from each column.
    for (int i = 0; i < dg1.Rows.Count  ; i++)
    {
      for (int j =0; j < dg1.Columns.Count -1; j++)
      {
        // Excel index starts from 1,1. As first Row would have the Column headers, adding a condition check.
        worksheet.Cells[cellRowIndex, cellColumnIndex] = dg1.Rows[i].Cells[j].Value.ToString();
        cellColumnIndex++;
      }
      cellColumnIndex = 1;
      cellRowIndex++;
    }


    //Getting the location and file name of the excel to save from user.
    SaveFileDialog saveDialog = new SaveFileDialog();
    saveDialog.Filter = "Excel files (*.xlsx)|*.xlsx|All files (*.*)|*.*";
    saveDialog.FilterIndex = 2;

    if (saveDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
      workbook.SaveAs(saveDialog.FileName);
      MessageBox.Show("Export Successful");
    }
  }
  catch (System.Exception ex)
  {
    MessageBox.Show(ex.Message);
  }
  finally
  {
    excel.Quit();
    workbook = null;
    excel = null;
  }
}


michael nabil

большое вам спасибо это работа