以下代码用于将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();
}
}
任何帮助将不胜感激。
答案 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();
}
}