java导出excel

java导出excel使用的是微软提供的poi,是org.apache.poi.xssf.usermodel下面的一些类
导出excel目前还是很常用的,java可以很便利的导入导出excel。每一行代码的作用在注释中都标明了,这样应该都能更方便些。excel分为2007版本之后的xlsx后缀名,和2007之前的xls后缀,这是两个版本,不同的版本使用的是不同的类,07后的使用的是XSSFWorkbook等org.apache.poi.xssf.usermodel包下的类,而07之前的使用的是org.apache.poi.hssf.usermodel包下的类。
故此文支持的是07之后的版本,07前的版本想用的话换成HSSFWorkbook等类即可,前缀变一下,差别不大

上代码


import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.usermodel.*;

import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

/**
 * @author zjg
 * @day 18-2-3
 * @description 
 */
@Slf4j
public class Main {

    /**
     * 导出excel
     * @param strings
     */
    public void export(String...strings){
        log.info("start export");
        XSSFWorkbook xssfWorkbook = new XSSFWorkbook();//创建excel工作簿对象
        xssfWorkbook = this.setSheetValue(strings,xssfWorkbook);
        OutputStream output= null;
        try {
            output = new FileOutputStream("E:\\test.xlsx");//选择中间文件作为输出对象
            //如果是浏览器请求导出
//            output = response.getOutputStream();
//            response.reset();
//            response.setHeader("Content-disposition", "attachment; filename=content.xlsx");
//            response.setContentType("application/msexcel");
            xssfWorkbook.write(output);//写入excel
            output.close();
            log.info("导出成功");
        } catch (IOException e) {
            log.info("io使用异常");
            e.printStackTrace();
        }
    }

    /**
     * 修改表格内容
     * @param titleStrings 表头数组
     * @param xssfWorkbook 工作簿
     */
    private XSSFWorkbook setSheetValue(String[] titleStrings, XSSFWorkbook xssfWorkbook){
        XSSFSheet sheet = null;
        sheet = xssfWorkbook.createSheet("工作表");
        for(int i=0;i<titleStrings.length;i++){
            sheet.setColumnWidth(i,6000);//列宽
        }
        XSSFRow  xssfRowTwo = sheet.createRow(0);  //创建第1行
        for (int i=0;i<titleStrings.length;i++) {
            xssfRowTwo.createCell(i).setCellValue(titleStrings[i]);
        }
        //填充表格内容
        XSSFRow xssfRowTemp;//内容行
        xssfRowTemp = sheet.createRow(1);//创建第2行内容
        xssfRowTemp.createCell(0).setCellValue("1列");
        xssfRowTemp.createCell(1).setCellValue("2列");
        xssfRowTemp.createCell(2).setCellValue("3列");
        return xssfWorkbook;
    }


    public static void main(String[] args) {
        new Main().export("第一列","第二列","第三列");
    }
}

看一下导出效果图

这里写图片描述

这只是最一般的效果,还可以设置合并居中,字体,单元格样式,就不一一列举了,有需要的话可以留言

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值