JAVA poi实现导出execl

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值