Posts Tagged ‘EXCEL’

报表导出为文件时的相关设置

10.22.2009 by fengzhou - 0 Comment - 0
Posted in java报表相关

润乾报表在页面上以标准html的形式展现,可以通过使用润乾提供的tag标签将报表以文件的方式导出为EXCEL、PDF、WORD、TEXT、XML和润乾自有的RAT文件格式。

下面介绍与导出相关的tag标签:

1.导出功能按钮定义:

needSaveAsExcel–是否需要显示将报表存为Excel的功能钮,属性取值为yes/no,默认为no。

needSaveAsPdf–是否需要显示将报表存为Pdf的功能钮,属性取值为yes/no,默认为no。

needSaveAsWord–是否需要显示将报表存为Word的功能钮,属性取值为yes/no,默认为no。

needSaveAsText–是否需要显示将报表存为Text的功能钮,属性取值为yes/no,默认为no。

2.导出按钮外观定义:

excelLabel–存为Excel钮外观定义,属性取值为html元素或文字,默认为文字”存为Excel”。

pdfLabel–存为Pdf钮外观定义,属性取值为html元素或文字,默认为文字”存为PDF”。

wordLabel–存为Word钮外观定义,属性取值为html元素或文字,默认为文字”存为Word”。

textLabel–存为Text钮外观定义,属性取值为html元素或文字,默认为文字”存为Text”。

默认导出按钮外观:

1.png

指定图片后的导出按钮外观:

2.png

3.导出文件的特殊设置:

textDataSeparator–存为Text时,同行单元格数据间的分隔符,属性取值为字符,默认为TAB键(\t)。

excelUsePaperSize–存为EXCEL时的纸张尺寸:yes按报表设计时的纸张尺寸,no采用本TAG标签中指定的width、height值,默认为no。

saveAsName–报表另存为Excel、PDF或离线填报时的文件名(不用带扩展名),属性取值为文本,默认为与报表文件名相同。

excelPageStyle–存为Excel时的分页方式,不指定此属性值,则系统弹出对话框让用户选,属性取值为0(不分页)或1(分页),默认为不指定此属性值。

3.png

pdfExportStyle–存为PDF时,导出的文件分页方式及导出类型,不指定此属性值,则系统弹出对话框让用户选,属性值格式为:”文件类型,是否分页”,文件类型取值为:graph(将文字导出为图形方式)/text(将文字导出为文本方式),1(分页)或0(不分页),默认为不指定此属性值。

4.png

用户可以根据不同的实际需求,通过润乾提供的上述各标签进行导出相关属性的设定,灵活便捷,满足不同需要。
引自:润乾报表知识库
相关文章:利用超链接传递下拉数据集的值特殊符号的处理如何使用序号函数给报表加序号动态设置滚动条高度宽度的方法

BIRT没有类似Excel的格式刷,其他免费报表有么?

06.25.2009 by fengzhou - 0 Comment - 0
Posted in java报表相关

Excel电子表格的格式刷功能真的是一个非常实用的功能,当你定义好了一个单元格的格式,比如:字体、字号、颜色、粗体、下划线等等,只要用格式刷,就可以非常方便的把一片单元格弄成同样的格式。这个功能是如此的实用,让众多的用户使用报表工具制作报表的时候,都会去界面上找格式刷的图标。

但是,如果你是BIRT报表工具的用户,恐怕就会失望了:BIRT报表提供的可视化制作界面上没有这个功能!想想也难怪,对于BIRT这样的条带式报表工具,也很难提供这样的功能了。不要小看了这样的功能,如果希望最终用户可以自定义报表,类似excel这样细节的功能就显得很重要了!

那么,是不是只能自己去研究BIRT的大量代码,花很大力气去二次开发把BIRT做的类似excel么?当然不是,给您推荐一款免费的报表工具--快逸报表,可以轻松的使用类似excel的设计界面,实现复杂的中国式报表!!

如下图所示,快逸报表实现了很多类似excel的强大功能!

快逸报表的excel设计界面

