B/S开发中报表生成开发的一点经验

 前一段做企业信息系统中的报表时,遇到一些问题:报表格式不规则,数据来源于多个库,原定的是将报表数据生成EXCEL文件,然后下载就可以了,但是客户要求能够在网页上对生成的报表进行预览。苦思解决方法,最后使用Excel的发布(PublishObjects)功能将Excel文件生成为Html文件。

以下是示例代码:

 

       //建立Excel应用对象
        string strExcelXTPath = Server.MapPath("模板.xlt");
        Excel.Application xlapp = new Excel.ApplicationClass();
        Excel.Workbook xBook = xlapp.Workbooks.Open(strExcelXTPath, Missing.Value, Missing.Value, Missing.Value, Missing.Value,     Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
        Excel.Worksheet xSheet = (Excel.Worksheet)xBook.Sheets[1];
        Excel.Range Rang = null;
        xlapp.Visible = false;

 

        //.......充填数据代码

 

        //保存
        strFileNo = GetNoString();
        strSaveName = strFileNo + "报表.xls";
        strPath = Server.MapPath("Temp/" + strSaveName);
        //发布
        string strPathAs = Server.MapPath("Files/" + strFileNo + "预览.htm");
        xlapp.ActiveWorkbook.PublishObjects.Add(Excel.XlSourceType.xlSourceSheet, strPathAs, "Sheet1", "", Excel.XlHtmlType.xlHtmlStatic, "", Missing.Value).Publish(Missing.Value);
        //保存
        xBook.Saved = true;
        xBook.SaveAs(strPath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

        //关闭应用程序
        Rang = null;
        xSheet = null;
        xBook.Close(Missing.Value, Missing.Value, Missing.Value);
        xlapp.Quit();
        xBook = null;
        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlapp);
        xlapp = null;
        GC.Collect();
        //删除临时文件
        if (File.Exists(strPath))
        {
            File.Delete(strPath);
        }
       //打开/下载该文件
        Response.Write("<script   language='JavaScript'>window.open('" + "Files/" + strFileNo + "预览.htm" + "')</script>");

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
-功能简介-   (1)任意增加、修改、删除报表,而无须改动源程序。   (2)自动生成功能,选择项目后快速生成表格式或自由式等常用报表。   (3)手动设计功能,可以设计出复杂的国式报表及套打单据。   (4)直线、文本、表达式等对象的位置、大小、字体、颜色可以任意改变。   (5)具有英翻译功能,表达式可以采用文,适合国人使用。   (6)表达式非常灵活,可以是字段、函数、变量组成的复杂表达式。如:取小数位(数量*单价*折扣/100,2)。   (7)表达式具有校验功能,如表达式有错误系统会立即提示。   (8)所有界面完全汉化,直观明了,可交付最终用户使用。   (9)采用动态数据窗口处理,无须调用PB之外的资源。   (10)表头和表体之间的格线,不会出现“裂缝”,改进了PB本身的缺陷。   (11)打印纸张、比例、横向、纵向打印等可以设置。   (12)数据源可以是后台数据库表或共享前台数据窗口数据,满足不同的需要。   (13)自动识别并适应显示分辨率。   (14)调用简便,与其它PB开发系统之接口简单。   (15)可以直接在Orcal,Sybase,Ms-sql等大型数据库下使用而无需任何改动。 (16)调用本系统之前已经设计好的报表,可以选择“原数据窗口格式”生成到本系统,把“死报表”变成“活报表”。 (17)对于下拉数据窗口的数据,可以采用本系统的“后台取数()”函数来实现取数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lujunql

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值