1 //合并标段列
2
3 index = 0; rowid = 3; //重置变量
4 string pa_name = string.Empty; //标段名称
5 for (k = 3; k <= i + 2; k++)
6 {
7 pa_name = table.Rows[index]["PA_NAME"].ToString();
8 if (wksheet.get_Range(wksheet.Cells[k, 4], wksheet.Cells[k, 4]).Value2.ToString() == pa_name)
9 {
10 wksheet.get_Range(wksheet.Cells[k, 4], wksheet.Cells[k, 4]).Value2 = "";
11 continue;
12 }
13 wksheet.get_Range(wksheet.Cells[rowid, 4], wksheet.Cells[k - 1, 4]).Merge(Missing.Value);
14 wksheet.get_Range(wksheet.Cells[rowid, 4], wksheet.Cells[rowid, 4]).Value2 = "'" + pa_name;
15 index = k - 3;
16 rowid = k;
17 k--;
18
19 }
20 //退出循环时合并最后一个项目的标段
21 wksheet.get_Range(wksheet.Cells[rowid, 4], wksheet.Cells[k - 1, 4]).Merge(Missing.Value);
22 wksheet.get_Range(wksheet.Cells[rowid, 4], wksheet.Cells[rowid, 4]).Value2 = "'" + pa_name;
23 tick = DateTime.Now.ToString("yyyyMMddhhmmss");
24 save_path = temp_path + "\\" + tick + "保证金收退情况表.xls";
25 Session["BailBackID"] = tick + "保证金收退情况表.xls";
26 Session["_BailBack"] = "true";
27 workbook.SaveAs(save_path, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
28 excelOperate.Dispose(worksheet, workbook, app);//关闭Excel进程
29 //DownLoad(save_path);
30 //Page_Close();
当然,上面的操作中会进行好几次循环,在性能方面不太可取,园子里的兄弟也许会有更好的方法,小弟不吝赐教了
下面我们看下几个效果图:



(注意:这里提示的导出数据是指从数据库成功取出数据,还没有操作EXCEL对象,刚开始已经说过了,当然这个提示文字换成其它的也可以)


整个过程采用AJAX提示的,一来不刷新,二来导出时间比较长的话,可以给客户一个良好的体验效果,否可,用户一点导出按钮,半天没反应也没提示,客户就觉得怎么这么慢的,是不是你们程序有问题,指责一大堆,有了这么些交互提示信息,让客户多等几分钟也能承受。
上一页 [1] [2] [3] [4] [5] [6] [7] 下一页

【责编:Ken】