精华内容
下载资源
问答
  • java实现导出excel报表
    2021-02-12 17:54:24

    当前B/S模式已成为应用开发的主流,而在开发企业办公系统的过程中,常常有客户这样子要求:把系统数据库中的数据导出到Excel,用户查看报表时直接用Excel打开。或者是:用户已经习惯用Excel打印,也就要求必须把数据导入到Excel文件。这样在我们实际的开发中,很多时候需要实现导出Excel的应用。目前从网上找到的比较常用的实现Java导出Excel的技术有三种 POI、JXL、PageOffice,(CSV技术就不讨论了,它只是生成以逗号间隔的文本文件)下面我就分析一下这三种方案。

    POI 是apache的子项目,目标是处理ole2对象,它提供了一组操纵Windows文档的Java API。用于操作Excel格式文件的是HSSF接口,处理MS Excel对象,它不象我们用CSV生成的仅仅是没有格式的可以由Excel转换的文本文件,而是模拟操作Excel对象,你可以控制一些属性如sheet,cell等等。HSSF 是Horrible SpreadSheet Format的缩写,翻译过来就是“讨厌的电子表格格式”。 HSSF的名字很不严肃,但通过HSSF,你可以用Java代码来修改Excel文件内容。HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型”,接口比较抽象,不好理解。

    JXL属于开放源码项目,通过JXL同样可以修改Excel文件中的数据内容。JXL 由于其小巧 易用的特点, 逐渐已经取代了 POI-excel的地位, 成为更多的java开发人员生成excel文件的首选。JXL的特点:支持Excel 2000标准格式、支持字体、数字、日期格式化操作 、支持对单元格加阴影和加色彩、比POI更小更省内存。这些功能能够大致满足用户的一般需求。

    PageOffice封装Office VBA接口为Java调用的Excel简化对象模型,指的是完全用Java实现的一组Excel存取对象,便于服务器端Java代码直接调用。这套对象模型不是简单地模仿Excel的VBA对象接口,而是从开发者常用的编程代码角度,结合数据库数据访问的特点抽象出的一套实用、调用简单的对象库,把原本复杂的Excel读写操作简单化了,同时解决了Excel文件的在线打开问题,用户可以直接在网页中查看和编辑Excel,无需繁琐的上传下载操作。

    提供一个pageoffice 导出excel 文件的链接, 可以参考参考.

    更多相关内容
  • java导出excel报表

    2021-03-06 04:49:53
    1.java导出excel报表:package cn.jcenterhome.util;import java.io.OutputStream;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletResponse;import jxl.Workbook;import jxl....

    1.java导出excel报表:

    package cn.jcenterhome.util;

    import java.io.OutputStream;

    import java.util.List;

    import java.util.Map;

    import javax.servlet.http.HttpServletResponse;

    import jxl.Workbook;

    import jxl.format.Alignment;

    import jxl.format.Border;

    import jxl.format.BorderLineStyle;

    import jxl.format.VerticalAlignment;

    import jxl.write.Label;

    import jxl.write.WritableCellFormat;

    import jxl.write.WritableFont;

    import jxl.write.WritableSheet;

    import jxl.write.WritableWorkbook;

    public class ExportExcel {

    public  final static String exportExcel(List header,

    List> list,String xlsName,String

    type,HttpServletResponse response) {

    String result="系统提示:Excel文件导出成功!";

    // 以下开始输出到EXCEL

    try {

    //定义输出流,以便打开保存对话框______________________begin

    response.reset();// 清空输出流

    response.setHeader("Content-disposition", "attachment;

    filename="+ new String(xlsName.getBytes("GB2312"),"ISO8859-1"));

    // 设定输出文件头

    response.setContentType("application/octet-stream");// 定义输出类型

    OutputStream os = response.getOutputStream();// 取得输出流

    //定义输出流,以便打开保存对话框_______________________end

    /** **********创建工作簿************ */

    WritableWorkbook workbook = Workbook.createWorkbook(os);

    /** ************设置单元格字体************** */

    WritableFont NormalFont = new WritableFont(WritableFont.ARIAL, 10);

    WritableFont BoldFont = new WritableFont(WritableFont.ARIAL, 10,WritableFont.BOLD);

    /** ************以下设置三种单元格样式,灵活备用************ */

    // 用于标题居中

    WritableCellFormat wcf_center = new WritableCellFormat(BoldFont);

    wcf_center.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条

    wcf_center.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐

    wcf_center.setAlignment(Alignment.CENTRE); // 文字水平对齐

    wcf_center.setWrap(false); // 文字是否换行

    // 用于正文居左

    WritableCellFormat wcf_left = new WritableCellFormat(NormalFont);

    wcf_left.setBorder(Border.NONE, BorderLineStyle.THIN); // 线条

    wcf_left.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐

    wcf_left.setAlignment(Alignment.LEFT); // 文字水平对齐

    wcf_left.setWrap(false); // 文字是否换行

    WritableSheet [] sheets =  null;

    if(list!=null&&list.size()>0){

    /** **********创建工作表************ */

    int scount = list.size()/65535 + ((list.size()%65535)>0?1:0);

    sheets = new WritableSheet[scount];

    for(int i=0;i

    WritableSheet sheet = workbook.createSheet("Sheet"+i+1, i);

    /** **********设置纵横打印(默认为纵打)、打印纸***************** */

    jxl.SheetSettings sheetset = sheet.getSettings();

    sheetset.setProtected(false);

    sheets[i]=sheet;

    }

    /** ***************以下是EXCEL开头大标题,暂时省略********************* */

    //sheet.mergeCells(0, 0, colWidth, 0);

    //sheet.addCell(new Label(0, 0, "XX报表", wcf_center));

    /** ***************以下是EXCEL第一行列标题********************* */

    for(int j=0;j

    for(int i=0;i

    sheets[j].addCell(new Label(i, 0,header.get(i),wcf_center));

    }

    }

    }else{

    sheets = new WritableSheet[header.size()];

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

    /** **********设置纵横打印(默认为纵打)、打印纸***************** */

    jxl.SheetSettings sheetset = sheet.getSettings();

    sheetset.setProtected(false);

    sheets[0]=sheet;

    for(int i=0;i

    sheets[0].addCell(new Label(i, 0,header.get(i),wcf_center));

    }

    }

    /** ***************以下是EXCEL正文数据********************* */

    if(list!=null){

    for (int i = 0; i < list.size(); i++)

    {

    Map value=list.get(i);

    int s = ((i+1)/65535)+(((i+1)%65535)>0?1:0)-1;

    System.out.println("export i position is :"+i+";s value is :"+s);

    int j = i%65535;

    WritableSheet sheet = sheets[s];

    if(type.equals("exportAllOrder")){

    sheet.addCell(new Label(0,

    j+1,value.get("username")==null?"":value.get("username").toString(),wcf_left));

    sheet.addCell(new Label(1, j+1,value.get("orderNo")==null?"":value.get("orderNo").toString(),wcf_left));

    sheet.addCell(new Label(2,

    j+1,value.get("ordertime")==null?"":value.get("ordertime").toString(),wcf_left));

    sheet.addCell(new Label(3,

    j+1,value.get("ordermoney")==null?"":value.get("ordermoney").toString(),wcf_left));

    sheet.addCell(new Label(4,

    j+1,value.get("realMoneyS")==null?"":value.get("realMoneyS").toString(),wcf_left));

    String orderstatu=value.get("orderstatu")==null?"":value.get("orderstatu").toString();

    String orderstatus="";

    if(orderstatu.equals("0")){

    orderstatus="未支付";

    }else if(orderstatu.equals("1")){

    orderstatus="已支付";

    }else if(orderstatu.equals("-1")){

    orderstatus="已取消";

    }else if(orderstatu.equals("-2")){

    orderstatus="已失效";

    }

    sheet.addCell(new Label(5, j+1,orderstatus,wcf_left));

    sheet.addCell(new Label(6,

    j+1,value.get("paymentway")==null?"":value.get("paymentway").toString(),wcf_left));

    }

    }

    }

    /** **********将以上缓存中的内容写到EXCEL文件中******** */

    workbook.write();

    /** *********关闭文件************* */

    workbook.close();

    } catch (Exception e) {

    result="系统提示:Excel文件导出失败,原因:"+ e.toString();

    // System.out.println(result);

    e.printStackTrace();

    }finally{

    if(list!=null)list.clear();

    }

    return result;

    }

    2.调用导出方法

    List header=new ArrayList();

    header.add("用户名");

    header.add("订单号");

    header.add("订单时间");

    header.add("订单金额");

    header.add("实际金额");

    header.add("订单状态");

    header.add("支付方式");

    ExportExcel.exportExcel(header,list,"订单表.xls","exportAllOrder",response);

    return null;

    3.jsp页面,点击导出

    导出

    4.所使用jar包 jxl-2.6.jar

    下载地址:http://files.cnblogs.com/chiyj/excel%E5%AF%BC%E5%87%BAjar.rar

    展开全文
  • 本文主要介绍了Java根据模板导出Excel报表并复制模板生成多个Sheet页的方法,具有很好的参考价值。下面跟着小编一起来看下吧
  • ExportExcel类为导出Excel报表通用类。 1.将源代码导入eclipse中 2.部署项目,启动tomcat服务器 3.web页面具体路径:http://localhost:80/poi 4.点击Read excel 2003 or 2007,可以读取2003或2007版Excel 5.点击...
  • java导出excel报表工具类

    千次阅读 2018-06-08 11:50:46
    自己写的导出excel报表的公共方法,该公共方法主要用于非横向流动性报表导出 ExcelUtil.java 1.创立excel基本初始步骤 XSSFWorkbook wb = new XSSFWorkbook(); XSSFCellStyle cellStyle = excelUtil....

    自己写的导出excel报表的公共方法,该公共方法主要用于非横向流动性报表导出

    1.创立excel基本初始步骤

    		XSSFWorkbook wb = new XSSFWorkbook();
    		XSSFCellStyle cellStyle = excelUtil.setHeaderStyle(wb);//表头格式
    		XSSFCellStyle cellStyle2 = excelUtil.setContentStyle(wb);//表体
    
    		XSSFSheet sheet = wb.createSheet("newsheet");
    		XSSFRow head = sheet.createRow(0);

    2.创建表头格式方法

    	public XSSFCellStyle setHeaderStyle(XSSFWorkbook wb) {
    		XSSFCellStyle cellStyle = wb.createCellStyle();
    		cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 左右居中
    		cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);// 垂直居中
    		XSSFFont font = wb.createFont();
    		font.setFontName("宋体");
    		font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD); // 粗体显示
    		font.setFontHeightInPoints((short) 14);// 设置字体大小
    		cellStyle.setFont(font);// 选择需要用到的字体格式
    		return cellStyle;
    	}

    3.创立表体格式公共方法

    	public XSSFCellStyle setContentStyle(XSSFWorkbook wb) {
    		XSSFCellStyle cellStyle2 = wb.createCellStyle();
    		cellStyle2.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 左右居中
    		cellStyle2.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);// 垂直居中
    		XSSFFont font2 = wb.createFont();
    		font2.setFontName("宋体");
    		font2.setFontHeightInPoints((short) 12);
    		cellStyle2.setFont(font2);// 选择需要用到的字体格式
    		return cellStyle2;
    	}

    4.在复合excel表中创立子表头样式公共方法

    public XSSFCellStyle setSubHeaderStyle(XSSFWorkbook wb) {
    		XSSFCellStyle cellStyle = wb.createCellStyle();
    		cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 左右居中
    		cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);// 垂直居中
    		XSSFFont font = wb.createFont();
    		font.setFontName("仿宋_GB2312");
    		font.setColor(HSSFColor.GREY_50_PERCENT.index);
    		font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD); // 粗体显示
    		font.setFontHeightInPoints((short) 13);// 设置字体大小
    		cellStyle.setFont(font);// 选择需要用到的字体格式
    		return cellStyle;
    	}

    5.在复合excel表中创立子表体样式公共方法

    public XSSFCellStyle setSubContentStyle(XSSFWorkbook wb) {
    		XSSFCellStyle cellStyle2 = wb.createCellStyle();
    		cellStyle2.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 左右居中
    		cellStyle2.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);// 垂直居中
    		XSSFFont font2 = wb.createFont();
    		font2.setFontName("仿宋_GB2312");
    		font2.setColor(HSSFColor.GREY_50_PERCENT.index);
    		font2.setFontHeightInPoints((short) 11);
    		cellStyle2.setFont(font2);// 选择需要用到的字体格式
    		return cellStyle2;
    	}

    6.创立表头内容公共方法

    	private String [] headers = {"姓名","学号","性别","班级","语文","数学","英语",
    			"物理","化学","生物","总分","排名"};

        将初始步骤中创建的参数和表头传入此公共方法中

    	public  void createHeadCell(String[] headArray,XSSFCellStyle cellStyle,XSSFRow row){
    		int count = 0;
    		for(int i=0;i<headArray.length;i++){
    			XSSFCell headcell = row.createCell(count);
    			headcell.setCellStyle(cellStyle);
    			headcell.setCellValue(headArray[i]);
    			count++;
    		}
    	}	

    7.创立表体内容公共方法

    将每一行的表体插入一个list里,然后每创建一行掉一次该方法,list的内容要按表头顺序添加

    //创立表体
    	public  void createValueCell(List cellList, XSSFCellStyle cellStyle, XSSFRow row){
    		int count = 0;
    		for(int i=0;i<cellList.size();i++){
    			XSSFCell headcell = row.createCell(count);
    			headcell.setCellStyle(cellStyle);
    			if(cellList.get(i) == null){
    				headcell.setCellValue("");
    				count++;
    				continue;
    			}
    			headcell.setCellValue(cellList.get(i).toString());
    			count++;
    		}
    	}
    

    展开全文
  • java实现导出Excel多行表头复杂模板 一般我们都会选择poi来导出,选择一个比较好的ExcelUtils 但是对于初学者而言不了解poi的,还需从poi API文档去学习,如果是自学的话更好,如果是公司安排的任务,没有接触过有...
  • 主要为大家详细介绍了java实现导出Excel的功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Java 导出Excel报表

    2020-10-04 17:50:33
    // 创建 excel 页(一个 excel 是可以有多个页的) XSSFSheet sheet = sheets.createSheet(); // 创建行,数字表示索引,从0开始,1表示第二行 XSSFRow row = sheet.createRow(1); // 在行中指定列,数字表示索引,...

    首先在maven项目中添加依赖

     <dependency>
          <groupId>org.apache.poi</groupId>
          <artifactId>poi</artifactId>
          <version>4.0.1</version>
        </dependency>
        <dependency>
          <groupId>org.apache.poi</groupId>
          <artifactId>poi-ooxml</artifactId>
          <version>4.0.1</version>
        </dependency>
        <dependency>
          <groupId>org.apache.poi</groupId>
          <artifactId>poi-ooxml-schemas</artifactId>
          <version>4.0.1</version>
     </dependency>
    

    保存到本地文件代码示例:

     public void test() throws IOException {
     		// 创建 excel 对象
            XSSFWorkbook sheets = new XSSFWorkbook();
            // 创建 excel 页(一个 excel 是可以有多个页的)
            XSSFSheet sheet = sheets.createSheet();
            // 创建行,数字表示索引,从0开始,1表示第二行
            XSSFRow row = sheet.createRow(1);
            // 在行中指定列,数字表示索引,从0开始,1表示第二列
            XSSFCell cell = row.createCell(1);
            // 在列中写入数据
            cell.setCellValue("hello excel!");
            // 创建文件对象
            File file = new File("test.xlsx");
            // 创建写入到文件的流
            FileOutputStream out = new FileOutputStream(file);
            // 将 excel 数据写入文件中
            sheets.write(out);
            // 关闭 excel 流
            sheets.close();
            // 关闭文件流
            out.close();
        }
    

    web端下载代码示例:

    public void test() throws IOException {
     		XSSFWorkbook sheets = new XSSFWorkbook();
            sheets.createSheet();
            XSSFRow row = first.createRow(1);
            XSSFCell cell = row.createCell(1);
            cell.setCellValue("hello excel!");
            // 解决文件名中文乱码
            String fileName = new String("测试.xlsx".getBytes(), "iso-8859-1");
            // 设置 content-type
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
            // 设置 http 响应头
            response.addHeader("content-disposition", "attachment;fileName=" + fileName);
            // 获取响应输出流
            ServletOutputStream outputStream = response.getOutputStream();
            // 将数据写入响应流
            sheets.write(outputStream);
            outputStream.flush();
            // 关闭流
            sheets.close();
            outputStream.close();
        }
    
    展开全文
  • java 实现导出excel报表

    2021-02-13 01:19:32
    } } }/*** 功能 :设置excel表格默认样式 *@paramhWorkbook 需导出Excel数据 *@paramfontHeight 字体粗度 *@paramboldWeight 表格线的粗度 *@return */ public HSSFCellStyle getCellStyle(HSSFWorkbook hWorkbook, ...
  • 根据面向对象的思维,我们可以将所有的表头(即第一行)做... 项目里我遇到的需求是这样: 更改excel报表中表头的顺序,这个其实很简单.找到对应的实体类,改一下字段顺序就可以了 最近在旧项目维护中遇到了,整理分享一波~
  • Java导出Excel表格

    2020-12-22 20:49:37
     Web开发是,我们经常会遇见客户要求,把某些数据导出Excel,有利于客户分析和打印等等。下面是导出Excel下载的对应是JSP.  1.点击“导出”按钮时,触发exportExcel()的JS方法,JS方法跳到对应的JSP,实现导出...
  • 导出excel是我们经常会碰到的需求,找了网上的很多资料,太乱了,不太理想,最后索性自己整理了一份。 现在用的比较多的就是POI了,我在项目中用的还是旧版本的3.16 1:首先我们需要在pom.xml文件里导入maven依赖 ...
  • 主要介绍了Java导出excel时合并同一列中相同内容的行,需要的朋友可以参考下
  • 主要介绍了Java FineReport报表工具导出EXCEL的四种方式的相关资料,需要的朋友可以参考下
  • 本文将介绍Java Poi包的使用,并实现Excel报表的导入导出。前提摘要:在系统的管理后台当中中,Excel报表的导入导出已经是不不可避免的场景。值得一提的是支付宝和微信支付的批量转账也需要相应格式的Excel文档支持,...
  • JAVA导出excel工具类

    2021-11-04 23:04:52
    JAVA导出excel工具类 package com.kjxh.sectionrepresentative.util; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.xssf.usermodel.*; import javax.servlet.ServletOutputStream; ...
  • Java常用excel导出实现

    千次阅读 2022-03-11 14:16:42
    最近在做很多报表相关的开发,包括使用shell和hive将大数据汇总,然后页面做展示,还有将结果导出excel发送给相关负责人,由于导出表格的时候,有很多场景,现在针对几种常用场景,进行一些整理,方便以后使用。...
  • Java 根据Excel模板 导出Excel报表

    千次阅读 2020-06-05 15:35:49
    工作中肯定会有的报表导出的功能,咱先来理下思路 先定义好模板文件,存放到一个有权限访问的目录内 根据模板路径,获取模板文件 /** * 根据模板的路径获取模板文件对象 * classpath根目录下:/template/report...
  • Java导出Excel统计报表 合并单元格

    千次阅读 2021-10-09 21:32:42
    Apache POI是一种流行的API,允许程序员使用Java程序创建,修改和显示MS Office文件。 它是由Apache Software Foundation开发和分发的开源库,用于使用Java程序设计或...HSSF - 用于读取和写入MS-Excel文件的xls格式
  • 并不是每一场导出excel都报错,只是偶尔。然后导出的excel表无法打开,也无法修复。/**生成报表*/String filename = "报表"+TimeUtil.getCurrentTime()+".xls";try {filename = new String(filename.getBytes("GBK")...
  • java实现导出数据到Excel表格

    千次阅读 2021-10-13 16:40:21
    * 导出数据到excel表格 * @param request * @param response */ @RequestMapping("export") @ResponseBody public void export(HttpServletRequest request,HttpServletResponse response){ //获取手机号 ...
  • jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较弱一点。但jExcelAPI对中文支持非常好,API是纯Java的, 并不依赖Windows...
  • 相信好多小伙伴都遇到导出excel的时候,要合并单元个 那么它来了 它来了,直接都可以使用 平行丝滑导出,难道不香吗? 话不多说,直接怼 import java.io.FileNotFoundException; import java.io.IOException; import...
  • java导出复杂excel

    千次阅读 2021-03-16 09:53:26
    Java 导出复杂excel,多表格中有合并以及描述 实体类 package com.hs.report.entity.week; import lombok.Builder; import lombok.Data; import java.io.Serializable; @Data @Builder public class SnapshotReq<...
  • java实现导出excel

    2021-03-22 18:18:48
    //第二步,在webbook中添加一个sheet,对应Excel文件中的sheet HSSFSheet sheet=wb.createSheet("当日业务报表"); //第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short HSSFRow row=sheet....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,360
精华内容 4,544
关键字:

java实现导出excel报表