JAVA导出Excel
来源:互联网 发布:给自己口 淘宝 编辑:程序博客网 时间:2024/06/06 01:05
1.Java导出excel工具类,主要提供一些创建单元格,设置单元格样式和向excel中插入图片的方法
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFColor;
import org.apache.poi.xssf.usermodel.XSSFDrawing;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelUtil{
private XSSFWorkbook wb = null;
private XSSFSheet sheet = null;
/**
* @param wb
* @param sheet
*/
public ExcelUtil(XSSFWorkbook wb, XSSFSheet sheet)
{
this.wb = wb;
this.sheet = sheet;
}
/**
* 合并单元格后给合并后的单元格加边框
*
* @param region
* @param cs
*/
public void setRegionStyle(CellRangeAddress region, XSSFCellStyle cs)
{
int toprowNum = region.getFirstRow();
for (int i = toprowNum; i <= region.getLastRow(); i++)
{
XSSFRow row = sheet.getRow(i);
for (int j = region.getFirstColumn(); j <= region.getLastColumn(); j++)
{
XSSFCell cell = row.getCell(j);// XSSFCellUtil.getCell(row,
// (short) j);
cell.setCellStyle(cs);
}
}
}
/**
* 设置表头的单元格样式
*
* @return
*/
public XSSFCellStyle getHeadStyle()
{
// 创建单元格样式
XSSFCellStyle cellStyle = wb.createCellStyle();
// 设置单元格的背景颜色为淡蓝色
cellStyle.setFillForegroundColor(HSSFColor.PALE_BLUE.index);
cellStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
// 设置单元格居中对齐
cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);
// 设置单元格垂直居中对齐
cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
// 创建单元格内容显示不下时自动换行
cellStyle.setWrapText(true);
// 设置单元格字体样式
XSSFFont font = wb.createFont();
// 设置字体加粗
//font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
font.setFontName("冬青黑体简");
font.setFontHeight((short) 300);
cellStyle.setFont(font);
// 设置单元格边框为细线条
cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);
return cellStyle;
}
/**
* 设置表体的单元格样式
*
* @return
*/
public XSSFCellStyle getBodyStyle()
{
// 创建单元格样式
XSSFCellStyle cellStyle = wb.createCellStyle();
// 设置单元格居中对齐
cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);
// 设置单元格垂直居中对齐
cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
// 创建单元格内容显示不下时自动换行
cellStyle.setWrapText(true);
// 设置单元格字体样式
XSSFFont font = wb.createFont();
// 设置字体加粗
//font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
font.setFontName("冬青黑体简");
font.setFontHeight((short) 300);
cellStyle.setFont(font);
// 设置单元格边框为细线条
cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);
return cellStyle;
}
/**
* 样式设置
* @param fontSize字体的大小
* @param flag是否拥有边框
* @param align对其方式
* @param fontType字体类型
* @param isBold是否加粗
* @return
* 创建时间 2015-6-23 上午8:49:12
* @auther lp
*/
public XSSFCellStyle getStyle(int fontSize,boolean flag,String align,String fontType,boolean isBold)
{
// 创建单元格样式
XSSFCellStyle cellStyle = wb.createCellStyle();
//设置单元格水平对齐方式
if("left".equals(align)){
cellStyle.setAlignment(XSSFCellStyle.ALIGN_LEFT);
}else if("right".equals(align)){
cellStyle.setAlignment(XSSFCellStyle.ALIGN_RIGHT);
}else if("center".equals(align)){
cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);
}else if("vertical".equals(align)){
cellStyle.setAlignment(XSSFCellStyle.VERTICAL_CENTER);
}
// 设置单元格垂直居中对齐
cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
// 创建单元格内容显示不下时自动换行
cellStyle.setWrapText(true);
// 设置单元格字体样式
XSSFFont font = wb.createFont();
// 设置字体加粗
//font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
if("微软雅黑".equals(fontType)){
font.setFontName("微软雅黑");
}else{
font.setFontName("宋体");
}
if(isBold){
font.setBold(true);
}
font.setFontHeight((short) fontSize);
cellStyle.setFont(font);
if(flag){
// 设置单元格边框为细线条
cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);
}
return cellStyle;
}
/**
* 样式设置
* @param fontSize字体的大小
* @param flag是否拥有边框
* @param align对其方式
* @param isRed是否为红色
* @return
* 创建时间 2015-6-23 上午8:49:12
* @auther lp
*/
public XSSFCellStyle getStyle(int fontSize,boolean flag,String align,boolean isRed,boolean isBlue)
{
// 创建单元格样式
XSSFCellStyle cellStyle = wb.createCellStyle();
//设置单元格水平对齐方式
if("left".equals(align)){
cellStyle.setAlignment(XSSFCellStyle.ALIGN_LEFT);
}else if("right".equals(align)){
cellStyle.setAlignment(XSSFCellStyle.ALIGN_RIGHT);
}else if("center".equals(align)){
cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);
}else if("vertical".equals(align)){
cellStyle.setAlignment(XSSFCellStyle.VERTICAL_TOP);
}
// 设置单元格垂直居中对齐
cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
// 创建单元格内容显示不下时自动换行
cellStyle.setWrapText(true);
// 设置单元格字体样式
XSSFFont font = wb.createFont();
// 设置字体加粗
//font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
font.setFontName("冬青黑体简");
font.setFontHeight((short) fontSize);
if(isRed){
font.setColor(new XSSFColor(Color.red));
}
if(isBlue){
font.setColor(new XSSFColor(Color.blue));
}
cellStyle.setFont(font);
if(flag){
// 设置单元格边框为细线条
cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);
}
return cellStyle;
}
/**
* 创建图片
* @param filePath图片的路径
* @param dx1第一个坐标的x轴
* @param dy1第一个坐标的y轴
* @param dx2第二个坐标的x轴
* @param dy1第二个坐标的y轴
* @param col1第一列
* @param row1第一行
* @param col2第二列
* @param row2第二行
* 创建时间 2015-6-24 上午8:53:11
* @auther lp
*/
public void createImg(String filePath,int dx1,int dy1,int dx2,int dy2,int col1,int row1,int col2,int row2){
BufferedImage bufferImg = null;
ByteArrayOutputStream byteArrayOut = null;
//先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray
try {
byteArrayOut = new ByteArrayOutputStream();
bufferImg = ImageIO.read(new File(filePath));
ImageIO.write(bufferImg, "jpg", byteArrayOut);
//画图的顶级管理器,一个sheet只能获取一个(一定要注意这点)
XSSFDrawing patriarch = sheet.createDrawingPatriarch();
//anchor主要用于设置图片的属性(指定图片所在的位置)
XSSFClientAnchor anchor = new XSSFClientAnchor(dx1, dy1, dx2, dy2,(short) col1, row1, (short) col2, row2);
anchor.setAnchorType(3);
//插入图片
patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), XSSFWorkbook.PICTURE_TYPE_JPEG));
} catch (Exception e) {
e.printStackTrace();
}finally{
if(null != byteArrayOut){
try {
byteArrayOut.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
2.region = new CellRangeAddress(rowCount, rowCount, 1, 2);
sheet.addMergedRegion(region);
此方法用作,合并单元格,
3. sheet.setColumnWidth(0, 60 * 50);
sheet.setColumnWidth(1, 60 * 100);
sheet.setColumnWidth(2, 50 * 80);
sheet.setColumnWidth(3, 60 * 50);
sheet.setColumnWidth(4, 60 * 40);
sheet.setColumnWidth(5, 0 * 20);
sheet.setColumnWidth(6, 50 * 80);
sheet.setColumnWidth(7, 50 * 80);
sheet.setColumnWidth(8, 25 * 30);
此方法为工作簿的列设置宽度,第一个参数为工作簿列所在的索引,第二个为设置的宽度的值。
4.headRow.setHeight((short)600);
此方法给工作簿的行设置高度。
5./**
* 设置文件名称
*/
String fileName = "";
try {
fileName = new String((orderCode + saleMan).getBytes("UTF-8"), "ISO-8859-1");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
response.setHeader("Content-disposition", "attachment; filename=" + fileName + ".xls");// 组装附件名称和格式
此方法用来设置excel文件导出的名字和导出的格式。
6.//指定文件的保存类型
response.setContentType("application/vnd.ms-excel;charset=utf-8");
用来指定导出文件的类型
- struts2导出excel java 导出excel
- struts2导出excel java 导出excel
- java导出EXCEL
- JAVA 导入导出Excel
- Java jxl导出excel
- java导出Excel
- java 导出 Excel 报表
- java excel导入导出
- java excel导入导出
- JAVA导出EXCEL心得
- 【Java】导出excel表格
- java poi 导出excel
- java怎么导出excel
- java 导出Excel
- JAVA导出EXCEL
- JAVA导出EXCEL心得 .
- java导出Excel例子
- java 导出 excel
- webview 加载问题
- Android NDK开发---jni编程之采用swig
- HP SAN
- Hive.分组排序和TOP
- 结合悬浮窗实现后台播放视频
- JAVA导出Excel
- Comparable和Comparator
- Java JDBC连接数据库 Access连接数据库
- 深入理解Java:SimpleDateFormat安全的时间格式化
- Android 的内存处理机制讲义
- iOS 9 Storyboard 教程(一下)
- IOS响应式编程框架ReactiveCocoa(RAC)使用示例
- 1.1.0.1、在 Max OS 上安装
- 特征提取