string strcon = System.Configuration.ConfigurationManager.ConnectionStrings["josn"].ConnectionString;
SqlConnection con = new SqlConnection(strcon);
con.Open();
string sql = "select * from student";
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
for (int i = 0; i < dr.FieldCount; i++)
{
dt.Columns.Add(dr.GetName(i), dr.GetFieldType(i));
}
object[] objValues = new object[dr.FieldCount];
while (dr.Read())
{
dr.GetValues(objValues);
dt.LoadDataRow(objValues, true);
}
HSSFWorkbook workbook = new HSSFWorkbook();
//创建工作表
ISheet sheet = workbook.CreateSheet("Sheet1");
//表头
IRow head = sheet.CreateRow(0);
for (int i = 0; i < dt.Columns.Count; i++)
{
ICell headcell = head.CreateCell(i);
headcell.SetCellValue(dt.Columns[i].ColumnName);
}
//表内数据
for (int j = 0; j < dt.Rows.Count; j++)
{
IRow row = sheet.CreateRow(j + 1);
for (int k = 0; k < dt.Columns.Count; k++)
{
ICell cell = row.CreateCell(j);
cell.SetCellValue(dt.Rows[j][k].ToString());
}
}
//转换为字节数组
////创建一个流
MemoryStream ms = new MemoryStream();
workbook.Write(ms);
ms.Flush();
ms.Position = 0;
//关闭对数据库的读取
con.Close();
return File(ms,"application/vnd.ms-excel", "学生信息表.xls");
1.先直接用程序里写死的数据测试你流程的api,看能不能输出内容
2.断点或者打印查询出来的数据是否有值
上面都能做到,就没理由没值的
直接看不太好看出来,你先打断点,一步步跟一下,看看到底是哪块没进去,没赋到值,然后尝试解决一下,如果还不行,再把对应的代码贴出来,这样也方便大佬们解答。