java使用poi导出Excel的方法

网友投稿 287 2023-01-23


java使用poi导出Excel的方法

本文实例为大家分享了java使用poi导出Excel的具体代码,供大家参考,具体内容如下

package hyss.util.common;

import java.io.IOException;

import java.io.OutputStream;

import java.net.URLEncoder;

import java.util.ArrayList;

import java.util.List;

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.HSSFRichTextString;

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.util.CellRangeAddress;

/**

* Excel导出工具类

* @author ts

*/

public class ExportExcelUtil {

//显示的导出表的标题

private String title;

//导出表的列名

private String[] rowName ;

private List dataList = new ArrayList();

// HttpServletResponse response;

//构造方法,传入要导出的数据

public ExportExcelUtil(String title,String[] rowName,List dataList){

this.dataList = dataList;

this.rowName = rowName;

this.title = title;

}

/*

* 导出数据

* */

public void export() throws Exception{

try{

HSSFWorkbook workbook = new HSSFWorkbook(); // 创建工作簿对象

HSSFSheet sheet = workbook.createSheet(title); // 创建工作表

// 产生表格标题行

HSSFRow rowm = sheet.createRow(0);

HSSFCell cellTiltle = rowm.createCell(0);

rowm.setHeightInPoints(25); //设置标题行默认行高

//sheet样式定义【getColumnTopStyle()/getStyle()均为自定义方法 - 在下面 - 可扩展】

HSSFCellStyle columnTitleStyle = this.getTitleTopStyle(workbook);//获取标题行样式

HSSFCellStyle columnTopStyle = this.getColumnThttp://opStyle(workbook); //获取列头样式对象

HSSFCellStyle style = this.getStyle(workbook); //单元格样式对象

sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, (rowName.length-1)));

cellTiltle.setCellStyle(columnTitleStyle);

cellTiltle.setCellValue(title);

// 定义所需列数

int columnNum = rowName.length;

HSSFRow rowRowName = sheet.createRow(2); // 在索引2的位置创建行(最顶端的行开始的第二行)

rowRowName.setHeightInPoints(25); //将列头设置默认行高

// 将列头设置到sheet的单元格中

for(int n=0;n

HSSFCell cellRowName = rowRowName.createCell(n); //创建列头对应个数的单元格

cellRowName.setCellType(HSSFCell.CELL_TYPE_STRING); //设置列头单元格的数据类型

HSSFRichTextString text = new HSSFRichTextString(rowName[n]);

cellRowName.setCellValue(text); //设置列头单元格的值

cellRowName.setCellStyle(columnTopStyle); //设置列头单元格样式

}

//将查询出的数据设置到sheet对应的单元格中

for(int i=0;i

Object[] obj = dataList.get(i);//遍历每个对象

HSSFRow row = shhttp://eet.createRow(i+3);//创建所需的行数

row.setHeightInPoints(20); //将创建出的行设置默认行高

for(int j=0; j

HSSFCell cell = null; //设置单元格的数据类型

if(j == 0){

cell = row.createCell(j,HSSFCell.CELL_TYPE_NUMERIC);

cell.setCellValue(i+1);

}else{

cell = row.createCell(j,HSSFCell.CELL_TYPE_STRING);

if(!"".equals(obj[j]) && obj[j] != null){

cell.setCellValue(obj[j].toString()); //设置单元格的值

}

}

cell.setCellStyle(style); //设置单元格样式

}

}

//让列宽随着导出的列长自动适应

for (int colNum = 0; colNum < columnNum; colNum++) {

int columnWidth = sheet.getColumnWidth(colNum) / 256;

for (int rowNum = 0; rowNum < sheet.getLastRowNum(); rowNum++) {

HSSFRow currentRow;

//当前行未被使用过

if (sheet.getRow(rowNum) == null) {

currentRow = sheet.createRow(rowNum);

} else {

currentRow = sheet.getRow(rowNum);

}

if (currentRow.getCell(colNum) != null) {

HSSFCell currentCell = currentRow.getCell(colNum);

if (currentCell.getCellType() == HSSFCell.CELL_TYPE_STRING) {

int length = currentCell.getStringCellValue().getBytes().length;

if (columnWidth < length) {

columnWidth = length;

}

}

}

}

if(colNum == 0){

sheet.setColumnWidth(colNum, (columnWidth-2) * 256);

}else{

sheet.setColumnWidth(colNum, (columnWidth+4) * 256);

}

}

if(workbook !=null){

try

{

String fileName = title + DateTime.getSystemDateTime("yyyy-MM-dd") + ".xls";

             //因 response已经封装成工具类所以下面这段代码注释掉

// response =ServletActionContext.getResponse();

// response.setContentType("APPLICATION/OCTET-STREAM");

// response.setHeader("Content-Disposition", headStr);

// OutputStream out = response.getOutputStream();

//解决中文乱码

Struts2Util.getResponse().setCharacterEncoding("UTF-8");

//解决中文乱码

Struts2Util.getResponse().setHeader("Content-Disposition", "attachment;filename*=UTF-8''" + URLEncoder.encode(fileName,"UTF-8"));

//文件下载

Struts2Util.getResponse().setContentType("APPLICATION/OCTET-STREAM");

OutputStream out = Struts2Util.getResponse().getOutputStream();

workbook.write(out);

}

catch (IOException e)

{

e.printStackTrace();

}

}

}catch(Exception e){

e.printStackTrace();

}

}

