【问题标题】:Missing column header when converting to excel转换为excel时缺少列标题
【发布时间】:2019-09-24 03:59:00
【问题描述】:

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

what excel have

What it should have and what is in datagridview

【问题讨论】:

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

标签: c# excel datagridviewcolumn


【解决方案1】:
worksheet.Cells[i] = dataGridView2.Columns[i - 1].HeaderText;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    相关资源
    最近更新 更多