package com.standard.monthreport.executeSupervise.bizc;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Calendar;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFComment;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
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.ss.util.Region;
public class ExcleUtil {
// 设置cell编码解决中文高位字节截断
// private static short XLS_ENCODING = HSSFWorkbook.ENCODING_UTF_16;
// 定制日期格式
private static String DATE_FORMAT = "m/d/yy"; // "m/d/yy h:mm"
// 定制浮点数格式
private static String NUMBER_FORMAT = "#,##0.00";
private String xlsFileName;
private HSSFWorkbook workbook;
private HSSFSheet sheet;
private HSSFRow row;
private HSSFComment comm;
/**
* 初始化Excel
*
* @param fileName
* 导出文件名
*/
public ExcleUtil(String fileName) {
this.xlsFileName = fileName;
this.workbook = new HSSFWorkbook();
this.sheet = workbook.createSheet(fileName);
}
public ExcleUtil() {
this.workbook = new HSSFWorkbook();
this.sheet = workbook.createSheet();
}
/**
* 导出Excel文件
*
* @throws XLSException
*/
public void exportXLS() {
FileOutputStream fOut = null;
try {
fOut = new FileOutputStream(xlsFileName);
workbook.write(fOut);
fOut.flush();
fOut.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
if(fOut!=null){
try {
fOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public void exportXLS(OutputStream out) throws IOException {
workbook.write(out);
}
/**
* 增加一行
*
* @param index
* 行号
*/
public void createRow(int index) {
this.row = this.sheet.createRow(index);
}
/**
* 合并单元格
* @param rowFrom 开始行
* @param rowTo 结束行
* @param columnFrom 开始列
* @param columnTo 结束列
*/
public void mergeCell(int rowFrom, int rowTo, int columnFrom, int columnTo) {
// TODO Auto-generated method stub
Region region = new Region();
region.setRowFrom(rowFrom);
region.setRowTo(rowTo);
region.setColumnFrom((short)columnFrom);
region.setColumnTo((short)columnTo);
sheet.addMergedRegion(region);
}
/**
* 设置单元格
*
* @param index
* 列号
* @param value
* 单元格填充值
*/
public void setCellString(int index, String value,String temp) {
HSSFCell cell = this.row.createCell(index);
HSSFFont font = workbook.createFont();
font.setFontHeightInPoints(( short ) 12 ); // 字体高度
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 宽度
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFont(font);
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平布局:居中
cellStyle.setWrapText(true);
HSSFRichTextString hssfString = new HSSFRichTextString(value);
if(temp != null && temp.length() > 0){
this.setDrawingPatriarch(cell,index,temp);
}
cell.setCellValue(hssfString); // 设置单元格内容
cell.setCellStyle(cellStyle); // 设置单元格样式
row.setHeight((short)600);
sheet.setColumnWidth(index, 4000);
}
private void setDrawingPatriarch(HSSFCell cell,int index,String textStr){
// 添加单元格注释
// 创建HSSFPatriarch对象,HSSFPatriarch是所有注释的容器.
HSSFPatriarch patr = sheet.createDrawingPatriarch();
// 定义注释的大小和位置
comm = patr.createComment( new HSSFClientAnchor( 0 , 0 , index , 0 , ( short ) 4 , 2 , ( short ) 8 , 7 ));
// 设置注释内容
comm.setString( new HSSFRichTextString(textStr));
// 设置注释作者. 当鼠标移动到单元格上是可以在状态栏中看到该内容.
comm.setAuthor( "yinxiaobo" );
cell.setCellComment(comm);
}
/**
* 设置单元格
*
* @param index
* 列号
* @param value
* 单元格填充值
*/
public void setCellCalendar(int index, Calendar value) {
HSSFCell cell = this.row.createCell(index);
// cell.setEncoding(XLS_ENCODING);
HSSFCellStyle cellStyle = workbook.createCellStyle(); // 建立新的cell样式
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//居中
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat(DATE_FORMAT)); // 设置cell样式为定制的日期格式
cell.setCellStyle(cellStyle); // 设置该cell日期的显示格式
cell.setCellValue(value.getTime());
sheet.autoSizeColumn((short) index);
}
/**
* 设置单元格
*
* @param index
* 列号
* @param value
* 单元格填充值
*/
public void setCellNumber(int index, int value) {
HSSFCell cell = this.row.createCell(index);
HSSFCellStyle cellStyle = workbook.createCellStyle(); // 建立新的cell样式
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//居中
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
cell.setCellValue(value);
sheet.autoSizeColumn((short) index);
}
public void setCellBoolean(int index, String value) {
HSSFCell cell = this.row.createCell(index);
HSSFCellStyle cellStyle = workbook.createCellStyle(); // 建立新的cell样式
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//居中
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
cell.setCellType(HSSFCell.CELL_TYPE_BOOLEAN);
HSSFRichTextString hssfString = new HSSFRichTextString(value);
cell.setCellValue(hssfString); // 设置单元格内容
sheet.autoSizeColumn((short) index);
}
/**
* 设置单元格
*
* @param index
* 列号
* @param value
* 单元格填充值
*/
public void setCellDouble(int index, double value) {
HSSFCell cell = this.row.createCell(index);
cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
HSSFCellStyle cellStyle = workbook.createCellStyle(); // 建立新的cell样式
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//居中
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
HSSFDataFormat format = workbook.createDataFormat();
cellStyle.setDataFormat(format.getFormat(NUMBER_FORMAT)); // 设置cell样式为定制的浮点数格式
cell.setCellStyle(cellStyle); // 设置该cell浮点数的显示格式
cell.setCellValue(value);
sheet.autoSizeColumn((short) index);
}
}
分享到:
相关推荐
Excel文件处理工具:可以处理EXCEL数据列的值、列的合并、删除等操作
Aspose.Cells是一款功能强大的Excel文档处理和转换控件,开发人员和客户电脑无需安装Microsoft Excel也能在应用程序中实现类似Excel的强大数据管理功能,支持所有Excel格式类型的操作,在没有Microsoft Excel的环境...
BasicExcel处理算法,最有效最直接最好用的处理excel文件的算法
办公室文员、单位信息员考试题目训练(excel文档处理)及答案.pdf
代码分为两个部分:OXExcel类:Excel文档结构层次的节点或元素的处理;OXSheet:工作表内容层次的节点或元素的处理。 注:本代码段是本人经多次试验后的结果,但依然不尽如人意,主要表现在两个方面:1、表格样式...
实现了excel的读写,包含excel操作所需的架包,可以处理xlsx和xls文件
java对微软的excel文档的导出,可以学习下POI相关技术
java处理excel文件相关jar包 jxl.jar 、poi.jar
Excel文档批量处理工具
.net 处理excel类,c#处理excel文件程序,包括代码程序
1.功能:该API为适用于Java平台下,通过后端程序代码调用API接口操作Excel文档。通过方法可实现如下功能: 1.1 文档格式转换:Excel转PDF/图片/HTML/XPS/SVG/XML/CSV/TIFF/ET/ETT/OFD/、XML转Excel等。 1.2 文档...
PHPExcel 1.5 支持Excel97和Excel2007,可以在Excel文件中加入图片,样式,公式。。。,
Java处理Excel文档包 含api说明文件 很方便易用
你可以永久免费使用它,它是一款简单好用的可以对已有的Excel文件进行多样化处理的工具,这款软件功能强大,非常便捷可以一次将多个Excel文档中的指定内容的单元格内容替换为另一个内容,BatchXls支持批量设置指定...
C#操作EXCEL EXCEL类库 Excel模板处理 将DataTable数据写入Excel文件 C#数据写入EXCEL EXCEL样式管理帮助类库
博主会继续从excel文件处理开始 对excel文件的处理 excel在商业活动运用十分广泛,人们使用excel的方式五花八门。 与python的csv模块不同,python中并没有处理excel文件的标准模块,因此我们学习本章内容需要安装两...
由于项目需要对大量Excel数据进行输入输出处理,在使用JXL,POI后发现很容易出现OOM,最后在网上找到阿里的开源项目EasyExcel能很快速的读取写入超大Excel文件。经过大量的调试优化,现通过JAVA生成104万行20列的...
基于Python实现Excel数据处理自动化生成Word文档(含索引目录 分页).zip
基于VS2013编译,MFC连接Excel,进行读取,数据显示,数据处理,数据保存成新Excel文件等操作,详情见博客
无论你的数据是存放在Excel文件,还是存放在文本文件,或者存放在Access、Microsoft SQL数据库,[Excel数据处理与分析实战技巧精粹]专业版都可以提供快速比较,大量节省您的时间和精力,将您从枯燥冗长的数据海洋中...