/*

* 设置标题样式

*/

public HSSFCellStyle getTitleTopStyle(HSSFWorkbook workbook) {

// 设置字体

HSSFFont font = workbook.createFont();

//设置字体大小

font.setFontHeightInPoints((short)24);

//字体加粗

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

//设置字体名字

font.setFontName("宋体");

//设置样式;

HSSFCellStyle style = workbook.createCellStyle();

//设置底边框;

style.setBorderBottom(HSSFCellStyle.BORDER_THIN);

//设置底边框颜色;

style.setBottomBorderColor(HSSFColor.BLACK.index);

//设置左边框;

style.setBorderLeft(HSSFCellStyle.BORDER_THIN);

//设置左边框颜色;

style.setLeftBorderColor(HSSFColor.BLACK.index);

//设置右边框;

style.setBorderRight(HSSFCellStyle.BORDER_THIN);

//设置右边框颜色;

style.setRightBorderColor(HSSFColor.BLACK.index);

//设置顶边框;

style.setBorderTop(HSSFCellStyle.BORDER_THIN);

//设置顶边框颜色;

style.setTopBorderColor(HSSFColor.BLACK.index);

//在样式用应用设置的字体;

style.setFont(font);

//设置自动换行;

style.setWrapText(false);

//设置水平对齐的样式为居中对齐;

style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

//设置垂直对齐的样式为居中对齐;

style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

return style;

}

/*

* 列头单元格样式

*/

public HSSFCellStyle getColumnTopStyle(HSSFWorkbook workbook) {

// 设置字体

HSSFFont font = workbook.createFont();

//设置字体大小

font.setFontHeightInPoints((short)11);

//字体加粗

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

//设置字体名字

font.setFontName("宋体");

//设置样式;

HSSFCellStyle style = workbook.createCellStyle();

//设置底边框;

style.setBorderBottom(HSSFCellStyle.BORDER_THIN);

//设置底边框颜色;

style.setBottomBorderColor(HSSFColor.BLACK.index);

//设置左边框;

style.setBorderLeft(HSSFCellStyle.BORDER_THIN);

//设置左边框颜色;

style.setLeftBorderColor(HSSFColor.BLACK.index);

//设置右边框;

style.setBorderRight(HSSFCellStyle.BORDER_THIN);

//设置右边框颜色;

style.setRightBorderColor(HSSFColor.BLACK.index);

//设置顶边框;

style.setBorderTop(HSSFCellStyle.BORDER_THIN);

//设置顶边框颜色;

style.setTopBorderColor(HSSFColor.BLACK.index);

//在样式用应用设置的字体;

style.setFont(font);

//设置自动换行;

style.setWrapText(false);

//设置水平对齐的样式为居中对齐;

style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

//设置垂直对齐的样式为居中对齐;

style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

return style;

}

/*

* 列数据信息单元格样式

*/

