ahmed_sa Ответов: 2

При экспорте datagridview в excel данные экспортируются без текста заголовка столбца


Проблема

Экспорт datagridview в excel данные экспортируются без текста заголовка столбца .

Детали

при экспорте datagridview в excel он успешно экспортирует но все данные экспортируются без заголовка

Итак, как решить эту проблему .

private void releaseObject(object obj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                obj = null;
            }
            catch (Exception ex)
            {
                obj = null;
                MessageBox.Show("Exception Occured while releasing object " + ex.ToString());
            }
            finally
            {
                GC.Collect();
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {

            Excel.Application xlApp;
            Excel.Workbook xlWorkBook;
            Excel.Worksheet xlWorkSheet;
            object misValue = System.Reflection.Missing.Value;

            xlApp = new Excel.Application();
            xlWorkBook = xlApp.Workbooks.Add(misValue);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
            int i = 0;
            int j = 0;
            for ( i = 1; i < ScfGrid.Columns.Count + 1; i++)
            {
                if (ScfGrid.Columns[i - 1].Visible)
                {
                    xlWorkSheet.Cells[1, i] = ScfGrid.Columns[i - 1].HeaderText;
                }
            }
            for (i = 0; i <= ScfGrid.RowCount - 1; i++)
            {
                for (j = 0; j <= ScfGrid.ColumnCount - 1; j++)
                {
                    DataGridViewCell cell = ScfGrid[j, i];
                    xlWorkSheet.Cells[i + 1, j + 1] = cell.Value;
                }
            }

            xlWorkBook.SaveAs("D:\\ahmed.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
            xlWorkBook.Close(true, misValue, misValue);
            xlApp.Quit();

            releaseObject(xlWorkSheet);
            releaseObject(xlWorkBook);
            releaseObject(xlApp);

            MessageBox.Show("Excel file created , you can find the file c:\\csharp.net-informations.xls");
        

        }


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

when export datagridview to excel data exported without Header text of column

2 Ответов

Рейтинг:
2

Karthik_Mahalingam

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

for (i = 0; i <= ScfGrid.RowCount - 1; i++)
          {
              for (j = 0; j <= ScfGrid.ColumnCount - 1; j++)
              {
                  DataGridViewCell cell = ScfGrid[j, i];
                  xlWorkSheet.Cells[i + 2, j + 1] = cell.Value;
              }
          }


Рейтинг:
2

AzureAWS

Вы пробовали это сделать?

protected void ExportToExcel(DataTable dataTable, bool exportMode, string fileName)
        {
            StringWriter stringWrite = new StringWriter();
            HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
            GridView gv = new GridView();
            gv.ShowHeader = false; //Removes Header
            gv.DataSource = dataTable;
            gv.DataBind();

            for (int I = 0; I < dataTable.Rows.Count; I++)
            {
                for (int iCol = 0; iCol < dataTable.Columns.Count; iCol++)
                {
                    if (dataTable.Rows[I][iCol].ToString().Length < 256)
                    {
                        gv.Rows[I].Cells[Convert.ToInt32(iCol)].Attributes.Add("class", "text");
                    }
                }
            }

            dataTable = null;

            if (gv.Rows.Count == 0)
            {
                gv.ShowHeaderWhenEmpty = true;
                gv.EmptyDataText = "No Data !"
            }
            else
            {
                Response.Clear();
                Response.Charset = "utf-8";
                Response.ContentType = "application/vnd.ms-excel";

                if (exportMode)
                {
                    Response.AddHeader("Content-Disposition", "attachment;filename=\"" + fileName.Replace(" ", "_") + "\"");
                }

                gv.RenderControl(htmlWrite);

                Response.Write(stringWrite.ToString());
                Response.End();
            }

            htmlWrite.Dispose();
            stringWrite.Dispose();
            gv.Dispose();
        }


Надеюсь, это поможет


ahmed_sa

извините я использую форму windows а не веб форму
не могли бы вы, пожалуйста, изменить функцию выше для формы windows, если это возможно