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("第一列","第二列","第三列");
}
}
看一下导出效果图
这只是最一般的效果,还可以设置合并居中,字体,单元格样式,就不一一列举了,有需要的话可以留言