public HSSFCellStyle getStyle(HSSFWorkbook workbook) {

// 设置字体

HSSFFont font = workbook.createFont();

//设置字体大小

//font.setFontHeightInPoints((short)10);

//字体加粗

//font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD)qdUrkNVcMA;

//设置字体名字

font.setFontName("宋体");

//设置样式;

HSSFCellStyle style = workbook.createCellStyle();

//设置底边框;

style.setBorderBottom(HSSFCellStyle.BORDER_THIN);

//设置底边框颜色;

style.setBottomBorderColor(HSSFColor.BLACK.index);

//设置左边框;

style.setBorderLeft(HSSFCellStyle.BORDER_THIN);

//设置左边框颜色;

style.setLeftBorderColor(HSSFColor.BLACK.index);

//设置右边框;

style.setBorderRight(HSSFCellStyle.BORDER_THIN);

//设置右边框颜色;

style.setRightBorderColor(HSSFColor.BLACK.index);

//设置顶边框;

style.setBorderTop(HSSFCellStyle.BORDER_THIN);

//设置顶边框颜色;

style.setTopBorderColor(HSSFColor.BLACK.index);

//在样式用应用设置的字体;

style.setFont(font);

//设置自动换行;

style.setWrapText(false);

//设置水平对齐的样式为居中对齐;

// style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

//设置垂直对齐的样式为居中对齐;

// style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

return style;

}

}

实现方法

/*

* 实现方法

*/

public void exportExcel() throws Exception{

String title = "测试";

String[] rowsName = new String[]{"序号","列头1","列头2","列头3","列头4","列头5"};

List dataList = new ArrayList();

Object[] objs = null;

for (int i = 0; i < 10; i++) {

objs = new Object[rowsName.length];

objs[0] = i;

objs[1] = "测试1";

objs[2] = "测试2";

objs[3] = "测试3";

objs[4] = "测试4";

objs[5] = "测试5";

dataList.add(objs);

}

ExportExcelUtil ex = new ExportExcelUtil(title, rowsName, dataList);

ex.export();

}

HSSFCell cellRowName = rowRowName.createCell(n); //创建列头对应个数的单元格

cellRowName.setCellType(HSSFCell.CELL_TYPE_STRING); //设置列头单元格的数据类型

HSSFRichTextString text = new HSSFRichTextString(rowName[n]);

cellRowName.setCellValue(text); //设置列头单元格的值

cellRowName.setCellStyle(columnTopStyle); //设置列头单元格样式

}

//将查询出的数据设置到sheet对应的单元格中

for(int i=0;i

Object[] obj = dataList.get(i);//遍历每个对象

HSSFRow row = shhttp://eet.createRow(i+3);//创建所需的行数

row.setHeightInPoints(20); //将创建出的行设置默认行高

for(int j=0; j

HSSFCell cell = null; //设置单元格的数据类型

if(j == 0){

cell = row.createCell(j,HSSFCell.CELL_TYPE_NUMERIC);

cell.setCellValue(i+1);

}else{

cell = row.createCell(j,HSSFCell.CELL_TYPE_STRING);

if(!"".equals(obj[j]) && obj[j] != null){

cell.setCellValue(obj[j].toString()); //设置单元格的值

}

}

cell.setCellStyle(style); //设置单元格样式

}

}

//让列宽随着导出的列长自动适应

for (int colNum = 0; colNum < columnNum; colNum++) {

int columnWidth = sheet.getColumnWidth(colNum) / 256;

for (int rowNum = 0; rowNum < sheet.getLastRowNum(); rowNum++) {

HSSFRow currentRow;

//当前行未被使用过

if (sheet.getRow(rowNum) == null) {

currentRow = sheet.createRow(rowNum);

} else {

currentRow = sheet.getRow(rowNum);

}

if (currentRow.getCell(colNum) != null) {

HSSFCell currentCell = currentRow.getCell(colNum);

if (currentCell.getCellType() == HSSFCell.CELL_TYPE_STRING) {

int length = currentCell.getStringCellValue().getBytes().length;

if (columnWidth < length) {

columnWidth = length;

}

}

}

}

if(colNum == 0){

sheet.setColumnWidth(colNum, (columnWidth-2) * 256);

}else{

sheet.setColumnWidth(colNum, (columnWidth+4) * 256);

}

}

