if (dataGridView1.Rows.Count > 0)
{
DateTime dt = DateTime.Now; //导出Excel表时间
string title = "计算机五班出勤统计 抽查时间:" +dt.ToString()+ "抽查人签名:"; //excel表头
Excel.Application ep = new Excel.ApplicationClass();
ep.Application.Workbooks.Add(true);
ep.Cells[1, 1] = title; //Excel添加表头到第一个单元格
ep.get_Range("A1", "Z1").MergeCells = true; //合并第一行(A-Z共26列,列数根据你需要修
改)
ep.get_Range("A1", "Z1").HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter; //表头居中
ep.get_Range("A1", "Z1").Font.Name = "宋体"; //设置字体
ep.get_Range("A1", "Z1").Font.Bold = true; //字体加粗
ep.get_Range("A1", "Z1").Font.Size = 18; //文字大小
ep.get_Range("A1", "Z1").RowHeight = 35; //设置标题行高
//列标题设置(字段,Excel表的第二行,从dataGridView1字段中获取)
for (int i = 1; i <= 26; i++) 【本人所用例子为26列】
{
ep.Cells[2, i] = dataGridView1.Columns[i - 1].HeaderText.ToString();
}
ep.get_Range("A2", "Z2").Font.Name = "宋体"; //设置字体
ep.get_Range("A2", "Z2").Font.Bold = true; //字体加粗
ep.get_Range("A2", "Z2").Font.Size = 10; //文字大小
ep.get_Range("A2", "Z2").RowHeight = 30; //设置标题行高
int rowCount = 0;
for (int i = 0; i < dataGridView1.Rows.Count; i++) //统计dataGridView1有效行
{
if (dataGridView1.Rows[i].Cells[0].Value.ToString() == "")
break;
else
rowCount++;
}
//先将数据转到数组,然后再把数组一次填充到excel,这样就大大提高了效率(通过测试得知)
string[,] dataArray = new string[rowCount, 26];
for (int i = 0; i < rowCount; i++)
{
for (int j = 0; j < 26; j++)
{
dataArray[i, j] = dataGridView1.Rows[i].Cells[j].Value.ToString();
}
}
评论12