将datagridview导出为ex​​cel导出的数据时没有列的标题文本 [英] When export datagridview to excel data exported without header text of column

查看:106
本文介绍了将datagridview导出为ex​​cel导出的数据时没有列的标题文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题



导出datagridview以导出没有列标题文本的Excel数据。



Detais



当导出datagridview以优于导出成功但所有数据导出时没有标题



所以如何解决这个问题。



Problem

Export datagridview to excel data exported without Header text of column .

Detais

when export datagridview to excel it export success but all data exported without header

so How to solve this problem .

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");
        

        }





我的尝试:





What I have tried:

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

推荐答案

你在写第二个循环的第一行,这就是为什么标题不可用

试试这个

you are over writing the first row in the second loop, thats why the header is not available
try this
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;
              }
          }


你试过这个吗?



Have you tried this?

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();
        }





希望有帮助



Hope that helps


这篇关于将datagridview导出为ex​​cel导出的数据时没有列的标题文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