if(workbook !=null){

try

{

String fileName = title + DateTime.getSystemDateTime("yyyy-MM-dd") + ".xls";

             //因 response已经封装成工具类所以下面这段代码注释掉

// response =ServletActionContext.getResponse();

// response.setContentType("APPLICATION/OCTET-STREAM");

// response.setHeader("Content-Disposition", headStr);

// OutputStream out = response.getOutputStream();

//解决中文乱码

Struts2Util.getResponse().setCharacterEncoding("UTF-8");

//解决中文乱码

Struts2Util.getResponse().setHeader("Content-Disposition", "attachment;filename*=UTF-8''" + URLEncoder.encode(fileName,"UTF-8"));

//文件下载

Struts2Util.getResponse().setContentType("APPLICATION/OCTET-STREAM");

OutputStream out = Struts2Util.getResponse().getOutputStream();

workbook.write(out);

}

catch (IOException e)

{

e.printStackTrace();

}

}

}catch(Exception e){

e.printStackTrace();

}

}

/*

* 设置标题样式

*/

public HSSFCellStyle getTitleTopStyle(HSSFWorkbook workbook) {

// 设置字体

HSSFFont font = workbook.createFont();

//设置字体大小

font.setFontHeightInPoints((short)24);

//字体加粗

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

//设置字体名字

font.setFontName("宋体");

//设置样式;

HSSFCellStyle style = workbook.createCellStyle();

//设置底边框;

style.setBorderBottom(HSSFCellStyle.BORDER_THIN);

//设置底边框颜色;

style.setBottomBorderColor(HSSFColor.BLACK.index);

//设置左边框;

style.setBorderLeft(HSSFCellStyle.BORDER_THIN);

//设置左边框颜色;

style.setLeftBorderColor(HSSFColor.BLACK.index);

//设置右边框;

style.setBorderRight(HSSFCellStyle.BORDER_THIN);

//设置右边框颜色;

style.setRightBorderColor(HSSFColor.BLACK.index);

//设置顶边框;

style.setBorderTop(HSSFCellStyle.BORDER_THIN);

//设置顶边框颜色;

style.setTopBorderColor(HSSFColor.BLACK.index);

//在样式用应用设置的字体;

style.setFont(font);

//设置自动换行;

style.setWrapText(false);

//设置水平对齐的样式为居中对齐;

style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

//设置垂直对齐的样式为居中对齐;

style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

return style;

}

/*

* 列头单元格样式

*/

public HSSFCellStyle getColumnTopStyle(HSSFWorkbook workbook) {

// 设置字体

HSSFFont font = workbook.createFont();

//设置字体大小

font.setFontHeightInPoints((short)11);

//字体加粗

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

//设置字体名字

font.setFontName("宋体");

//设置样式;

HSSFCellStyle style = workbook.createCellStyle();

//设置底边框;

style.setBorderBottom(HSSFCellStyle.BORDER_THIN);

//设置底边框颜色;

style.setBottomBorderColor(HSSFColor.BLACK.index);

//设置左边框;

style.setBorderLeft(HSSFCellStyle.BORDER_THIN);

//设置左边框颜色;

style.setLeftBorderColor(HSSFColor.BLACK.index);

//设置右边框;

style.setBorderRight(HSSFCellStyle.BORDER_THIN);

//设置右边框颜色;

style.setRightBorderColor(HSSFColor.BLACK.index);

//设置顶边框;

style.setBorderTop(HSSFCellStyle.BORDER_THIN);

//设置顶边框颜色;

style.setTopBorderColor(HSSFColor.BLACK.index);

//在样式用应用设置的字体;

style.setFont(font);

//设置自动换行;

style.setWrapText(false);

//设置水平对齐的样式为居中对齐;

style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

//设置垂直对齐的样式为居中对齐;

style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

return style;

}

/*

* 列数据信息单元格样式

*/