和BIRT这样的开源控件相比,用快逸报表有什么好处呢?

1、同样是免费报表工具,快逸报表是国内厂商的商用产品,适合中国式复杂报表需求。

2、快逸报表采用类似excel的设计风格,从扩展、对齐等角度来说更加易用,为最终用户设计报表创造了条件。

3、快逸报表提供零代码的数据填报表设计功能,在数据展现的同时,很方便的解决数据填报入库的需求。

4、快逸报表具备专业的技术团队,提供免费的中文文档和技术论坛服务。

引自:报表工具知识库
原文链接:BIRT没有类似Excel的格式刷,其他免费报表有么?
相关文章:Aix导出excel单元格内容显示不全 ; 快逸报表4.0 免费版安装包下载 ; 用快逸报表轻松实现查询条件的保存;象EXCEL一样冻结报表表头
其他相关内容:强大的Web报表打印; 博计web报表工具; 研究.NET报表设计;web报表博客

BIRT报表的学习资料太少了,怎么办?

06.21.2009 by fengzhou - 0 Comment - 0
Posted in 未分类

初学一个报表工具的时候,是否有友好的入门向导对于使用者来说很重要;一个报表工具在开发项目中深入应用的时候,详尽细致的官方文档至关重要,很大程度上影响项目的进度。特别是官方的中文文档尤其重要。”官方”的好处是可以让你少走弯路;”中文”的好处,不仅仅是让阅读、学习更容易,也说明这个报表工具在国内使用的更广泛,更适用于中国本土的情况。

但是,如果你使用BIRT报表工具,恐怕你会失望了:BIRT报表不提供官方的中文文档,甚至网站上的demo都是英文的。而且对于一些复杂的中国式报表涉及到的高级功能,BIRT的软件都没有做到,要想在英文文档中找到答案或者替代方案真是困难。

其实,软件厂商要想给用户提供完备和友好的文档,是需要花大力气的、大成本的:要从不同角度提供不同的文档形式,有查询手册、有使用向导、有快速体验、有演示demo…每种不同文档都需要不同的编写方式。而且,随着软件功能的变化和版本升级,上述文档还要不断的更新、升级,可以说相当不易。

所以,对于BIRT这样针对国外的开源报表工具,也确实很难提供完备的文档。

没有官方的中文文档,怎么办?

在网上看热心人的笔记?有用,但是会有版本不一致、时间过期、正确性存疑、只有入门很难精通等问题。

去看BIRT在国内的收费版本?相应的费用会成为计划外支出,项目经理恐怕会摇头。

那么,只能自己去花很大力气去研究英文文档,甚至是自己去一点点摸索?当然不是,给您推荐一款免费的报表工具--快逸报表,不仅可以轻松的使用类似excel的设计界面,实现复杂的中国式报表和数据填报!同时,也提供详尽的中文文档:从体验到向导,再到查询手册一应俱全!

快逸报表完整而全面的文档

和BIRT这样的开源控件相比,用快逸报表有什么好处呢?

1、同样是免费报表工具,快逸报表是国内厂商的商用产品,适合中国式复杂报表需求。

2、快逸报表采用类似excel的设计风格,从扩展、对齐等角度来说更加易用,为最终用户设计报表创造了条件。

3、快逸报表提供零代码的数据填报表设计功能,在数据展现的同时,很方便的解决数据填报入库的需求。

4、快逸报表具备专业的技术团队,提供免费的中文文档和技术论坛服务。

引自:报表工具知识库
原文链接:BIRT报表的学习资料太少了,怎么办?
相关文章:导入带公式excel的问题 ; 类excel的设计风格 ; 用快逸报表轻松实现查询条件的保存;通过插入局部报表更方便的做表
其他相关内容:Web报表软件分类-实现技术; 免费.NET报表软件下载; 研究.NET报表设计;web报表博客

EXCEL大数据量导出的解决方案

06.06.2009 by fengzhou - 0 Comment - 0
Posted in java报表相关

