【Java excel】导出excel文件

TestExprot
package excel;

import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.util.CellRangeAddress;

public class TestExprot {

    public static void main(String[] args) {
        List<User> users = new ArrayList<>();
        for (int i = 1; i <= 20; i++) {
            users.add(new User(i, "桔梗" + i, "冰岛" + i, i % 2, new Date()));
        }
        String path = "D:/kikyo.xls";
        export(users, path);
    }

    /**
     * 导出
     *
     * @param users 数据
     * @param path  保存路径
     */
    public static void export(List<User> users, String path) {
        // 1,创建工作簿
        HSSFWorkbook workbook = new HSSFWorkbook();
        // 2,在工作簿里面创建sheet
        // workbook.createSheet()//只是创建名字为默认的sheetX
        HSSFSheet sheet = workbook.createSheet("用户数据");
        // 3,sheet的相关设置
        // sheet.setColumnHidden(columnIndex, hidden);设置某一列是否隐藏
        // sheet.setColumnWidth(1, 20*256);//设置某一列的宽度
        sheet.setDefaultColumnWidth(25);// 设置默认列度
//        sheet.setDefaultRowHeight((short) (20 * 20));// 设置默认行高

        // 合并
        CellRangeAddress region = new CellRangeAddress(0, 0, 0, 4);
        sheet.addMergedRegion(region);
        CellRangeAddress region2 = new CellRangeAddress(1, 1, 0, 4);
        sheet.addMergedRegion(region2);

        int row = 0;
        // 在sheet里面创建行
        HSSFRow row1 = sheet.createRow(row);
        // 在这一行里面创建一个单元格
        HSSFCell row1_cell1 = row1.createCell(0);
        // 向row1_cell1里面添加数据
        row1_cell1.setCellValue("用户数据");
        //创建标题样式
        HSSFCellStyle titleStyle = createTitleStyle(workbook);
        row1_cell1.setCellStyle(titleStyle);

        // 第二行
        row++;
        HSSFRow row2 = sheet.createRow(row);
        HSSFCell row2_cell1 = row2.createCell(0);
        //创建小标题样式
        HSSFCellStyle subTitleStyle = createSubTitleStyle(workbook);
        row2_cell1.setCellValue("总条数:" + users.size() + "  导出时间:" + new Date().toLocaleString());
        row2_cell1.setCellStyle(subTitleStyle);
        // 第三行
        String[] titles = {"用户ID", "用户名", "用户地址", "性别", "入职时间"};
        row++;
        HSSFRow row3 = sheet.createRow(row);
        //创建表头样式
        HSSFCellStyle tableHeaderStyle = createTableTitleStyle(workbook);
        for (int i = 0; i < titles.length; i++) {
            HSSFCell cell = row3.createCell(i);
            cell.setCellValue(titles[i]);
            cell.setCellStyle(tableHeaderStyle);
        }
        //创建基础样式
        HSSFCellStyle baseStyle = createBaseStyle(workbook);
        //第四行到最后
        for (int i = 0; i < users.size(); i++) {
            User user = users.get(i);
            row++;
            HSSFRow rowx = sheet.createRow(row);

            HSSFCell cell1 = rowx.createCell(0);
            cell1.setCellValue(user.getId());
            cell1.setCellStyle(baseStyle);

            HSSFCell cell2 = rowx.createCell(1);
            cell2.setCellValue(user.getName());
            cell2.setCellStyle(baseStyle);

            HSSFCell cell3 = rowx.createCell(2);
            cell3.setCellValue(user.getAddress());
            cell3.setCellStyle(baseStyle);

            HSSFCell cell4 = rowx.createCell(3);
            cell4.setCellValue(user.getSex() == 1 ? "男" : "女");
            cell4.setCellStyle(baseStyle);

            HSSFCell cell5 = rowx.createCell(4);
            // cell5.setCellValue(user.getBirth().toLocaleString());
            String birth = DateFormat.getDateTimeInstance().format(user.getBirth());
            cell5.setCellValue(birth);
            cell5.setCellStyle(baseStyle);
        }
        // 导出保存到D盘
        try {
            workbook.write(new File(path));
            System.out.println("导出成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 创建基础样式
     * 水平和垂直居中
     */
    public static HSSFCellStyle createBaseStyle(HSSFWorkbook workbook) {
        HSSFCellStyle style = workbook.createCellStyle();
        //设置水平居中
        style.setAlignment(HorizontalAlignment.CENTER);
        //设置垂直居中
        style.setVerticalAlignment(VerticalAlignment.CENTER);
        return style;
    }

    /**
     * 创建数据表格的头的样式
     */
    public static HSSFCellStyle createTableTitleStyle(HSSFWorkbook workbook) {
        HSSFCellStyle style = createBaseStyle(workbook);

        //设置字体
        HSSFFont font = workbook.createFont();
        font.setBold(true);//是否加粗
        font.setItalic(true);//是否斜体
        font.setFontHeightInPoints((short) 25); //设置字体大小
        font.setColor(HSSFColor.HSSFColorPredefined.DARK_YELLOW.getIndex());//设置颜色
        font.setFontName("华文行楷");//设置字体
        style.setFont(font);

        return style;
    }

    /**
     * 创建小标题样式
     */
    public static HSSFCellStyle createSubTitleStyle(HSSFWorkbook workbook) {
        HSSFCellStyle style = createBaseStyle(workbook);
        //设置字体
        HSSFFont font = workbook.createFont();
        font.setBold(true);//是否加粗
        font.setFontHeightInPoints((short) 18); //设置字体大小
        font.setColor(HSSFColor.HSSFColorPredefined.SKY_BLUE.getIndex());//设置颜色
        font.setFontName("黑体");//设置字体
        style.setFont(font);
        return style;
    }

    /**
     * 创建标题样式
     */
    public static HSSFCellStyle createTitleStyle(HSSFWorkbook workbook) {
        HSSFCellStyle style = createBaseStyle(workbook);
        //设置字体
        HSSFFont font = workbook.createFont();
        font.setBold(true);//是否加粗
        font.setFontHeightInPoints((short) 35); //设置字体大小
        font.setColor(HSSFColor.HSSFColorPredefined.RED.getIndex());//设置颜色
        font.setFontName("华文彩云");//设置字体
        style.setFont(font);
        return style;
    }
}
User

package excel;

import java.util.Date;

public class User {
    private Integer id;
    private String name;
    private String address;
    private Integer sex;
    private Date birth;

    public User() {
        // TODO Auto-generated constructor stub
    }

    public User(Integer id, String name, String address, Integer sex, Date birth) {
        super();
        this.id = id;
        this.name = name;
        this.address = address;
        this.sex = sex;
        this.birth = birth;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public Date getBirth() {
        return birth;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }
}

pox.xml

    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>4.1.0</version>
    </dependency>

原文地址:https://www.cnblogs.com/kikyoqiang/p/12252200.html

时间: 2024-11-06 03:43:34

【Java excel】导出excel文件的相关文章

重构:以Java POI 导出EXCEL为例

重构 开头先抛出几个问题吧,这几个问题也是<重构:改善既有代码的设计>这本书第2章的问题. 什么是重构? 为什么要重构? 什么时候要重构? 接下来就从这几个问题出发,通过这几个问题来系统的了解重构的意义. 什么是重构? <重构:改善既有代码的设计>这本书中将重构以名词和动词形式进行解释,如下 重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本. 重构(动词):使用一系列重构的手法,在不改变软件可观察行为的前提下,调整其结构.

Java POI导出Excel不弹框选择下载路径(下载文件不选择下载路径,默认) Chrome

在Chrome浏览器中,Java导出Excel文件时,浏览器弹出提示框,需要选择下载路径 在Chrome中的高级设置中,把“下载前询问每个文件的保存位置”去掉就解决了 DEEPLOVE(LC) 原文地址:https://www.cnblogs.com/ldl326308/p/10960755.html

Java中导出Excel数据,封装Bean

在Java中封装导出Excel数据的总体思路为: 1.导出,根据查询得到的数据(一般我们页面上用的是查询条件带分页的),我们需要把查询条件带到后台重新查询,并且是查询全部数据,不带分页 2.不能用ajax异步提交.应该用location.href=""的方式,把处理的流交给浏览器来处理,JS无法处理流计算. 3.封装统一的Bean实体,主要输入导出的列名,excel名,数据集即可导出. 用到的Maven地址: <!-- poi --> <dependency>

Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框

在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.而数据导出的格式一般是EXCEL或者PDF,我这里就用两篇文章分别给大家介绍下.(注意,我们这里说的数据导出可不是数据库中的数据导出!么误会啦^_^) 呵呵,首先我们来导出EXCEL格式的文件吧.现在主流的操作Excel文件的开源工具有很多,用得比较多的就是Apache的POI及JExcelAPI.这里我们用Apache POI!我们先去Apach

java 中导出Excel

[java] view plaincopy package oa.common.utils; import java.io.OutputStream; import java.util.List; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import java.lang.reflect.Field; import jxl.Workbook; imp

java导入导出excel常用操作小结及简单示例

POI中常用设置EXCEL的操作小结: 操作excel如下 HSSFWorkbook wb = new HSSFWorkbook();  //创建一个webbook,对应一个Excel文件 HSSFSheet sheet = wb.createSheet();    //添加一个sheet,对应Excel文件中的sheet 构造方法可以有参也可以无参wb.createSheet("学生表一") HSSFRow row = sheet.createRow((int) 0);  //she

java 导入导出excel

一,导出excel 1,使用excel模板 public void exportLog() throws Exception{ SystemUser currentUsr = getCurrentSystemUser(); //该用户的所有日志 List<TLogInfo> loglist=logService.getLogInfosByUserId(currentUsr.getId()); List<TLogInfo> list=new ArrayList<TLogInfo

Java POI 导出EXCEL经典实现 Java导出Excel

转自http://blog.csdn.net/evangel_z/article/details/7332535 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.而数据导出的格式一般是EXCEL或者PDF,我这里就用两篇文章分别给大家介绍下.(注意,我们这里说的数据导出可不是数据库中的数据导出!么误会啦^_^) 呵呵,首先我们来导出EXCEL格式的文件吧.现在主流的操作Excel文件的开源工具有

java:POI导出excel

POI是一个开源项目,专用于java平台上操作MS OFFICE,企业应用开发中可用它方便导出Excel. 下面是使用示例: 1.maven中先添加依赖项 1 <dependency> 2 <groupId>org.apache.poi</groupId> 3 <artifactId>poi</artifactId> 4 <version>3.11</version> 5 </dependency> 2.最基本

Java导入导出Excel和Word

目的 实现Excel/Word导入导出,分以下步骤 导入 上传文件 解析Excel/Word里面的内容 导出 生成Excel/Word文件 文件下载 如何实现 上传文件----------Commons FileUpload上传组件 Excel/Word-------Apache POI----Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 下载文件----------ServletOutputStream直接输出文