public HSSFCellStyle getStyle(HSSFWorkbook workbook) {

// 设置字体

HSSFFont font = workbook.createFont();

//设置字体大小

//font.setFontHeightInPoints((short)10);

//字体加粗

//font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD)qdUrkNVcMA;

//设置字体名字

font.setFontName("宋体");

//设置样式;

HSSFCellStyle style = workbook.createCellStyle();

//设置底边框;

style.setBorderBottom(HSSFCellStyle.BORDER_THIN);

//设置底边框颜色;

style.setBottomBorderColor(HSSFColor.BLACK.index);

//设置左边框;

style.setBorderLeft(HSSFCellStyle.BORDER_THIN);

//设置左边框颜色;

style.setLeftBorderColor(HSSFColor.BLACK.index);

//设置右边框;

style.setBorderRight(HSSFCellStyle.BORDER_THIN);

//设置右边框颜色;

style.setRightBorderColor(HSSFColor.BLACK.index);

//设置顶边框;

style.setBorderTop(HSSFCellStyle.BORDER_THIN);

//设置顶边框颜色;

style.setTopBorderColor(HSSFColor.BLACK.index);

//在样式用应用设置的字体;

style.setFont(font);

//设置自动换行;

style.setWrapText(false);

//设置水平对齐的样式为居中对齐;

// style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

//设置垂直对齐的样式为居中对齐;

// style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

return style;

}

}

实现方法

/*

* 实现方法

*/

public void exportExcel() throws Exception{

String title = "测试";

String[] rowsName = new String[]{"序号","列头1","列头2","列头3","列头4","列头5"};

List dataList = new ArrayList();

Object[] objs = null;

for (int i = 0; i < 10; i++) {

objs = new Object[rowsName.length];

objs[0] = i;

objs[1] = "测试1";

objs[2] = "测试2";

objs[3] = "测试3";

objs[4] = "测试4";

objs[5] = "测试5";

dataList.add(objs);

}

ExportExcelUtil ex = new ExportExcelUtil(title, rowsName, dataList);

ex.export();

}

Object[] obj = dataList.get(i);//遍历每个对象

HSSFRow row = shhttp://eet.createRow(i+3);//创建所需的行数

row.setHeightInPoints(20); //将创建出的行设置默认行高

for(int j=0; j

HSSFCell cell = null; //设置单元格的数据类型

if(j == 0){

cell = row.createCell(j,HSSFCell.CELL_TYPE_NUMERIC);

cell.setCellValue(i+1);

}else{

cell = row.createCell(j,HSSFCell.CELL_TYPE_STRING);

if(!"".equals(obj[j]) && obj[j] != null){

cell.setCellValue(obj[j].toString()); //设置单元格的值

}

}

cell.setCellStyle(style); //设置单元格样式

}

}

//让列宽随着导出的列长自动适应

for (int colNum = 0; colNum < columnNum; colNum++) {

int columnWidth = sheet.getColumnWidth(colNum) / 256;

for (int rowNum = 0; rowNum < sheet.getLastRowNum(); rowNum++) {

HSSFRow currentRow;

//当前行未被使用过

if (sheet.getRow(rowNum) == null) {

currentRow = sheet.createRow(rowNum);

} else {

currentRow = sheet.getRow(rowNum);

}

if (currentRow.getCell(colNum) != null) {

HSSFCell currentCell = currentRow.getCell(colNum);

if (currentCell.getCellType() == HSSFCell.CELL_TYPE_STRING) {

int length = currentCell.getStringCellValue().getBytes().length;

if (columnWidth < length) {

columnWidth = length;

}

}

}

}

if(colNum == 0){

sheet.setColumnWidth(colNum, (columnWidth-2) * 256);

}else{

sheet.setColumnWidth(colNum, (columnWidth+4) * 256);

}

}

if(workbook !=null){

try

{

String fileName = title + DateTime.getSystemDateTime("yyyy-MM-dd") + ".xls";

             //因 response已经封装成工具类所以下面这段代码注释掉

// response =ServletActionContext.getResponse();

// response.setContentType("APPLICATION/OCTET-STREAM");

// response.setHeader("Content-Disposition", headStr);

// OutputStream out = response.getOutputStream();

//解决中文乱码

Struts2Util.getResponse().setCharacterEncoding("UTF-8");

//解决中文乱码

Struts2Util.getResponse().setHeader("Content-Disposition", "attachment;filename*=UTF-8''" + URLEncoder.encode(fileName,"UTF-8"));

//文件下载

Struts2Util.getResponse().setContentType("APPLICATION/OCTET-STREAM");

OutputStream out = Struts2Util.getResponse().getOutputStream();

workbook.write(out);

}

catch (IOException e)

{

e.printStackTrace();

}

}

}catch(Exception e){

e.printStackTrace();

}

}