将web页面上显示的报表导出到excel文件里是一种很常见的需求。润乾报表的类excel模型,支持excel文件数据无失真的导入导出,使用起来非常的方便。然而,当数据量较大的情况下,excel本身的支持最多65535行数据的问题便凸显出来。下面就给出大数据量导出到excel的解决方案。

首先,对于数据超过了65535行的问题,很自然的就会想到将整个数据分块,利用excel的多sheet页的功能,将超出65535行后的数据写入到下一个sheet页中,即通过多sheet页的方式,突破了最高65535行数据的限定。

具体做法就是,单独做一个链接,使用JSP导出,在JSP上通过程序判断报表行数,超过65535行后分SHEET写入。这样这个问题就得以解决了。

更进一步地说,在这种大数据量的报表生成和导出中,要占用大量的内存,尤其是在使用TOMCAT的情况下,JVM最高只能支持到2G内存,则会发生内存溢出的情况。此时的内存开销主要是两部分,一部分是该报表生成时的开销,另一部分是该报表生成后写入一个EXCEL时的开销。由于JVM的GC机制是不能强制回收的,因此,对于此种情形,我们给出一个变通的解决方案。

首先,将该报表设置起始行和结束行参数,在API生成报表的过程中,分步计算报表,比如一张20万行数据的报表,在生成过程中,可通过起始行和结束行分4-5次进行。这样,就降低了报表生成时的内存占用,在后面报表生成的过程中,如果发现内存不够,即可自动启动JVM的GC机制,回收前面报表的缓存。

导出EXCEL的过程,放在每段生成报表之后立即进行,改多个SHEET页为多个EXCEL,即在分步生成报表的同时分步生成EXCEL,则通过POI包生成EXCEL的内存消耗也得以降低。通过多次生成,同样可以在后面EXCEL生成所需要的内存不足时,有效回收前面生成EXCEL时占用的内存。

再使用文件操作,对每个客户端的导出请求在服务器端根据SESSIONID和登陆时间生成唯一的临时目录,用来放置所生成的多个EXCEL,然后调用系统控制台,打包多个EXCEL为RAR或者JAR方式,最终反馈给用户一个RAR包或者JAR包,响应客户请求后,再次调用控制台删除该临时目录。

使用这种方法,首先是通过分段运算和生成,有效降低了报表从生成结果到生成EXCEL的内存开销。其次是通过使用压缩包,响应给用户的生成文件体积大大缩小,降低了多用户并发访问时服务器下载文件的负担,有效减少多个用户导出下载时服务器端的流量,从而达到进一步减轻服务器负载的效果。

引自:润乾报表知识库
原文链接:EXCEL大数据量导出的解决方案
相关文章:报表组中的报表之间传递数据问题 ; 润乾报表:不展现页面,直接将报表组导出excel修改润乾报表日下拉日历的颜色关于润乾报表自定义函数报错的问题润乾报表中心实现流程查询
其他相关内容: 润乾商业智能解决方案 ; 商业智能BI联盟 ; Java报表

润乾报表:不展现页面,直接将报表组导出excel

04.14.2009 by fengzhou - Comments Off - 0
Posted in java报表相关

润乾报表的用户提出这样的需求:点击页面上按钮后台自动计算报表组并导出excel。这样的需求可以用api实现。

解决方案

将如下代码加入报表展示的jsp文件中,假设报表组文件是reportFiles/tianbaoraq/4.rpg。

<%

//报表文件相对路径
String reportFile=application.getRealPath(”/reportFiles/tianbaoraq/4.rpg”);

//新建一个 HashMap对象存放参数,map可以存放空参数。传递参数时名称要保证和报表组用到的参数名一致。
HashMap map=new HashMap();
Enumeration paramNames = request.getParameterNames();
if(paramNames!=null){
while(paramNames.hasMoreElements()){
String paramName = (String) paramNames.nextElement();
String paramValue=request.getParameter(paramName);

//把参数名和参数值分别加入到hashmap的key和value里
map.put(paramName,paramValue);
}
}

//读取报表组文件
ReportGroup rg = ReportGroup.read(reportFile);

