已经可以向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;
}
|----|----|----|-----|------|------|------|...|
|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;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货