/*

* 设置标题样式

*/

public HSSFCellStyle getTitleTopStyle(HSSFWorkbook workbook) {

// 设置字体

HSSFFont font = workbook.createFont();

//设置字体大小

font.setFontHeightInPoints((short)24);

//字体加粗

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

//设置字体名字

font.setFontName("宋体");

//设置样式;

HSSFCellStyle style = workbook.createCellStyle();

//设置底边框;

style.setBorderBottom(HSSFCellStyle.BORDER_THIN);

//设置底边框颜色;

style.setBottomBorderColor(HSSFColor.BLACK.index);

//设置左边框;

style.setBorderLeft(HSSFCellStyle.BORDER_THIN);

//设置左边框颜色;

style.setLeftBorderColor(HSSFColor.BLACK.index);

//设置右边框;

style.setBorderRight(HSSFCellStyle.BORDER_THIN);

//设置右边框颜色;

style.setRightBorderColor(HSSFColor.BLACK.index);

//设置顶边框;

style.setBorderTop(HSSFCellStyle.BORDER_THIN);

//设置顶边框颜色;

style.setTopBorderColor(HSSFColor.BLACK.index);

//在样式用应用设置的字体;

style.setFont(font);

//设置自动换行;

style.setWrapText(false);

//设置水平对齐的样式为居中对齐;

style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

//设置垂直对齐的样式为居中对齐;

style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

return style;

}

/*

* 列头单元格样式

*/

public HSSFCellStyle getColumnTopStyle(HSSFWorkbook workbook) {

// 设置字体

HSSFFont font = workbook.createFont();

//设置字体大小

font.setFontHeightInPoints((short)11);

//字体加粗

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

//设置字体名字

font.setFontName("宋体");

//设置样式;

HSSFCellStyle style = workbook.createCellStyle();

//设置底边框;

style.setBorderBottom(HSSFCellStyle.BORDER_THIN);

//设置底边框颜色;

style.setBottomBorderColor(HSSFColor.BLACK.index);

//设置左边框;

style.setBorderLeft(HSSFCellStyle.BORDER_THIN);

//设置左边框颜色;

style.setLeftBorderColor(HSSFColor.BLACK.index);

//设置右边框;

style.setBorderRight(HSSFCellStyle.BORDER_THIN);

//设置右边框颜色;

style.setRightBorderColor(HSSFColor.BLACK.index);

//设置顶边框;

style.setBorderTop(HSSFCellStyle.BORDER_THIN);

//设置顶边框颜色;

style.setTopBorderColor(HSSFColor.BLACK.index);

//在样式用应用设置的字体;

style.setFont(font);

//设置自动换行;

style.setWrapText(false);

//设置水平对齐的样式为居中对齐;

style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

//设置垂直对齐的样式为居中对齐;

style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

return style;

}

/*

* 列数据信息单元格样式

*/

public HSSFCellStyle getStyle(HSSFWorkbook workbook) {

// 设置字体

HSSFFont font = workbook.createFont();

//设置字体大小

//font.setFontHeightInPoints((short)10);

//字体加粗

//font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD)qdUrkNVcMA;

//设置字体名字

font.setFontName("宋体");

//设置样式;

HSSFCellStyle style = workbook.createCellStyle();

//设置底边框;

style.setBorderBottom(HSSFCellStyle.BORDER_THIN);

//设置底边框颜色;

style.setBottomBorderColor(HSSFColor.BLACK.index);

//设置左边框;

style.setBorderLeft(HSSFCellStyle.BORDER_THIN);

//设置左边框颜色;

style.setLeftBorderColor(HSSFColor.BLACK.index);

//设置右边框;

style.setBorderRight(HSSFCellStyle.BORDER_THIN);

//设置右边框颜色;

style.setRightBorderColor(HSSFColor.BLACK.index);

//设置顶边框;

style.setBorderTop(HSSFCellStyle.BORDER_THIN);

//设置顶边框颜色;

style.setTopBorderColor(HSSFColor.BLACK.index);

//在样式用应用设置的字体;

style.setFont(font);

//设置自动换行;

style.setWrapText(false);

//设置水平对齐的样式为居中对齐;

// style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

//设置垂直对齐的样式为居中对齐;

// style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

return style;

}

}

