【问题标题】:Export datagridview to excel sheet rows and headers in C# windows form在 C# windows 窗体中将 datagridview 导出到 excel 工作表行和标题
【发布时间】:2018-04-11 17:36:26
【问题描述】:

我需要帮助从 datagridview 列和标题导出数据,下面我将添加我用于从 datagridview 导出到 excel 的代码,它可以将所有数据从 datagridview 发送到 excel 表唯一问题是标题没有被发送到工作表。你们能帮忙解决我需要在此处添加的那部分内容,以便标题也显示在工作表中。

private void ImportDataGridViewDataToExcelSheet()
{

            string userID = WindowsIdentity.GetCurrent().Name;
            var userName = userID.Remove(0, 15);
            //test.Text = userName;
            //dataGridView_ShowAllData
            Excel.Application xlApp;
            Excel.Workbook xlWorkBook;
            Excel.Worksheet xlWorkSheet;
            object misValue = System.Reflection.Missing.Value;

            Int16 i, j;

            xlApp = new Excel.Application();
            xlWorkBook = xlApp.Workbooks.Add(misValue);

            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

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

            xlWorkBook.SaveAs(@"C:\Users\" + userName + "\\Downloads\\ReportView.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);
        }

        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 toolStripMenuItem_ImportDGVToExcel_Click(object sender, EventArgs e)
        {
            ImportDataGridViewDataToExcelSheet();
        }

【问题讨论】:

  • 没关系,我已经解决了,谢谢。
  • 如果您解决了问题,请发布您自己的答案 - 或删除问题。不要让它保持在当前状态
  • 没问题,我会提供解决方案,谢谢。

标签: excel winforms c#-4.0 datagridview


【解决方案1】:
 private void ImportDataGridViewDataToExcelSheet()
        {

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


            for (int x = 1; x < dataGridView_ShowAllData.Columns.Count + 1; x++)
            {
                xlWorkSheet.Cells[1, x] = dataGridView_ShowAllData.Columns[x - 1].HeaderText;
            }

            for (int i = 0; i < dataGridView_ShowAllData.Rows.Count; i++)
            {
                for (int j = 0; j < dataGridView_ShowAllData.Columns.Count; j++)
                {                  
                    xlWorkSheet.Cells[i + 2, j + 1] = dataGridView_ShowAllData.Rows[i].Cells[j].Value.ToString();                                 
                }
            }          

            var saveFileDialoge = new SaveFileDialog();
            saveFileDialoge.FileName = "ReportView";
            saveFileDialoge.DefaultExt = ".xlsx";
            if (saveFileDialoge.ShowDialog() == DialogResult.OK)
            {
                xlWorkBook.SaveAs(saveFileDialoge.FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
            }


            xlWorkBook.Close(true, misValue, misValue);
            xlApp.Quit();

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

        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 toolStripMenuItem_ImportDGVToExcel_Click(object sender, EventArgs e)
        {
            ImportDataGridViewDataToExcelSheet();
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多