【问题标题】:Exporting Gridview table to Excel将 Gridview 表导出到 Excel
【发布时间】:2014-08-28 07:20:19
【问题描述】:

我正在使用此代码将 gridview 表导出到 Microsoft Excel:

private void button5_Click(object sender, EventArgs e)
    {
        Microsoft.Office.Interop.Excel.Application Excel = new     Microsoft.Office.Interop.Excel.Application();
        Workbook wb = Excel.Workbooks.Add(XlSheetType.xlWorksheet);
        Worksheet ws = (Worksheet)Excel.ActiveSheet;
        Excel.Visible= true;
        ws.Cells[1, 1] = "VehiclePlateNumber";
        ws.Cells[1, 2] = "VehicleDescription";
        ws.Cells[1, 3] = "Distance";

        for (int j = 2; j <= datagridview1.Rows.Count; j++)
        {

            for (int i = 2; i <= 3; i++)

            {
                ws.Cells[j, i] = datagridview1.Rows[j - 2].Cells[i - 1].Value;
            }

}

它的工作,但第一列只显示没有数据的标题文本,我不知道是什么问题,我尝试对代码进行一些更改,但我无法找到解决方案,请帮忙?

【问题讨论】:

    标签: c# excel gridview export datagridviewcolumn


    【解决方案1】:

    您设置 for 循环的方式会导致仅在两列 (i=2 ;i&lt;=3) 中循环,并且您也会错过最后一行。 同样在您的代码中,您缺少右括号。

    试试:

     for (int j = 0; j < datagridview1.Rows.Count; j++)
            {   
                for (int i = 0; i < 3; i++)  
                {
                    ws.Cells[j, i+1] = datagridview1.Rows[j].Cells[i].Value;
                }
            }
    

    【讨论】:

    • 当我按下按钮时它给了我错误,错误说:COM exception was unhandled Exception from HARESULT 0X800A03EC
    【解决方案2】:

    我认为apomene 几乎是对的。

    ws.Cells[j +1 , i+1] = datagridview1.Rows[j].Cells[i].Value;

    由于某些原因,excel 不是从零开始的。唯一的区别是在 j 之后 +1。

    【讨论】:

    • 在我使用你的代码之后,我得到了所有的数据,但是所有的标题文本列都消失了,为什么我要面对这个:/
    【解决方案3】:

    使用此代码后问题解决了:

    for (int j = 2; j <= datagridview1.Rows.Count; j++)
    {
    for (int i = 1; i <= 3; i++)
    {
    ws.Cells[j, i] = datagridview1.Rows[j - 2].Cells[i - 1].Value;
    }
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 2013-09-25
      • 2014-12-20
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      相关资源
      最近更新 更多