实现方法

/*

* 实现方法

*/

public void exportExcel() throws Exception{

String title = "测试";

String[] rowsName = new String[]{"序号","列头1","列头2","列头3","列头4","列头5"};

List dataList = new ArrayList();

Object[] objs = null;

for (int i = 0; i < 10; i++) {

objs = new Object[rowsName.length];

objs[0] = i;

objs[1] = "测试1";

objs[2] = "测试2";

objs[3] = "测试3";

objs[4] = "测试4";

objs[5] = "测试5";

dataList.add(objs);

}

ExportExcelUtil ex = new ExportExcelUtil(title, rowsName, dataList);

ex.export();

}

HSSFCell cell = null; //设置单元格的数据类型

if(j == 0){

cell = row.createCell(j,HSSFCell.CELL_TYPE_NUMERIC);

cell.setCellValue(i+1);

}else{

cell = row.createCell(j,HSSFCell.CELL_TYPE_STRING);

if(!"".equals(obj[j]) && obj[j] != null){

cell.setCellValue(obj[j].toString()); //设置单元格的值

}

}

cell.setCellStyle(style); //设置单元格样式

}

}

//让列宽随着导出的列长自动适应

for (int colNum = 0; colNum < columnNum; colNum++) {

int columnWidth = sheet.getColumnWidth(colNum) / 256;

for (int rowNum = 0; rowNum < sheet.getLastRowNum(); rowNum++) {

HSSFRow currentRow;

//当前行未被使用过

if (sheet.getRow(rowNum) == null) {

currentRow = sheet.createRow(rowNum);

} else {

currentRow = sheet.getRow(rowNum);

}

if (currentRow.getCell(colNum) != null) {

HSSFCell currentCell = currentRow.getCell(colNum);

if (currentCell.getCellType() == HSSFCell.CELL_TYPE_STRING) {

int length = currentCell.getStringCellValue().getBytes().length;

if (columnWidth < length) {

columnWidth = length;

}

}

}

}

if(colNum == 0){

sheet.setColumnWidth(colNum, (columnWidth-2) * 256);

}else{

sheet.setColumnWidth(colNum, (columnWidth+4) * 256);

}

}

if(workbook !=null){

try

{

String fileName = title + DateTime.getSystemDateTime("yyyy-MM-dd") + ".xls";

             //因 response已经封装成工具类所以下面这段代码注释掉

// response =ServletActionContext.getResponse();

// response.setContentType("APPLICATION/OCTET-STREAM");

// response.setHeader("Content-Disposition", headStr);

// OutputStream out = response.getOutputStream();

//解决中文乱码

Struts2Util.getResponse().setCharacterEncoding("UTF-8");

//解决中文乱码

Struts2Util.getResponse().setHeader("Content-Disposition", "attachment;filename*=UTF-8''" + URLEncoder.encode(fileName,"UTF-8"));

//文件下载

Struts2Util.getResponse().setContentType("APPLICATION/OCTET-STREAM");

OutputStream out = Struts2Util.getResponse().getOutputStream();

workbook.write(out);

}

catch (IOException e)

{

e.printStackTrace();

}

}

}catch(Exception e){

e.printStackTrace();

}

}

/*

* 设置标题样式

*/

public HSSFCellStyle getTitleTopStyle(HSSFWorkbook workbook) {

// 设置字体

HSSFFont font = workbook.createFont();

//设置字体大小

font.setFontHeightInPoints((short)24);

//字体加粗

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

//设置字体名字

font.setFontName("宋体");

//设置样式;

HSSFCellStyle style = workbook.createCellStyle();

//设置底边框;

style.setBorderBottom(HSSFCellStyle.BORDER_THIN);

//设置底边框颜色;

style.setBottomBorderColor(HSSFColor.BLACK.index);

//设置左边框;

style.setBorderLeft(HSSFCellStyle.BORDER_THIN);

//设置左边框颜色;

style.setLeftBorderColor(HSSFColor.BLACK.index);

//设置右边框;

style.setBorderRight(HSSFCellStyle.BORDER_THIN);

//设置右边框颜色;

style.setRightBorderColor(HSSFColor.BLACK.index);

//设置顶边框;

style.setBorderTop(HSSFCellStyle.BORDER_THIN);

//设置顶边框颜色;

style.setTopBorderColor(HSSFColor.BLACK.index);

//在样式用应用设置的字体;

style.setFont(font);

//设置自动换行;

style.setWrapText(false);

//设置水平对齐的样式为居中对齐;

style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

//设置垂直对齐的样式为居中对齐;

style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

return style;

}

