「java报表导出工具」java实现导出excel报表

博主:adminadmin 2023-01-20 10:15:11 364

今天给各位分享java报表导出工具的知识,其中也会对java实现导出excel报表进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何用JAVA语言实现报表导出

就是使用poi工具,你自己去下载poi.jar吧。

public class CreateXL

{

 public static String xlsFile="test.xls"; //产生的Excel文件的名称

 public static void main(String args[])

 {

try

{

 HSSFWorkbook workbook = new HSSFWorkbook(); //产生工作簿对象

 HSSFSheet sheet = workbook.createSheet(); //产生工作表对象

 //设置第一个工作表的名称为firstSheet

 //为了工作表能支持中文,设置字符编码为UTF_16

 workbook.setSheetName(0,"firstSheet",HSSFWorkbook.ENCODING_UTF_16);

 //产生一行

 HSSFRow row = sheet.createRow((short)0);

 //产生第一个单元格

 HSSFCell cell = row.createCell((short) 0);

 //设置单元格内容为字符串型

 cell.setCellType(HSSFCell.CELL_TYPE_STRING);

 //为了能在单元格中写入中文,设置字符编码为UTF_16。

 cell.setEncoding(HSSFCell.ENCODING_UTF_16);

 //往第一个单元格中写入信息

 cell.setCellValue("测试成功");

 FileOutputStream fOut = new FileOutputStream(xlsFile);

 workbook.write(fOut);

 fOut.flush();

 fOut.close();

 System.out.println("文件生成...");

 //以下语句读取生成的Excel文件内容

 FileInputStream fIn=new FileInputStream(xlsFile);

 HSSFWorkbook readWorkBook= new HSSFWorkbook(fIn);

 HSSFSheet readSheet= readWorkBook.getSheet("firstSheet");

 HSSFRow readRow =readSheet.getRow(0);

 HSSFCell readCell = readRow.getCell((short)0);

 System.out.println("第一个单元是:" + readCell.getStringCellValue());

}

catch(Exception e)

{

 System.out.println(e);

}

 }

}

与数据库结合使用

使用POI,结合JDBC编程技术,我们就可以方便地将数据库中的数据导出生成Excel报表。其关键代码如下:

/*把数据集rs中的数据导出至Excel工作表中。

*传入参数:数据集rs,Excel文件名称xlsName,工作表名称sheetName。

*/

public static void resultSetToExcel(ResultSet rs,String xlsName,String sheetName) throws Exception

{

 HSSFWorkbook workbook = new HSSFWorkbook();

 HSSFSheet sheet = workbook.createSheet();

 workbook.setSheetName(0,sheetName,HSSFWorkbook.ENCODING_UTF_16);

 HSSFRow row= sheet.createRow((short)0);;

 HSSFCell cell;

 ResultSetMetaData md=rs.getMetaData();

 int nColumn=md.getColumnCount();

 //写入各个字段的名称

 for(int i=1;i=nColumn;i++)

 {

cell = row.createCell((short)(i-1));

cell.setCellType(HSSFCell.CELL_TYPE_STRING);

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

cell.setCellValue(md.getColumnLabel(i));

 }

 int iRow=1;

 //写入各条记录,每条记录对应Excel中的一行

 while(rs.next())

 {row= sheet.createRow((short)iRow);;

for(int j=1;j=nColumn;j++)

{

 cell = row.createCell((short)(j-1));

 cell.setCellType(HSSFCell.CELL_TYPE_STRING);

 cell.setEncoding(HSSFCell.ENCODING_UTF_16);

 cell.setCellValue(rs.getObject(j).toString());

}

iRow++;

 }

 FileOutputStream fOut = new FileOutputStream(xlsName);

 workbook.write(fOut);

 fOut.flush();

 fOut.close();

 JOptionPane.showMessageDialog(null,"导出数据成功!");

}

支持Java的报表工具都有哪些?

支持Java的报表工具 :

我们所说的”支持”Java的报表工具.其实就是非Java的报表工具,但是可以在Java程序中调用. 这样的产品很多,总的讲一大类是采用独立报表服务器的,如Bo/Crystal Report,Brio,Cognos等等,另一大类是在前端有控件的,如数巨报表等。

关于Java的报表工具 我们可以到思迈特软件Smartbi了解一下,广州思迈特软件Smartbi有限公司(思迈特软件Smartbi)成立于2011年,致力于为企业客户提供一站式商业智能解决方案,以提升和挖掘企业客户的数据价值。

