java生成Excel方法

这篇博客介绍了如何在Java中利用Apache POI库来读写Excel文件。首先,引入了所需的依赖包,然后创建了一个Student实体类用于存储数据。接着,展示了如何将数据转换为Excel并导出,包括设置表格头、填充数据和写入响应流。最后,提供了一个导出Excel的完整实现示例。

一、引入对应的包

       <!-- poi读写Excel工具类 -->
        <dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi</artifactId>
			<version>4.1.1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-ooxml</artifactId>
			<version>4.1.1</version>
		</dependency>

二、具体实现

Excel信息实体类

public class student {
	private String name;
	private Integer age;
	private String address;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}	
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public Object[] toObject(){
        Object[] obj = {name,age,address};
        return obj;
    }
}

生成Excel具体实现

   public void exportFindPageBill(List<student> students, HttpServletResponse response)
             throws IOException {
         
         String[] headers = {"姓名","年龄","住址"};         
        
         Workbook workbook= Exports(headers,students);
         
         OutputStream out = null;
       try {
           writeExcel("学生信息", response);
           out = response.getOutputStream();
           workbook.write(out);
       } catch (IOException e) {
           e.printStackTrace();
       } finally {
           IOUtils.closeQuietly(workbook);
           IOUtils.closeQuietly(out);
       }
    }
    
 
    public Workbook Exports(String[] headers,List<student>  data) {
       SXSSFWorkbook workbook = new SXSSFWorkbook();
       SXSSFSheet sheet = workbook.createSheet();
       // 新增数据行
       int rowNum = 1;
       // 设置单元格样式
       SXSSFRow row = sheet.createRow(0);
       row.setHeight((short) 800);
       for(int i=0;i<headers.length;i++){
           SXSSFCell cell = row.createCell(i);
           XSSFRichTextString text = new XSSFRichTextString(headers[i]);
           cell.setCellValue(text);
           // cell.setCellStyle(headStyle);
       }
       //在表中存放查询到的数据放入对应的列
       if(data!=null) {
           for(student da:data) {
               Object[] os=da.toObject();
               SXSSFRow row1 = sheet.createRow(rowNum);
               row1.setHeight((short) 400);
               for(int j = 0;j<os.length;j++) {
                   SXSSFCell cell = row1.createCell(j);
                   cell.setCellValue(os[j].toString());
                   //cell.setCellStyle(cellStyle);
               }
               rowNum++;
           }
       }
       return workbook;
   }

    /**
     * Excel写入响应输出流
     * @param title 标题
     * @param response 响应
     */
    public static void writeExcel(String title, HttpServletResponse response) throws IOException {
        StringBuffer filename = new StringBuffer();
        filename.append(title);
        filename.append("-");
        filename.append(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
        filename.append(".xlsx");
        try {
            response.setContentType("application/octet-stream");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + new String(filename.toString().getBytes("UTF-8"), "ISO8859-1"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值