源:http://www.cnblogs.com/salonliudong/archive/2008/05/23/1206180.html
连续这么多天持续写SQL,晚上找资料研究一下Microsoft Office Web Components(续上一篇Excel的文章)调节一下自己,和上一篇文章的主题一样,这篇主要研究OWC做报表的方法。先看一下示例的效果:
一、主要内容:
1、 OWC组件在web页面展示的几种方法。
2、 OWC数据的填充。
3、 OWC显示格式的设置。
4、 在OWC中的电子表格类中填充数据的方法。
5、 OWC中显示数据格式的控制。
二、要点总结:
1、 OWC组件在web页面展示的方法。
A、将数据导出成Excel临时文件,再将临时文件呈现到Web页面,代码如下:
Sheet.Export(FileName, OWC11.SheetExportActionEnum.ssExportActionNone, OWC11.SheetExportFormat.ssExportHTML);
//
Sheet为OWC11中SpreadsheetClass类的对象
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType
=
"
application/vnd.ms-excel
"
;
Response.AddHeader(
"
Content-Disposition
"
,
"
inline;filename='我的文件'
"
);
Response.WriteFile(FileName);
Response.Flush();
Response.Close();
B、 不导出到本地临时文件,直接从内存加载到Web页面,代码如下:
Response.Clear();
Response.Buffer
=
true
;
Response.ContentEncoding
=
System.Text.Encoding.Default;
//
Response.Charset = "utf-8";
Response.ContentType
=
"
application/vnd.ms-excel
"
;
Response.Write(Sheet.HTMLData);
this
.EnableViewState
=
false
;
Response.End();
C、标签:
<
object
id
="Spreadsheet1"
classid
="clsid:0002E559-0000-0000-C000-000000000046"
name
="Spreadsheet1"
>
效果如图:
2、在
OWC
中的电子表格类中填充数据的方法:
OWC11.SpreadsheetClass Sheet
=
new
OWC11.SpreadsheetClass();
//
第一行为报表的标题
Sheet.ActiveCell[
1
,
1
]
=
"
报表的标题
"
;
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
//
逐行写入数据,数组中第一行为报表的列标题
for
(
int
i
=
0
; i
<
DT.Columns.Count
-
3
; i
++
)
![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
{
Sheet.Cells[2, 1 + i] = DT.Columns[i].Caption; ;
}
//
为报表填充数据并设置显示上下标格式
for
(
int
i
=
0
; i
<
DT.Rows.Count; i
++
)
![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
{
for (int j = 0; j < DT.Columns.Count - 4; j++)
![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
{
Sheet.ActiveCell[3 + i, 1 + j] = DT.Rows[i][j];
}
string a = DT.Rows[i][DT.Columns.Count - 4].ToString();
string b = DT.Rows[i][DT.Columns.Count - 3].ToString();
string c = DT.Rows[i][DT.Columns.Count - 2].ToString();
Sheet.ActiveCell[3 + i,DT.Columns.Count - 3] = a + b + c;
Sheet.Columns.AutoFit();
}
3
、 OWC中数据显示格式的控制(没找到控制上下标格式数据的方法):
![](https://i-blog.csdnimg.cn/blog_migrate/0be121fa5b8988fbabbbc526af3b0fc0.gif)
以下是对输出Excel的格式控制
#region 以下是对输出Excel的格式控制
//标题行合并单元格
Sheet.get_Range(Sheet.Cells[1, 1], Sheet.Cells[1, DT.Columns.Count - 3]).set_MergeCells(true);
//标题行水平居中
Sheet.get_Range(Sheet.Cells[1, 1], Sheet.Cells[1, 1]).set_HorizontalAlignment(OWC11.XlHAlign.xlHAlignCenter);
//标题行加粗字体
Sheet.get_Range(Sheet.Cells[1, 1], Sheet.Cells[1, 1]).Font.set_Bold(true);
//设置字体大小
Sheet.get_Range(Sheet.Cells[1, 1], Sheet.Cells[1, 1]).Font.set_Size(14);
//画边线
Sheet.get_Range(Sheet.Cells[1, 1], Sheet.Cells[DT.Rows.Count + 2, DT.Columns.Count - 3]).Borders.set_LineStyle(OWC11.XlLineStyle.xlContinuous);
#endregion
运行效果如下:
3、图表
ChartSpace类的例子,网上比较多,直接看综合示例,就不另作说明了。
三、综合示例:
注释很全,就不加说明了。
CS
文件:
<%if(items[i].items.items.length) { %>
<%}%>
<%}%>
转载于:http://blog.itpub.net/730950/viewspace-344572/