已经可以向excel中导入数据,方法是直接写excel的单元格,另外把一个空的excel表存了个模板(包含5行的表头),我想限制每20行就换页,现在的问题是,当超出模板的20行范围后,一个是不知道怎么才能在21行开始加上表头,再则我如果直接写的话,字体格式也成为默认的了,一些需要合并的单元格也没有合并,表格格式如下:  |col1|col2|col3|coln |coln+1|coln+2|coln+3|...|    表头
  |----|----|----|-----|------|------|------|...|
  |dat1|dat2|dat3|设计值|datn+1|datn+2|datn+3|...|    第一行数据,前面两行和一行,后面正常
  |    |    |    |-----|------|------|------|...|    
  |    |    |    |实际值|dat   |dat   |dat   |...|
  |----|----|----|---- |------|------|------|...|
  |dat |dat |dat |设计值|dat   |dat   |dat   |...|    第二行数据,前面同样一行分两行
  |    |    |    |-----|------|------|------|...|
  |    |    |    |实际值|------|------|------|...|
  |----|----|----|-----|------|------|------|...|
  ......一共,按照后面的正常行数(不包含表头)来算的话,应该是20行,这个空表已经存为模板,现在,如果在20行以内,一切正常,超出20行以后,就全乱了,字体大小、表头都不行,不知道改如何才能使得下20行再加上表头能正常显示我是用的sqlreader读数据库,代码如下:         int row=6;                           //数据起始行数
        int designrow = 6;                   //设计值的起始行数,起始跟前面一样,为了清楚些就单独用了一个变量
        int realrow=7;                       //实际值的起始行数
        
        
        while (dr.Read())
        {
            //钻井液性能之前没有合并行的那些数据
            excel.Cells[row, 2] = dr[19].ToString().Trim();
            excel.Cells[row, 3] = dr[0].ToString().Trim();
            excel.Cells[row, 4] = dr[2].ToString().Trim();
            excel.Cells[row, 5] = dr[3].ToString().Trim();
            excel.Cells[row, 6] = dr[4].ToString().Trim();
            excel.Cells[row, 7] = dr[22].ToString().Trim();
            excel.Cells[row, 8] = dr[40].ToString().Trim();
            excel.Cells[row, 9] = dr[41].ToString().Trim();
            excel.Cells[row, 10] = dr[6].ToString().Trim();
            excel.Cells[row, 22] = dr[18].ToString().Trim();
            row += 2; 
            
                        excel.Cells[designrow, 11] = "设计";
            excel.Cells[designrow, 12] = dr[24].ToString().Trim() + "~" + dr[42].ToString().Trim();
            excel.Cells[designrow, 13] = dr[25].ToString().Trim() + "~" + dr[43].ToString().Trim();
            excel.Cells[designrow, 14] = "<"+dr[26].ToString().Trim();
            excel.Cells[designrow, 15] = dr[27].ToString().Trim() + "~" + dr[44].ToString().Trim();
            excel.Cells[designrow, 16] = dr[30].ToString().Trim() + "~" + dr[45].ToString().Trim();
            excel.Cells[designrow, 17] = dr[31].ToString().Trim() + "~" + dr[46].ToString().Trim();
            excel.Cells[designrow, 18] = dr[32].ToString().Trim() + "~" + dr[47].ToString().Trim() + "/" + dr[33].ToString().Trim() + "~"+dr[48].ToString().Trim();
            excel.Cells[designrow, 19] = "<"+dr[34].ToString().Trim();
            excel.Cells[designrow, 20] = "<" + dr[35].ToString().Trim();
            excel.Cells[designrow, 21] = "<" + dr[36].ToString().Trim();
            designrow += 2;            excel.Cells[realrow, 11] = "实际";
            excel.Cells[realrow, 12] = dr[1].ToString().Trim();
            excel.Cells[realrow, 13] = dr[7].ToString().Trim();
            excel.Cells[realrow, 14] = dr[8].ToString().Trim();
            excel.Cells[realrow, 15] = dr[9].ToString().Trim();
            excel.Cells[realrow, 16] = dr[10].ToString().Trim();
            excel.Cells[realrow, 17] = dr[11].ToString().Trim();
            excel.Cells[realrow, 18] = dr[12].ToString().Trim()+"/"+dr[13].ToString().Trim();
            excel.Cells[realrow, 19] = dr[14].ToString().Trim();
            excel.Cells[realrow, 20] = dr[15].ToString().Trim();
            excel.Cells[realrow, 21] = dr[16].ToString().Trim();
            realrow += 2;         }        excel.Visible = true;
}