Java导出excel示例

博主每次记录的都是自己从不会到会的过程,其实学习的过程就是摸打滚爬。我看了不少的博客,然后自己手动整理总结一份最简单的版本。保证一看就知道怎么回事。我的初衷就是先保证会用,然后在说后话。开始撸代码

第0步:添加依赖

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

第一步:撸代码

package com.gaiaworks.paymentplatform.controller.zyzcontroller;

import org.apache.poi.xssf.usermodel.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

/**
* 文件名:ExcelTest
* 作 者:Miles zhu
* 时 间:2019/7/11 11:09
* -------------------------
* 功能和描述:
**/

@RestController
@RequestMapping("zyz")
public class ExcelTest {

@RequestMapping("excel")
public void excelTest(HttpServletRequest request, HttpServletResponse response) {

try {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("application/x-download");

String fileName = "test.xlsx";
fileName = URLEncoder.encode(fileName, "UTF-8");
response.addHeader("Content-Disposition", "attachment;filename=" + fileName);
/************************************以上内容直接照抄--fileName根据自己实际来就行******************************************/
//第一步:定义一个新的工作簿
XSSFWorkbook web = new XSSFWorkbook();
//第二步:创建一个sheet页
XSSFSheet sheet = web.createSheet("firstSheet");
//设置行高
sheet.setDefaultRowHeight((short) (2 * 256));
//设置列宽
sheet.setColumnWidth(0, 4000);
sheet.setColumnWidth(1, 4000);

//设置样式或者是字体
XSSFFont font = web.createFont();
//设置字体
font.setFontName("宋体");
font.setFontHeightInPoints((short) 16);

//创建第一行
XSSFRow row = sheet.createRow(0);
//为该行创建第一个单元格
XSSFCell cell = row.createCell(0);
//设置单元格中的内容--实际就是表头吧(每一列的名字--映射到数据表就是字段吧)
cell.setCellValue("name ");
//为该行创建第二个单元格
cell = row.createCell(1);
//设置单元格中的内容--实际就是表头吧(每一列的名字--映射到数据表就是字段吧)
cell.setCellValue("age ");

//定义一个行
XSSFRow rows;
//定义一个单元格
XSSFCell cells;

for (int i = 1; i < 10; i++) {
// 第三步:在这个sheet页里创建一行(每次循环都会创建一个新的行)
rows = sheet.createRow(i);
// 第四步:在该行创建一个单元格
cells = rows.createCell(0);
// 第五步:在该单元格里设置值
cells.setCellValue("小狗" + i);

//在该行创建的第二个单元格
cells = rows.createCell(1);
//为该单元格设置值
cells.setCellValue(i + 1);
}
try {
OutputStream out = response.getOutputStream();
web.write(out);
out.close();
web.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

}
}
完---------------所有你想知道的我已经注释的很清楚了。

原文地址:https://www.cnblogs.com/zyzblogs/p/11169432.html