//报表组参数元数据
ParamMetaData rg_pmd=rg.getParamMetaData();

//设置报表组参数
if(rg_pmd !=null){
int rg_pmdNum = rg_pmd.getParamCount();
String rg_paramName=””;
for(int j=0; j<rg_pmdNum;j++){
rg_paramName=rg_pmd.getParam(j).getParamName();
for (Iterator it=map.keySet().iterator();it.hasNext();){

//遍历hashmap,将对应的参数写入报表组对象
String key= (String)it.next();
if(rg_paramName.equals(key)) {
rg_pmd.getParam(j).setValue((String)map.get(key));}
}
}
}

//获取上下文
Context context = new Context();

//计算报表组
GroupEngine gEngine = new GroupEngine(rg, context);

//获取子报表数量
int num=rg.getItemCount();

//新建excelReport对象
ExcelReport er=new ExcelReport();

//循环分别计算子报表
for(int i=0;i<num;i++){
IReport r = gEngine.get(i);

//生成子表的excel对象
er.export( “a”+i,r);
}
try{

//将多个子表的excel对象导入到一同个excel文件里。文件名拼上当前时间

Date currentTime = new Date();

//格式化日期
SimpleDateFormat formatter = new SimpleDateFormat(”yyyyMMddhhmmss”);
String dateString = formatter.format(currentTime);
er.saveTo(”c:/work/name”+dateString+”.xls”);
}catch(Exception e){
e.printStackTrace();
}
%>

<script>
alert(”导出完成。”);
</script>

引自:润乾技术知识库
原文链接:润乾报表:不展现页面,直接将报表组导出excel
相关文章:在润乾参数表单中如何不点击查询按钮自动传参关于润乾报表自定义函数报错的问题决策分析解决方案润乾报表填报处理类问题
其他相关内容:润乾报表 ; RAQSOFT ; 报表工具知识库 ; 商业智能专业知识库

像Excel一样冻结HTML表格的表头-博计报表让你更方便

03.21.2009 by hewei - 0 Comment - 0
Posted in web报表应用

报表很大,看的时候就需要滚动条了,但是一滚整个报表都动了,表头也看不到了,这看着就太麻烦了,老要来回来去地拖上拖下拖左拖右。
Excel想到了这个问题,提供了冻结窗格的功能,可以把上边或左边的几列固定下来,这样,再怎么滚动表头总是不动,就不会看走眼了。
可惜的是,在WEB上的HTML表格却没直接提供这个功能,它的TABLE只能整个地滚。怎么能做出象Excel那样冻结表头的效果呢?

简单的想法,是把表格人为地分为上下两块,上半截表头不动,下半截表体自己滚动,这不就完了吗?看起来也不算多麻烦了。
可别高兴得太早,这仅仅解决了上边的表头,如果我们足够不幸的话,会碰到即长且宽的表格(概率不小),这时还需要有个左表头。分两块显然不够了,那分四块行吗?左上角一小块不同的,其右边是上表头,下边是左表头,右下部分是表体。
事还没算完,这几块之间还会有关联。比如表体横向滚动时,需要让上表头跟着一起滚动,否则上下就错位了;同样,纵向滚动时左表头也要与表体同步。这就还要写一堆JS代码让这几片表格一起滚动。
哎,可麻烦死了。

不幸中的一幸,采用了博计报表,这事就轻松多了,只要两步:
1、在设计报表时将需要冻结的行和列选中,设为表头行和表头列。
2、在发布报表时的tag属性中设置needScroll=”yes”,还可以用scrollWidth和scrollHeight设置滚动区域的大小。
上面说的麻烦事都被博计报表做完了。
看一下效果:

090305001


090305002

引自:.net报表工具
相关文章: 利用内建数据集方便地进行快逸报表调试 ; Web报表的打印方案选择适合自己的Web报表工具指南快逸报表类EXCEL的高效报表设web报表的扩展功能
其他相关内容: 润乾商业智能解决方案商业智能BI联盟 ; Java报表 ; 报表工具

