(转)OWC做电子表格和图表的试验

源: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();

       A、B 效果如图

 

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 =   " 报表的标题 " ;

        
// 逐行写入数据,数组中第一行为报表的列标题
         for  ( int  i  =   0 ; i  <  DT.Columns.Count  -   3 ; i ++ )
        
{
            Sheet.Cells[
21 + i] = DT.Columns[i].Caption; ;
        }

        
        
// 为报表填充数据并设置显示上下标格式
         for  ( int  i  =   0 ; i  <  DT.Rows.Count; i ++ )
        
{
            
for (int j = 0; j < DT.Columns.Count - 4; j++)
            
{
                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中数据显示格式的控制(没找到控制上下标格式数据的方法):
以下是对输出Excel的格式控制 #region 以下是对输出Excel的格式控制
        
//标题行合并单元格
        Sheet.get_Range(Sheet.Cells[11], Sheet.Cells[1, DT.Columns.Count - 3]).set_MergeCells(true);
        
//标题行水平居中
        Sheet.get_Range(Sheet.Cells[11], Sheet.Cells[11]).set_HorizontalAlignment(OWC11.XlHAlign.xlHAlignCenter);
        
//标题行加粗字体
        Sheet.get_Range(Sheet.Cells[11], Sheet.Cells[11]).Font.set_Bold(true);
        
//设置字体大小   
        Sheet.get_Range(Sheet.Cells[11], Sheet.Cells[11]).Font.set_Size(14);
        
//画边线
        Sheet.get_Range(Sheet.Cells[11], Sheet.Cells[DT.Rows.Count + 2, DT.Columns.Count - 3]).Borders.set_LineStyle(OWC11.XlLineStyle.xlContinuous);
#endregion


     运行效果如下:

   3、图表 ChartSpace类的例子,网上比较多,直接看综合示例,就不另作说明了。

三、综合示例:

  注释很全,就不加说明了。

         CS 文件:
using  System;
using  System.Data;
using  System.Configuration;
using  System.Collections;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;

using  System.Reflection;
using  System.Data.OleDb;
using  System.IO;
using  System.Diagnostics;
// using OWC11 = Microsoft.Office.Interop.Owc11;

public   partial   class  Output : System.Web.UI.Page
{
    
//取数据的全局变量
    OleDbConnection Olecn;
    OleDbCommand OleCamm;
    DataTable DT 
= new DataTable();

    
//实例化OWC11
    OWC11.SpreadsheetClass Sheet = new OWC11.SpreadsheetClass();

    
//跨框架传参用
    private String StrTime = "";

    
//导出电子表格的全路径
    public String FileName;

    
//导出图片的全路径
    public String PicPath;

    
protected void Page_Load(object sender, EventArgs e)
    
{
        
//接收Input框架传递的参数
        if (!IsPostBack)
        
{
            StrTime 
= Request.QueryString["Time"];
            
if (StrTime != null)
                Label1.Text 
= "时间:" + StrTime;
        }


        
//在页面加载的时候将数据取出
        if (ConnectionDataBase())
        
{
            OleCamm 
= new OleDbCommand();
            OleCamm.Connection 
= Olecn;
            Olecn.Open();
            OleCamm.CommandText 
= "select * from pl where date = " + "'" + StrTime + "'";
            OleDbDataAdapter OleDAdp 
= new OleDbDataAdapter(OleCamm);
            OleDAdp.Fill(DT);
            Olecn.Close();
        }

        Exceltest();
        ChartsTest();
    }

    
    
/**//// 
    
/// 连接数据库
    
/// 
    
/// 

    private bool ConnectionDataBase()
    
{
        
try
        
{
            
string DataSource = Server.MapPath("~"+ "\\App_Data\\Excel.mdb";
            Olecn 
= new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+DataSource);
            Olecn.Open();
        }

        
catch (Exception e1)
        
{
            Response.Write(e1.Message);
            
return false;
        }

        
finally
        
{
            Olecn.Close();
        }

        
return true;
    }

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/730950/viewspace-344572/,如需转载,请注明出处,否则将追究法律责任。

user_pic_default.png
请登录后发表评论 登录
全部评论
<%=items[i].createtime%>

<%=items[i].content%>

<%if(items[i].items.items.length) { %>
<%for(var j=0;j
<%=items[i].items.items[j].createtime%> 回复

<%=items[i].items.items[j].username%>   回复   <%=items[i].items.items[j].tousername%><%=items[i].items.items[j].content%>

<%}%> <%if(items[i].items.total > 5) { %>
还有<%=items[i].items.total-5%>条评论 ) data-count=1 data-flag=true>点击查看
<%}%>
<%}%>
<%}%>

转载于:http://blog.itpub.net/730950/viewspace-344572/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值