SQL表头未保存到Excel

时间:2015-07-23 14:15:42

标签: c# visual-studio visual-studio-2012

以下代码用于将SQL表中的数据保存到excel。问题是,如果表为空,它不会保存表头。

                worksheet4 = workbook.Sheets[4];
                worksheet4.Name = "Adjs ";

                SQL.DataTable dtAG = new SQL.DataTable();
                using (SqlConnection cn1 = new SqlConnection(conStr))
                {
                    using (SqlDataAdapter da4 = new SqlDataAdapter(query4.ToString(), cn1))
                    {
                        da4.Fill(dtAG);

                    }
                }
                DataColumnCollection dcCollection4 = dtAG.Columns;
                for (int i = 1; i < dtAG.Rows.Count + 1; i++)
                {

                    for (int j = 1; j < dtAG.Columns.Count + 1; j++)
                    {
                        if (i == 1)

                            worksheet4.Cells[i, j] = dcCollection4[j - 1].ToString();

                        else

                            worksheet4.Cells[i, j] = dtAG.Rows[i - 1][j - 1].ToString();

                    }

                }

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以像下面这样设置标题值:ws.Cells[1, 1].Value = "example";

[i, j]必须是[i+1,j],如果没有,你就会写下你的标题。

答案 1 :(得分:1)

您可以在开始填写数据之前添加列:

int a = 1;
foreach(DataColumn dc in dtAG.Columns)
{
      worksheet4.Cells[1, a] = dc.ColumnName;
      a++;
}

然后从下一行开始:

for (int i = 2; i < dtAG.Rows.Count + 1; i++)
{
    for (int j = 1; j < dtAG.Columns.Count + 1; j++)
    {
         worksheet4.Cells[i, j] = dtAG.Rows[i - 1][j - 1].ToString();
    }
}