/*

* 列头单元格样式

*/

public HSSFCellStyle getColumnTopStyle(HSSFWorkbook workbook) {

// 设置字体

HSSFFont font = workbook.createFont();

//设置字体大小

font.setFontHeightInPoints((short)11);

//字体加粗

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

//设置字体名字

font.setFontName("宋体");

//设置样式;

HSSFCellStyle style = workbook.createCellStyle();

//设置底边框;

style.setBorderBottom(HSSFCellStyle.BORDER_THIN);

//设置底边框颜色;

style.setBottomBorderColor(HSSFColor.BLACK.index);

//设置左边框;

style.setBorderLeft(HSSFCellStyle.BORDER_THIN);

//设置左边框颜色;

style.setLeftBorderColor(HSSFColor.BLACK.index);

//设置右边框;

style.setBorderRight(HSSFCellStyle.BORDER_THIN);

//设置右边框颜色;

style.setRightBorderColor(HSSFColor.BLACK.index);

//设置顶边框;

style.setBorderTop(HSSFCellStyle.BORDER_THIN);

//设置顶边框颜色;

style.setTopBorderColor(HSSFColor.BLACK.index);

//在样式用应用设置的字体;

style.setFont(font);

//设置自动换行;

style.setWrapText(false);

//设置水平对齐的样式为居中对齐;

style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

//设置垂直对齐的样式为居中对齐;

style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

return style;

}

/*

* 列数据信息单元格样式

*/

public HSSFCellStyle getStyle(HSSFWorkbook workbook) {

// 设置字体

HSSFFont font = workbook.createFont();

//设置字体大小

//font.setFontHeightInPoints((short)10);

//字体加粗

//font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD)qdUrkNVcMA;

//设置字体名字

font.setFontName("宋体");

//设置样式;

HSSFCellStyle style = workbook.createCellStyle();

//设置底边框;

style.setBorderBottom(HSSFCellStyle.BORDER_THIN);

//设置底边框颜色;

style.setBottomBorderColor(HSSFColor.BLACK.index);

//设置左边框;

style.setBorderLeft(HSSFCellStyle.BORDER_THIN);

//设置左边框颜色;

style.setLeftBorderColor(HSSFColor.BLACK.index);

//设置右边框;

style.setBorderRight(HSSFCellStyle.BORDER_THIN);

//设置右边框颜色;

style.setRightBorderColor(HSSFColor.BLACK.index);

//设置顶边框;

style.setBorderTop(HSSFCellStyle.BORDER_THIN);

//设置顶边框颜色;

style.setTopBorderColor(HSSFColor.BLACK.index);

//在样式用应用设置的字体;

style.setFont(font);

//设置自动换行;

style.setWrapText(false);

//设置水平对齐的样式为居中对齐;

// style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

//设置垂直对齐的样式为居中对齐;

// style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

return style;

}

}

实现方法

/*

* 实现方法

*/

public void exportExcel() throws Exception{

String title = "测试";

String[] rowsName = new String[]{"序号","列头1","列头2","列头3","列头4","列头5"};

List dataList = new ArrayList();

Object[] objs = null;

for (int i = 0; i < 10; i++) {

objs = new Object[rowsName.length];

objs[0] = i;

objs[1] = "测试1";

objs[2] = "测试2";

objs[3] = "测试3";

objs[4] = "测试4";

objs[5] = "测试5";

dataList.add(objs);

}

ExportExcelUtil ex = new ExportExcelUtil(title, rowsName, dataList);

ex.export();

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java泛型类的定义与使用详解
下一篇:共享文件系统(windows10共享文件夹)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~