“思迈特软件Smartbi”是企业级商业智能和大数据分析品牌,经过多年持续自主研发,凝聚大量商业智能最佳实践经验,整合了各行业的数据分析和决策支持的功能需求。

报表工具靠不靠谱,来试试Smartbi,思迈特软件Smartbi经过多年持续自主研发,凝聚大量商业智能最佳实践经验,整合了各行业的数据分析和决策支持的功能需求。满足最终用户在企业级报表、数据可视化分析、自助探索分析、数据挖掘建模、AI智能分析等大数据分析需求。

思迈特软件Smartbi个人用户全功能模块长期免费试用

马上免费体验:Smartbi一站式大数据分析平台

java 有哪些免费报表工具啊,可以报表打印。

1. BIRT Project

BIRT报表是一款非常流行的开源报表开发工具。拥有和Dreamweaver一般的操作界面,可以像画table一样画报表,生成图片,导出Excel,html分页样样齐全,样式和script设置简单。

2. Pentaho

Pentaho Report Designer是一款所见即所得的开源报表设计工具。在设计报表的时候,用户可以随意拖放和设置各种报表的控件,还可以快速方便地设置报表的数据来源。在报表的设计过程中,用户可以随时预览报表的结果。

3. OpenRPT

OpenRPT支持各种平台PostgreSQL的最佳化的图形化界面的SQL报表撰写。

4. OpenReports

OpenReports 提供基于web 的灵活报表解决方案,支持 PDF,HTML 和XLS 报表格式,基于WebWork,Hibernate 和 Velocity 开发完成,并且还提供一个整合了Tomcat 的OpenReports-Tomcat 文件下载。使用Java进行开发,JasperReports 作为报表引擎。

5. FreeReportBuilder

FreeReportBuilder是一个Java报表工具,可以与任何数据库正常工作,只需要有一个JDBC驱动程序。

6. JMagallanes

JMagallanes是一个开源的使用Java/J2EE开发的Olap和动态报表应用程序。JMagallanes结合了静态报表(基于JasperReports),Swing pivot表格(用于OLAP分析),和图表(基于JFreeChart)。它可从多种数据源(如:SQL,Excel,XML和其它)读取数据并可生成多种输出如:PDF,XML,应用程序特殊文件用于将来报表的脱机查看。

7. ART – A lightweight reporting solution

ART是一个轻量级的,多平台基于web的报表引擎。定制容易,支持图形报表,支持通过插件把结果导出为各种格式。

8. DataVision

DataVision是一个用Java编写的类似于Crystal Reports的报表工具。它支持多种数据源(JDBC, 文本文件) ,输出格式有HTML, XML, PDF, LaTeX, 逗号或tab分隔的数据文件, 和DocBook。它让你用一个支持拖放操作的GUI设计报表,报表描述存储为XML。

9. The Wabit – Open Source Reporting Tool

Wabit 是一个跨平台开源的报表工具,提供了一个GUI程序和可嵌入式的接口。

10. Rlib

RLIB是一个基于XML的报表引擎,可以生成PDF,HTML,CSV,文本格式

11. JavaEye Reporting Tool – JERT

JERT是一个开放源代码的,基于web的,数据库报表工具,它能够让你不需要编程而能创建各种灵活的报表。

12. iReport

iReport是一个能够创建复杂报表的开源项目,并且它能调用JasperReports库应用于任何一种java应用程序,使用纯Java编写,拥有非常丰富的图形界面。

参考:

最理想的JAVA报表工具有哪些?

润乾报表是一个纯JAVA的企业级报表工具,是J2EE环境下开发WEB报表应用的最好工具。

润乾报表作为纯JAVA报表工具,在J2EE的Web报表应用中其集成性和部署能力都明显优于BO/Crystal Report, Brio等非Java产品;在JAVA报表展现方面它不仅能实现其他报表产品所能实现的常规的报表展现,更能实现其他工具不能实现的EXCEL精确导出等功能;在JAVA报表设计方面,更是以其创新的新一代报表模型将报表设计效率大幅度提高,相比其他产品具有巨大优势。

集成与部署:

润乾报表采用纯JAVA开发,非常适合在J2EE下集成,其运行环境非常简单,只要有JDK即可工作,可与应用非常紧密的集成,轻易部署在各种操作系统如Windows, Linux, Unix下。

润乾报表3.0的服务器是个逻辑概念,并没有一个物理的服务器在运行。它是作为应用服务器上的一个应用提交的,或者直接向应用程序员提交JAR包。应用程序员可以简单地通过Taglib标记进行报表的发布,也可以使用完整的JAVA API获得更深入的控制力度。

