博计报表页面超过255列导出excel
博计报表 页面超过 255 列导出 excel
最近接触到一些客户的需求,客户想在页面展现的时候不分页,然后在导出 excel 的时候分页,而客户的报表列数很多,超过了 excel 的 255 列的限制。这样如果不做任何处理,直接在页面上点击导出 excel 的按钮,就会弹出对话框提示 excel 不支持超过 255 列,也就无法正常导出,所以要想导出这样的报表就必须采取一些特殊的设置,下面就做一个简单的例子,实现超过 255 列的不分页报表导出 excel 。
实现的思路为: 在 aspx 中设置width=”-1″ ,excelUsePaperSize=”yes”然后把报表设置成按纸分页的,也可以正常导出excel。
下面分别介绍一下这种方法的实现过程:
第一步:制作一张超过 255 列的报表,报表的样式如下图所示 ( 这里直接用 to(1,300) 函数实现了 )
第二步:设置分页。
点击属性 - 报表属性 - 分页,设置分页方式为按纸分页,然后另存这个报表为 300col.raq
在展现报表 aspx 的博计标签 中加入如下两个内容: width=”-1″ , excelUsePaperSize=”yes” ,width=”-1“的含义是页面展现的时候纸张宽度无线大,这样展现的时候就不分页了,而 excelUsePaperSize =”yes”的含义是导出excel的时候按照设置的纸张大小来分页, aspx 的内容如下:
<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”showReport.aspx.cs” Inherits=”reportBase_reportAspx_Default” %>
<%@ Register Assembly=”report35net” Namespace=”com.runqian.report.tagTagPrefix=”rq” %>
<%@ Import Namespace=”System.IO” %>
<head runat=”server”>
<title> 无标题页 </title>
</head>
<body topmargin=0 leftmargin=0 rightmargin=0 bottomMargin=0>
<!–#include file=toolbar.aspx –>
<table id=param_tbl align=center>
< tr >
<td>
<rq aramTag
ID=”ParamTag_1″
Name=”param1″
ParamFileName=”"
NeedSubmit=”no”
runat =”server”
/>
</td>
<%
String comment = Request["comment"];
FileInfo paramFile = new FileInfo ( comment+”_arg.raq“);
if (paramFile.Exists){
%>
<td><a href=”javascript:_submit( param1 );”><img src=”img/query.jpg” border=no style=”vertical-align:middle“></a></td>
<%
}
%>
</ tr >
</table>
<table align=center>
< tr ><td>
<rq:HtmlTag
ID=”HtmlTag_1″
Name=”report1″
ReportFileName=”300col.raq”
funcBarLocation = “”
needSaveAsExcel =”yes”
needSaveAsPdf =”yes”
needSaveAsWord =”yes”
needSaveAsText =”yes”
needPrint =”yes”
funcBarFontSize =”12px”
funcBarFontColor =”red”
functionBarColor =”yellow”
runat =”server”
excelUsePaperSize =”yes”
width=”-1″
ExceptionPage=”reportBase/error.aspx“
InputExceptionPage=”reportBase/error.aspx“
/>
</td></ tr >
</table>
</body>
</html>
使用上面的 aspx 发布第一种方法制作的 300col.raq ,点击导出 excel 的按钮,选择分页方式导出,具体样式如下图所示:
点击确定,就会导出按纸分页的 excel 了,这样在页面上导出超过 255 列不分页报表的 excel 就实现了。