使用以下代码将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;
}
}
它的工作,但第一列只显示没有数据的标题文本,我不知道是什么问题,我试图对代码做一些更改,但我无法达到解决方案,任何帮助拜托?
答案 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;
}
}
}