许多其他JAVA报表产品如CRYSTAL REPORT/BO,Cognos等都需采用独立的报表服务器,而作为100%的JAVA报表工具,润乾报表提供了更高的运行效率,为程序员提供了更大的灵活性与可控制,实现了与应用程序的无缝衔接,并且可以充分利用应用服务器的各种能力,如平衡负载、统一部署等。

Java报表展现:

润乾报表不需安装控件,可以实现纯HTML报表方式,可以支持PDF,EXCEL输出,提供了全部的页面与打印控制,能很多地满足Web报表的展现需要。同时,润乾报表对图表有良好的支持,可以生成柱图、饼图、折线图等十几种图表。

Java报表设计:

润乾报表的核心特点在于开创性地提出了新一代报表模型,采用了革命性的多源分片、不规则分组、动态格间运算、行列对称等技术,使得复杂JAVA报表的设计简单化,以往难以实现的报表可以轻松实现,避免了大量的复杂SQL编写与前期数据准备,JAVA报表设计的效率提高了一个数量级,远远超越了其他各种JAVA报表工具。

填报:

除此之外,润乾报表还提供了强有力的填报功能,不仅提供了灵活的表单设计和自动填写控制功能,而且支持离线填报、批量导入、汇总填报等多种方式,可以以先进的动态库表关联技术实现复杂的复合表单填报并保证数据的一致性,其填报能力远远超出同类产品。

润乾报表作为纯JAVA的报表工具,在J2EE的Web报表应用中其集成性和部署能力都明显优于BO/Crystal Report, Brio等非Java产品;在报表展现方面它不仅能实现其他报表产品所能实现的常规的报表展现,更能实现其他工具不能实现的EXCEL精确导出等功能;在报表设计方面,更是以其创新的新一代报表模型将报表设计效率大幅度提高,相比其他产品具有巨大优势。

可以说,润乾报表在Web报表工具的各个关键方面均全面达到先进水平,而在报表设计方面更是出类拔萃,无疑是最好的Java报表工具,是J2EE环境下开发WEB报表应用的最优选择,真正的做到商业智能,随需而动。

最理想的JAVA报表工具有哪些?

JasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表。JasperReports

支持PDF、HTML、XLS、CSV和XML文件输出格式。JasperReports是当前Java开发者最常用的报表工具。

Pentaho是一个以工作

流为核心的、强调面向解决方案而非工具组件的BI套件,整合了多个开源项目,目标是和商业BI相抗衡。它偏向于与业务流程相结合的BI解决方案,侧重于大

中型企业应用。它允许商业分析人员或开发人员创建报表,仪表盘,分析模型,商业规则和 BI 流程。

功能和特点

◆ 工作流引擎:Shark and JaWE

◆ 数据库:Firebird RDBMS

集成管理和开发环境:Eclipse

◆ 报表工具:Eclipse BIRT

◆ ETL工具:Enhydra/Kettle

◆ OLAP

Server:Mondrian

◆ OLAP展示:JPivot

◆ 数据挖掘组件:Weka

应用服务器和Portal服务器:JBoss

◆ 单点登陆服务及LDap认证:JOSSO

◆ 自定义脚本支持:Mozilla Rhino

Javascript脚本处理器

OpenReports

是一个基于web的报表解决方案,可为用户提供通过浏览器查看动态创建的PDF、HTML或XLS格式报表的能力。OpenReports

使用Java开发的,并使用JasperReports作为报表生成引擎。

JFreeReport (现改名为 Pentaho

Reporting)是一个用来生成报表的Java类库。它为Java应用程序提供一个灵活的打印功能并支持输出到打印机和PDF, Excel,

HTML和XHTML, PlainText, XML和CSV文件中。

XLS是基于Jakarta POI

API的Excel报表生成工具,可以生成精美的Excel格式报表。它采用标签的方式,类似JSP标签,写一个Excel模板,然后生成报表,非常灵活,简单!

BIRT是一个Eclipse-based开放源代码报表系统。它主要是用在基于Java与J2EE的Web应用程序上。BIRT主要由两部分组成:一个是基于Eclipse的报表设计和一个可以加到你应用服务的运行期组件。BIRT同时也提供一个图形报表制作引擎。

个人用过 JFreeReport JasperReports 感觉比较容易上手

java中怎么把报表导出到excel

导入数据库

@RequestMapping("/uploadOrderFile")

