package com.cn.ss;
import java.io.FileOutputStream;
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.BorderStyle;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.util.CellRangeAddress;
@SuppressWarnings({"deprecation"})
public class Test {
public static void main(String[] args) {
String sheetName="学生统计表";
String titleName="学生数据统计表";
String fileName="学生统计表单";
int cloumnNumber=3;
int[] coulmnWidth={10,20,30};
String[] columnName={"学号","时间","姓名"};
String[][] dataList={{"001","2018-02-04","张三"},{"002","2018-04-04","李四"},{"003","2018-06-04","王五"}};
new Test().ExportNoResponse(sheetName,titleName,fileName,cloumnNumber,
coulmnWidth,columnName,dataList);
}
private void ExportNoResponse(String sheetName, String titleName,
String fileName, int cloumnNumber, int[] coulmnWidth,
String[] columnName, String[][] dataList) {
if(cloumnNumber==coulmnWidth.length&&coulmnWidth.length==
columnName.length){
//第一步,创建一个webbook,对应一个Excel文件
HSSFWorkbook wb=new HSSFWorkbook();
//第二步,在webbook中添加一个sheet,对应Execle文件中的sheet
HSSFSheet sheet=wb.createSheet(sheetName);
//sheet.setDefaultColumnWidth(15);统一设置列宽
for (int i = 0; i < cloumnNumber; i++) {
for(int j=0;j<=i;j++){
if(i==j){
sheet.setColumnWidth(i, coulmnWidth[j]*256);//单独设置每列的宽
}
}
}
//创建第0行。也就是标题
HSSFRow row1=sheet.createRow((int)0);
row1.setHeightInPoints(50);
//第三步创建标题的单元格样式style2以及字体样式headrFont1
HSSFCellStyle style2=wb.createCellStyle();
style2.setAlignment(HorizontalAlignment.CENTER);
style2.setVerticalAlignment(VerticalAlignment.CENTER);
style2.setFillForegroundColor(HSSFColor.YELLOW.index);
style2.setFillPattern(FillPatternType.SOLID_FOREGROUND);
HSSFFont headerFont1=wb.createFont();
headerFont1.setBold(true);
headerFont1.setFontName("黑体");
headerFont1.setFontHeightInPoints((short)15);
style2.setFont(headerFont1);
HSSFCell cell1=row1.createCell(0);
sheet.addMergedRegion(new CellRangeAddress(0,0,0,cloumnNumber-1));
cell1.setCellValue(titleName);
cell1.setCellStyle(style2);
// 创建第1行 也就是表头
HSSFRow row=sheet.createRow((int) 1);
row.setHeightInPoints(37);// 设置表头高度
// 第四步,创建表头单元格样式 以及表头的字体样式
HSSFCellStyle style=wb.createCellStyle();
style.setWrapText(true);// 设置自动换行
style.setAlignment(HorizontalAlignment.CENTER);
style.setVerticalAlignment(VerticalAlignment.CENTER);// 创建一个居中格式
style.setBottomBorderColor(HSSFColor.BLACK.index);
style.setBorderBottom(BorderStyle.THIN);
style.setBorderLeft(BorderStyle.THIN);
style.setBorderRight(BorderStyle.THIN);
style.setBorderTop(BorderStyle.THIN);
HSSFFont headerFont=wb.createFont();// 创建字体样式
headerFont.setBold(true); // 字体加粗
headerFont.setFontName("黑体"); // 设置字体类型
headerFont.setFontHeightInPoints((short) 10); // 设置字体大小
style.setFont(headerFont); // 为标题样式设置字体样式
// 第四,创建表头的列
for(int i=0;i<cloumnNumber;i++){
HSSFCell cell=row.createCell(i);
cell.setCellValue(columnName[i]);
cell.setCellStyle(style);
}
// 第五步,创建单元格,并设置值
for(int i=0;i<dataList.length;i++){
row=sheet.createRow((int)i+2);
// 为数据内容设置特点新单元格样式1 自动换行 上下居中
HSSFCellStyle auto=wb.createCellStyle();
auto.setWrapText(true);//设置自动换行
auto.setVerticalAlignment(VerticalAlignment.CENTER);
//设置边框
auto.setBottomBorderColor(HSSFColor.BLACK.index);
auto.setBorderBottom(BorderStyle.THIN);
auto.setBorderLeft(BorderStyle.THIN);
auto.setBorderRight(BorderStyle.THIN);
auto.setBorderTop(BorderStyle.THIN);
// 为数据内容设置特点新单元格样式2 自动换行 上下居中左右也居中
HSSFCellStyle auto2=wb.createCellStyle();
auto2.setWrapText(true);
auto2.setVerticalAlignment(VerticalAlignment.CENTER);//上下居中
auto2.setAlignment(HorizontalAlignment.CENTER);//左右居中
//设置边框
auto2.setBottomBorderColor(HSSFColor.BLACK.index);
auto2.setBorderBottom(BorderStyle.THIN);
auto2.setBorderLeft(BorderStyle.THIN);
auto2.setBorderRight(BorderStyle.THIN);
auto2.setBorderTop(BorderStyle.THIN);
HSSFCell datacell=null;
for(int j=0;j<cloumnNumber;j++){
datacell=row.createCell(j);
datacell.setCellValue(dataList[i][j]);
datacell.setCellStyle(auto2);
}
}
try {
FileOutputStream fout=new FileOutputStream("D:\\students.xlsx");
wb.write(fout);
String str="导出"+fileName+"成功!";
System.out.println(str);
fout.close();
} catch (Exception e) {
e.printStackTrace();
String str1 = "导出" + fileName + "失败!";
System.out.println(str1);
}
}else{
System.out.println("列数目长度名称三个数组长度要一致");
}
}
}
1.用到以下几个包,可以在官网下载(http://poi.apache.org/download.html)
2.转载博客 https://blog.csdn.net/J_love93/article/details/77152293