将Gridview表导出到Excel

时间:2014-08-28 07:20:20

标签: c# excel gridview export datagridviewcolumn

使用以下代码将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;
            }

}

它的工作,但第一列只显示没有数据的标题文本,我不知道是什么问题,我试图对代码做一些更改,但我无法达到解决方案,任何帮助拜托?

3 个答案:

答案 0 :(得分:0)

他们将for循环结果设置为仅在两列(i=2 ;i<=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;
            }
        }

答案 1 :(得分:0)

我认为apomene几乎是正确的。

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

出于某种原因,excel不是零基础。唯一的区别是j之后的+1。

答案 2 :(得分:0)

使用此代码后,

问题得以解决:

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