C# 转换为excel时缺少列标题

C# 转换为excel时缺少列标题,c#,excel,datagridviewcolumn,C#,Excel,Datagridviewcolumn,将datagridview数据转换为excel后,我缺少一个列标题。在不同的指南中尝试了一些代码,但仍然没有得到标题我是否遗漏了任何东西 private void convert_Click(object sender, EventArgs e) { Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application(); Mic

将datagridview数据转换为excel后,我缺少一个列标题。在不同的指南中尝试了一些代码,但仍然没有得到标题我是否遗漏了任何东西

private void convert_Click(object sender, EventArgs e)
    {


        Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
        Microsoft.Office.Interop.Excel.Workbook workbook = app.Workbooks.Add(Type.Missing);
        Microsoft.Office.Interop.Excel.Worksheet worksheet = null;
        worksheet = workbook.Sheets["Sheet1"];
        worksheet = workbook.ActiveSheet;
        worksheet.Name = "Unmatched";
        for (int i = 1; i < dataGridView2.Columns.Count + 1; i++)
        {
            if (dataGridView2.Columns[i - 1].Visible)
            {
                worksheet.Cells[i, 1] = dataGridView2.Columns[i - 1].HeaderText;
            }
        }
        for (int i = 0; i < dataGridView2.Rows.Count; i++)
        {
            for (int j = 0; j < dataGridView2.Columns.Count; j++)
            {
                if (dataGridView2.Rows[i].Cells[j].Value != null)
                {
                    worksheet.Cells[i + 2, j + 1] = dataGridView2.Rows[i].Cells[j].Value.ToString();
                }
            }
        }
        var saveFileDialog = new SaveFileDialog();
        saveFileDialog.FileName = "report";
        saveFileDialog.DefaultExt = ".xlsx";
        if (saveFileDialog.ShowDialog() == DialogResult.OK)
        {
            workbook.SaveAs(saveFileDialog.FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
        } 
        app.Quit();
    }
private void convert\u单击(对象发送方,事件参数e)
{
Microsoft.Office.Interop.Excel.Application app=新的Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook工作簿=app.Workbook.Add(Type.Missing);
Microsoft.Office.Interop.Excel.Worksheet工作表=空;
工作表=工作簿。工作表[“Sheet1”];
工作表=工作簿.ActiveSheet;
工作表.Name=“不匹配”;
对于(int i=1;i


工作表上放置断点。单元格[i,1]=dataGridView2.Columns[i-1]。标题文本。运行到断点。将鼠标悬停在标题文本上。显示的是什么?它只显示1个列标题(关闭日期),但不显示其他列标题。我的数据库中有2个列标题1。关闭日期2。工作单。但是,当我将当前代码加载到dataGridView时,它有2列,但转换为excel时只有1列(关闭日期)。我建议您单步执行第一个
for
循环,并检查
HeaderText
值。HeaderText值显示关闭日期,但缺少工作顺序
worksheet.Cells[i] = dataGridView2.Columns[i - 1].HeaderText;