报表工具之类Excel设计风格

03.19.2009 by hewei - 2 Comments - 0
Posted in web报表

采用控件拖拽式的传统报表工具设计报表,往往存在格线对齐的困扰,尤其是设计多层复杂表头的时候,工作量巨大,还总是达不到完美的效果。excel 以其独特的电子表格的设计风格,避免了格线对齐的麻烦,于是广大用户对excel情有独钟,纷纷要求报表设计界面类似excel。

于是很多报表工具纷纷效仿,事实上,大部分报表厂商作出来的都只是一个网格控件而已。

报表终端用户所需要的,远远不是一个表格控件。他们希望报表工具也有各种各样excel拥有的设计能力,例如合并拆分单元格、自动折行、缩小字体填 充、格式刷等等,至于单元格所拥有的属性就不用说啦,诸如边框、背景色、前景色、字体、字号等等,凡是excel有的报表工具都应该有。

于是有不少报表工具厂商想出捷径,不是要一模一样嘛,那直接集成一个第三方的excel控件吧。其实,用户还有更高的要求。用户的理想需求是:在尽 可能类似excel的基础上,提供一套完整的报表运算模型,能够很轻松地实现各种或简单或复杂的报表。简单的报表包括各种线性报表,如自由式、网格式、分 组式、交叉式等;复杂的报表包括各种非线性报表,如多源、分片、行列对称等。有了运算报表的能力,excel的设计模型才能得到质的飞跃,真正成为用户青 睐的设计风格。

有了这些模型还不能完全让用户称心,由于用户太喜欢excel了,之前往往做好了很多excel模板,用户希望设计报表的时候,能够直接把 excel模板导入,免去重复设计表样的烦恼。当然了,用报表工具设计好的报表,还能导出成excel模板,以利于对数据进行二次加工处理。

以上是比较完美的类excel的报表工具的标准,也许有人会说,太难了,不可能有这么理想的工具。很幸运的是,博计报表满足了以上要求,成为了新一代报表工具的领头羊。当然了,博计报表除了具有完美的类excel设计风格以外,还有很多革命性的功能,例如填报模型等等。

效果演示:

bj09030401

引自:.net报表工具
相关文章:利用内建数据集方便地进行快逸报表调试 ; Web报表的打印方案选择适合自己的Web报表工具指南快逸报表类EXCEL的高效报表设web报表的扩展功能
其他相关内容: 润乾商业智能解决方案商业智能BI联盟 ; Java报表 ; 报表工具

润乾报表:不展现页面,直接将报表组导出excel

03.17.2009 by hewei - 0 Comment - 0
Posted in web报表应用

润乾报表的用户提出这样的需求:点击页面上按钮后台自动计算报表组并导出excel。这样的需求可以用api实现。

解决方案

将如下代码加入报表展示的jsp文件中,假设报表组文件是reportFiles/tianbaoraq/4.rpg。

<%

//报表文件相对路径
String reportFile=application.getRealPath(”/reportFiles/tianbaoraq/4.rpg”);

//新建一个 HashMap对象存放参数,map可以存放空参数。传递参数时名称要保证和报表组用到的参数名一致。
HashMap map=new HashMap();
Enumeration paramNames = request.getParameterNames();
if(paramNames!=null){
while(paramNames.hasMoreElements()){
String paramName = (String) paramNames.nextElement();
String paramValue=request.getParameter(paramName);

//把参数名和参数值分别加入到hashmap的key和value里
map.put(paramName,paramValue);
}
}

//读取报表组文件
ReportGroup rg = ReportGroup.read(reportFile);

//报表组参数元数据
ParamMetaData rg_pmd=rg.getParamMetaData();

//设置报表组参数
if(rg_pmd !=null){
int rg_pmdNum = rg_pmd.getParamCount();
String rg_paramName=””;
for(int j=0; j<rg_pmdNum;j++){
rg_paramName=rg_pmd.getParam(j).getParamName();
for (Iterator it=map.keySet().iterator();it.hasNext();){

//遍历hashmap,将对应的参数写入报表组对象
String key= (String)it.next();
if(rg_paramName.equals(key)) {
rg_pmd.getParam(j).setValue((String)map.get(key));}
}
}
}