@ResponseBody

public Object uploadOrderFile(HttpServletRequest request, HttpServletResponse response,@RequestParam(value = "file") MultipartFile[] files) throws ServletException, IOException, ParseException{

Workbook rwb=null;

if(files!=null  files.length0){

       try {

     // String filePath = request.getSession().getServletContext().getRealPath("/") + "\\uploadOrderFile\\" +  files.getOriginalFilename();

     // System.out.println("----------"+filePath);

     rwb = Workbook.getWorkbook(files[0].getInputStream());

     Sheet rs=rwb.getSheet(0);//默认0是第一张表,或者rwb.getSheet(Sheet1)Excel要导入的表名

     int clos=rs.getColumns();//得到所有的列

     int rows=rs.getRows();//得到所有的行

        //存放Excel表抬头名称以及对应的列

        MapInteger,Object map=new HashMapInteger, Object();

        //实体类集合存放每次循环获得的值

        ListMedicine medicineList=new ArrayListMedicine();  

        for (int i = 0; i  rows; i++) {

          //创建实体类

        Medicine medicine=new Medicine();

         if(i==0){//遍历第一行获取抬头跟对应的列

          for (int j = 0; j clos; j++) {//取得每个抬头名称对应的列           

          if(rs.getCell(j, i).getContents().equals("品名")){

          map.put(j,"品名");

          }else if(rs.getCell(j, i).getContents().equals("商品编号")){

          map.put(j,"商品编号");

          }else if(rs.getCell(j, i).getContents().equals("生产日期")){

          map.put(j,"生产日期");

          }else if(rs.getCell(j, i).getContents().equals("产地")){

          map.put(j,"产地");  

          }else if(rs.getCell(j, i).getContents().equals("生产厂家")){

          map.put(j,"生产厂家");

          }else if(rs.getCell(j, i).getContents().equals("批号")){

          map.put(j,"批号");

          }

          }

         }else{         

          //循环遍历map 》》》存的Excel表的抬头名称以及对应的列

          for (int j = 0; j  clos; j++) {

          if(map.get(j)==null){//如果=null 进入下一个循环

          continue;

          }

          if(map.get(j).equals("品名")){

          //如果为空结束当前循环,进入下一个循环

         if(rs.getCell(j, i).getContents()==null||rs.getCell(j, i).getContents().equals("")){

         continue;

         }           

          medicine.setMedicineName(rs.getCell(j, i).getContents());

          }else if(map.get(j).equals("商品编号")map.get(j)!=null){

          //如果为空结束当前循环,进入下一个循环

         if(rs.getCell(j, i).getContents()==null||rs.getCell(j, i).getContents().equals("")){

         continue;

         }  

          medicine.setMedicineCode(rs.getCell(j, i).getContents());           

          }else if(map.get(j).equals("生产日期")map.get(j)!=null){

          medicine.setCreateTime(rs.getCell(j, i).getContents());

          if(rs.getCell(j, i).getContents()!=null  !rs.getCell(j, i).getContents().equals("")){

          //如果生产日期存在 则+三年给到期日期赋值

          //CommonUtil.getMedicineEffectiveTime为封装好的类

          medicine.setEffectTime(CommonUtil.getMedicineEffectiveTime(rs.getCell(j, i).getContents(),3));

          }

          }else if(map.get(j).equals("产地")map.get(j)!=null){

          medicine.setAddress(rs.getCell(j, i).getContents());

          

          }else if(map.get(j).equals("生产厂家")map.get(j)!=null){

          medicine.setProducingArea(rs.getCell(j, i).getContents());

        

          }else if(map.get(j).equals("批号")map.get(j)!=null){

          medicine.setBatchNumber(rs.getCell(j, i).getContents());

          }         

          }

          medicineList.add(medicine);//获得的值放入集合中                    

         }         

        }

        //新增用到的list

        ListMedicine addList=new ArrayListMedicine(); 

        //修改用到的list

        ListMedicine updateList=new ArrayListMedicine(); 

        //导入数据

        for(int i=0;imedicineList.size();i++){      

         //判断商品编号是否存在

         if(medicineService.selectMedicineCode(medicineList.get(i).getMedicineCode()).size()0){

         //如果存在则修改         

         updateList.add(medicineList.get(i));        

         }else{         

         addList.add(medicineList.get(i));        

         }

      }

        int update=0;

        int add=0;

        if(updateList!=nullupdateList.size()0){

         update=medicineService.updateMedicine(updateList);         

        }

        if(addList!=nulladdList.size()0){

         add= medicineService.addMedicine(addList);        

        }

        if(update0||add0){

         return new ResponseModel().attr(ResponseModel.KEY_DATA,"数据导入成功!");

        }else{

         return new ResponseModel().attr(ResponseModel.KEY_ERROR,"数据导入失败!");

        }

} catch (BiffException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

    

    }else{

     return new ResponseModel().attr(ResponseModel.KEY_ERROR,"没有需要导入的数据!");

    }

return null;

}

导出

package beans.excel;

import java.io.IOException;

import java.io.OutputStream;

import java.util.Calendar;

import java.util.Date;

import jxl.Workbook;

import jxl.format.Colour;

import jxl.format.UnderlineStyle;

import jxl.write.Boolean;

import jxl.write.DateFormats;

import jxl.write.DateTime;

import jxl.write.Label;

import jxl.write.Number;

import jxl.write.WritableCellFormat;

import jxl.write.WritableFont;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

import jxl.write.WriteException;

public class MutiStyleExcelWrite {

    public void createExcel(OutputStream os) throws WriteException,IOException {

        //创建工作薄

        WritableWorkbook workbook = Workbook.createWorkbook(os);

        //创建新的一页

        WritableSheet sheet = workbook.createSheet("First Sheet", 0);

        //构造表头

        sheet.mergeCells(0, 0, 4, 0);//添加合并单元格,第一个参数是起始列,第二个参数是起始行,第三个参数是终止列,第四个参数是终止行

        WritableFont bold = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);//设置字体种类和黑体显示,字体为Arial,字号大小为10,采用黑体显示

        WritableCellFormat titleFormate = new WritableCellFormat(bold);//生成一个单元格样式控制对象

        titleFormate.setAlignment(jxl.format.Alignment.CENTRE);//单元格中的内容水平方向居中

        titleFormate.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//单元格的内容垂直方向居中

        Label title = new Label(0,0,"JExcelApi支持数据类型详细说明",titleFormate);

        sheet.setRowView(0, 600, false);//设置第一行的高度

        sheet.addCell(title);

        

        //创建要显示的具体内容

        WritableFont color = new WritableFont(WritableFont.ARIAL);//选择字体

        color.setColour(Colour.GOLD);//设置字体颜色为金黄色

        WritableCellFormat colorFormat = new WritableCellFormat(color);

        Label formate = new Label(0,1,"数据格式",colorFormat);

        sheet.addCell(formate);

        Label floats = new Label(1,1,"浮点型");

        sheet.addCell(floats);

        Label integers = new Label(2,1,"整型");

        sheet.addCell(integers);

        Label booleans = new Label(3,1,"布尔型");

        sheet.addCell(booleans);

        Label dates = new Label(4,1,"日期格式");

        sheet.addCell(dates);

        

        Label example = new Label(0,2,"数据示例",colorFormat);

        sheet.addCell(example);

        //浮点数据

        //设置下划线

        WritableFont underline= new WritableFont(WritableFont.ARIAL,WritableFont.DEFAULT_POINT_SIZE,WritableFont.NO_BOLD,false,UnderlineStyle.SINGLE);

        WritableCellFormat greyBackground = new WritableCellFormat(underline);

        greyBackground.setBackground(Colour.GRAY_25);//设置背景颜色为灰色

        Number number = new Number(1,2,3.1415926535,greyBackground);

        sheet.addCell(number);

        //整形数据

        WritableFont boldNumber = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);//黑体

        WritableCellFormat boldNumberFormate = new WritableCellFormat(boldNumber);

        Number ints = new Number(2,2,15042699,boldNumberFormate);

        sheet.addCell(ints);

        //布尔型数据

        Boolean bools = new Boolean(3,2,true);

        sheet.addCell(bools);

        //日期型数据

        //设置黑体和下划线

        WritableFont boldDate = new WritableFont(WritableFont.ARIAL,WritableFont.DEFAULT_POINT_SIZE,WritableFont.BOLD,false,UnderlineStyle.SINGLE);

        WritableCellFormat boldDateFormate = new WritableCellFormat(boldDate,DateFormats.FORMAT1);

        Calendar c = Calendar.getInstance();

        Date date = c.getTime();

        DateTime dt = new DateTime(4,2,date,boldDateFormate);

        sheet.addCell(dt);

        //把创建的内容写入到输出流中,并关闭输出流

        workbook.write();

        workbook.close();

        os.close();

        

    }

}

关于java报表导出工具和java实现导出excel报表的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。