「java开源报表工具导出」java报表开发工具

博主:adminadmin 2022-12-14 21:03:06 64

本篇文章给大家谈谈java开源报表工具导出,以及java报表开发工具对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

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开源的报表工具哪个好用

JasperReports

JasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表。JasperReports支持PDF、HTML、XLS、CSV和XML文件输出格式。JasperReports是当前Java开发者最常用的报表工具。

还有好多..

JAVA如何实现导出大数量EXCEL报表 数据大概100W条

好像是你的excel文件问题,你另外新建一个,再写点东西在里面试下随便给你一个我以前用过的importjava.io.*;importjava.text.SimpleDateFormat;importjava.util.*;importjava.sql.*;importjava.util.Date;importjava.util.HashMap;importjava.util.Map;importjxl.*;publicclassSimUpdate{privateStringfileName;publicSimUpdate(StringfileName){this.fileName=fileName;}staticMaptNames;static{tNames=newHashMap();}//下面是主要代码privatevoidupdateDb(){try{Connectionconn=DbPool.connectDB();if(conn!=null){Statementstmt=conn.createStatement();/**********************************************/jxl.Workbookrwb=null;try{//构建Workbook对象只读Workbook对象//直接从本地文件创建Workbook//从输入流创建WorkbookInputStreamis=newFileInputStream(fileName);rwb=Workbook.getWorkbook(is);//Sheet(术语:工作表)就是Excel表格左下角的Sheet ,Sheet ,Sheet 但在程序中//Sheet的下标是从 开始的//获取第一张Sheet表Sheetrs=rwb.getSheet( );//获取Sheet表中所包含的总列数intrsColumns=rs.getColumns();//获取Sheet表中所包含的总行数intrsRows=rs.getRows();//获取指这下单元格的对象引用StringsimNumber="",termSeqId="";//指定SIM卡号及序列号for(inti= ;i ){System.out.println("成功插入第"+i+"条数据");}}}//以下代码为写入新的EXCEL,这里不使用,所以注释/*//利用已经创建的Excel工作薄创建新的可写入的Excel工作薄jxl.write.WritableWorkbookwwb=Workbook.createWorkbook(newFile("D://Book .xls"),rwb);//读取第一张工作表jxl.write.WritableSheetws=wwb.getSheet( );//获取第一个单元格对象jxl.write.WritableCellwc=ws.getWritableCell( , );//决断单元格的类型,做出相应的转化if(wc.getType()==CellType.LABEL){Labell=(Label)wc;l.setString("Thevaluehasbeenmodified.");}//写入Excel对象wwb.write();wwb.close();*/}catch(Exceptione){e.printStackTrace();}finally{//操作完成时,关闭对象,翻译占用的内存空间rwb.close();}/*********************************************/}}catch(Exceptione){e.printStackTrace();}}}

java怎样实现orecol数据库导出excel

用java做的话:

1.需要用java程序从数据库把数据读出来。

2.把读出来的数据用POI生成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程序中怎么实现报表导入导出功能?

这是finereport报表软件的导入报表过程:

读取某一路径下的模板cpt文件,并将其转为WorkBook对象,有两种读取报表的

方法:一、直接以文件绝对路径读取;二、先定义报表运行环境,然后从运行环

境中直接读取相对路径下的模板。

1.1 绝对路径读取模板

// 读取模板

File cptfile = new File("C:\\FineReport6.5\\WebReport\WEB-

INF\\reportlets\\gettingstarted.cpt");

TemplateImporter tplimp = new TemplateImporter();

WorkBook workbook = tplimp.generateTemplate(cptfile);

1.2 读取报表运行环境下的模板

//定义报表运行环境,读取环境下的报表

String envPath = " C:\\FineReport6.5\\WebReport \\WEB-INF";

FRContext.setCurrentEnv(new LocalEnv(envPath));

TemplateWorkBook workbook = FRContext.getCurrentEnv

().readTemplate("gettingstarted.cpt");

更多的你可以去官网下载一个设计器,去二次开发文档里面看看。

java开源报表工具导出的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java报表开发工具、java开源报表工具导出的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-14,除非注明,否则均为首码项目网原创文章,转载请注明出处。