//获取上下文
Context context = new Context();

//计算报表组
GroupEngine gEngine = new GroupEngine(rg, context);

//获取子报表数量
int num=rg.getItemCount();

//新建excelReport对象
ExcelReport er=new ExcelReport();

//循环分别计算子报表
for(int i=0;i<num;i++){
IReport r = gEngine.get(i);

//生成子表的excel对象
er.export( “a”+i,r);
}
try{

//将多个子表的excel对象导入到一同个excel文件里。文件名拼上当前时间

Date currentTime = new Date();

//格式化日期
SimpleDateFormat formatter = new SimpleDateFormat(”yyyyMMddhhmmss”);
String dateString = formatter.format(currentTime);
er.saveTo(”c:/work/name”+dateString+”.xls”);
}catch(Exception e){
e.printStackTrace();
}
%>

<script>
alert(”导出完成。”);
</script>

引自:润乾技术知识库
原文链接:润乾报表:不展现页面,直接将报表组导出excel
相关文章:在润乾参数表单中如何不点击查询按钮自动传参关于润乾报表自定义函数报错的问题决策分析解决方案润乾报表填报处理类问题
其他相关内容:润乾报表 ; RAQSOFT ; 报表工具知识库 ; 商业智能专业知识库

将Excel转换为SQL Server数据库

01.06.2009 by web报表 - 4 Comments - 0
Posted in .net报表相关

Excel是一种非常灵活的电子表格软件,用它可以存储各种数据,本节将对如何将Excel转换为SQL Server数据库进行详细介绍。

1.方案分析

通过Microsoft.Jet.OLEDB.4.0方式可实现使用ADO.NET访问Excel的目的,如以下示例代码为连接Excel数据的字符串:

string strOdbcCon = @”Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=D:”2010年图书销售情况.xls;Extended Properties=Excel 8.0″;

2.实施过程

程序开发步骤:

(1)新建一个网站,命名为25,其主页默认为Default.aspx。

(2)Default.aspx页面中添加一个Table表格,用来布局页面,然后在该Table表格中添加一个iframe框架、两个Button控件和一个GridView控件,其中,iframe框架用来显示原始Excel数据表中的数据;Button控件分别用来将指定Excel中的数据表导入到SQL Server数据库中和将导入SQL Server数据库中的Excel数据绑定到GridView控件上;GridView控件用来显示导入SQL Server数据库中的Excel数据。

(3)程序主要代码如下。

Default.aspx页面中,首先自定义一个LoadData方法,该方法为无返回值类型方法,主要用来将Excel数据表中的数据导入到SQL Server数据库中。LoadData方法实现代码如下:

public void LoadData(string StyleSheet)
{
string strCon = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source =” + Server.MapPath
(”usersdb.xls”) + “;Extended Properties=Excel 8.0″;
OleDbConnection myConn = new OleDbConnection(strCon);
myConn.Open(); //打开数据链接,得到一个数据集
DataSet myDataSet = new DataSet(); //创建DataSet对象
string StrSql = “select * from [" + StyleSheet + "$]“;
OleDbDataAdapter myCommand = new OleDbDataAdapter(StrSql, myConn);
myCommand.Fill(myDataSet, “[" + StyleSheet + "$]“);
myCommand.Dispose();
DataTable DT = myDataSet.Tables[ "[" + StyleSheet + "$]“];
myConn.Close();
myCommand.Dispose();
string strConn = “Data Source=(local);DataBase=Usersdb;Uid=sa;Pwd=”;
SqlConnection conn = new SqlConnection(strConn);
conn.Open();
for (int j = 0; j < DT.Rows.Count; j++)
{
string UserID = DT.Rows[j][0].ToString();
string EmailAddress = DT.Rows[j][1].ToString();
string FirstName = DT.Rows[j][2].ToString();
string LastName = DT.Rows[j][3].ToString();
string Address1 = DT.Rows[j][4].ToString();
string Address2 = DT.Rows[j][5].ToString();
string City = DT.Rows[j][6].ToString();
string strSql = “insert into Usersdb(EmailAddress,FirstName,
LastName,Address1,Address2,City) “;
strSql = strSql + “values(’” + EmailAddress + “‘,’” + FirstName + “‘,
‘” + LastName + “‘,’” + Address1 + “‘,’” + Address2 + “‘,’” + City + “‘)”;
SqlCommand comm = new SqlCommand(strSql, conn);
comm.ExecuteNonQuery();
if (j == DT.Rows.Count - 1)
{
Label1.Visible = true;
}
else
{
Label1.Visible = false;
}
}
conn.Close();
}

单击【Excel数据写入数据库中】按钮,定义一个string类型的变量,用来为LoadData传入参数,然后调用LoadData自定义方法将指定的Excel中的数据表导入到SQL Server数据库中。【Excel数据写入数据库中】按钮的Click事件代码如下:

protected void Button1_Click(object sender, EventArgs e)
{
string StyleSheet = “Sheet1″;
LoadData(StyleSheet);
}

单击【显示导入SQL的Excel数据】按钮,将导入SQL Server数据库中的Excel数据绑定到GridView控件上,显示在页面中。【显示导入SQL的Excel数据】按钮的Click事件代码如下:

protected void Button2_Click(object sender, EventArgs e)
{
string strConn = “Data Source=(local);DataBase=Usersdb;Uid=sa;Pwd=”;
string sqlstr= “select * from Usersdb”;
SqlConnection conn = new SqlConnection(strConn);
SqlDataAdapter myda = new SqlDataAdapter(sqlstr,conn);
DataSet ds = new DataSet();
conn.Open();
myda.Fill(ds, “Usersdb”);
GridView1.DataSource = ds;
GridView1.DataBind();
conn.Close();
}

说明:程序中进行与Excel和SQL Server数据库相关的操作时,首先需要分别添加System.Data.OleDb和System.Data.SqlClient命名空间。

3.补充说明

除了可以将Excel中数据导入到SQL Server数据库外,还可以将其转换为.txt文本文件格式,或者导入到Access或Oracle等数据库中。

象EXCEL一样冻结web报表表头

01.05.2009 by web报表 - 1 Comment - 0
Posted in web报表

报表很大,看的时候就需要滚动条了,但是一滚整个报表都动了,表头也看不到了,这看着就太麻烦了,老要来回来去地拖上拖下拖左拖右。

EXCEL想到了这个问题,提供了冻结窗格的功能,可以把上边或左边的几列固定下来,这样,再怎么滚动表头总是不动,就不会看走眼了。

可惜的是,在WEB上的HTML表格却没直接提供这个功能,它的TABLE只能整个地滚。怎么能做出象EXCEL那样冻结表头的效果呢?

简单的想法,是把表格人为地分为上下两块,上半截表头不动,下半截表体自己滚动,这不就完了吗?看起来也不算多麻烦了。

可别高兴得太早,这仅仅解决了上边的表头,如果我们足够不幸的话,会碰到即长且宽的表格(概率不小),这时还需要有个左表头。分两块显然不够了,那分四块行吗?左上角一小块不同的,其右边是上表头,下边是左表头,右下部分是表体。

事还没算完,这几块之间还会有关联。比如表体横向滚动时,需要让上表头跟着一起滚动,否则上下就错位了;同样,纵向滚动时左表头也要与表体同步。这就还要写一堆JS代码让这几片表格一起滚动。

哎,可麻烦死了。

幸运的是采用润乾报表,这事就轻松多了,只要两步:

1.在设计报表时将需要冻结的行和列选中,设为表头行和表头列。

2.在发布报表时的tag属性中设置needScroll=”yes”,还可以用scrollWidth和scrollHeight设置滚动区域的大小。

上面说的麻烦事都被润乾报表做完了。

看一下效果:

一切OK,搞定!