`

excel文档处理

 
阅读更多
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);
}

}
分享到:
评论

相关推荐

    Poi_Excel.zip_JAVA poi对excel文档处理_milllcb_sortkqh

    标题中的“Poi_Excel.zip_JAVA poi对excel文档处理_milllcb_sortkqh”表明这个压缩包文件包含的是关于使用Java的Apache POI库处理Excel文档的示例或教程。Apache POI是一个开源项目,它允许程序员创建、修改和显示...

    excel文件处理,BasicExcel处理算法

    在IT行业中,Excel文件处理是一项常见的任务,尤其是在数据分析、报告生成和数据导入导出等领域。在C++编程环境中,处理Excel文件通常需要借助第三方库,因为C++标准库本身并不直接支持这种操作。"BasicExcel处理...

    Asposet.Cell 强大的excel文档处理转换控件

    Aspose.Cells是一款功能强大的Excel文档处理和转换控件,开发人员和客户电脑无需安装Microsoft Excel也能在应用程序中实现类似Excel的强大数据管理功能,支持所有Excel格式类型的操作,在没有Microsoft Excel的环境...

    应用POI组件读写Excel文档

    大型Excel文件处理时,内存使用是一个主要问题。POI提供了一些优化策略,如使用SXSSF(Streaming Usermodel API)来减少内存消耗,或者使用低级别的事件模型(HWPF and XWPF for .doc and .docx files)。 7. **...

    java处理excel文档的jar包

    Java处理Excel文档主要依赖于Apache POI库,这是一个开源项目,允许Java开发者读写Microsoft Office格式的文件,包括Excel。在提供的压缩包文件中,我们可以看到多个与Apache POI相关的jar包,这些是处理Excel文档必...

    java excel文档处理和转换库aspose-cells-21.8.jar

    Aspose.Cells是一款功能强大的Excel文档处理和转换控件,开发人员和客户电脑无需安装Microsoft Excel也能在应用程序中实现类似Excel的强大数据管理功能,支持所有Excel格式类型的操作,在没有Microsoft Excel的环境...

    Excel文档批量处理工具.zip

    综上所述,“Excel文档批量处理工具”是提高工作效率的重要助手,它结合了编程、数据处理和文件管理等多种技术,帮助用户轻松应对大量Excel文件的挑战。"BatchXLS"可能是这样一个工具,配合“使用说明.txt”来指导...

    Excel文档合并助手

    "至诚电子表格合并助手(Excel文档多合一)--1.0_免费版"就是这样一款强大的软件,它提供了简单合并、复杂合并以及智能合并等多种功能,极大地提升了Excel文件处理的效率。 一、简单合并功能 简单合并是基础操作,...

    C#操作EXCEL EXCEL类库 Excel模板处理 将DataTable数据写入Excel文件 C#数据写入EXCEL

    本主题主要围绕C#如何使用不同的方法来处理Excel,尤其是将DataTable数据写入Excel文件,并涉及Excel模板处理和样式管理。 首先,我们来探讨使用Microsoft Office Interop库的方式。这是微软提供的一个接口,可以...

    办公室文员、单位信息员考试题目训练(excel文档处理)及答案.pdf

    办公室文员、单位信息员考试题目训练(excel文档处理)及答案.pdf

    Excel文档处理之Open XML.zip_excel_open_open xml

    代码分为两个部分:OXExcel类:Excel文档结构层次的节点或元素的处理;OXSheet:工作表内容层次的节点或元素的处理。 注:本代码段是本人经多次试验后的结果,但依然不尽如人意,主要表现在两个方面:1、表格样式...

    pyexcel技术文档

    pyexcel的设计理念是提供一个简洁、易用且高度可扩展的接口,以满足各种Excel文件处理的需求。其核心组件包括签名函数、架构设计等方面。 ##### 4.2 签名函数(Signature functions) 签名函数是pyexcel的核心组成...

    JXL 下载 Excel 文档

    它允许Java开发者在没有Microsoft Excel的情况下处理Excel文档,是进行Java编程时处理Excel数据的常用工具。这篇博客“JXL 下载 Excel 文档”可能是介绍如何使用JXL库在Java程序中创建、读取或修改Excel文件。 描述...

    java处理excel文件相关jar包

    java处理excel文件相关jar包 jxl.jar 、poi.jar

    Java处理Excel文档 含api说明文件

    本知识点将详细介绍如何使用Java处理Excel文档,并结合提供的API说明文件,帮助开发者更有效地操作Excel文件。 首先,Java处理Excel主要依赖于Apache POI库,这是一个开源项目,提供了对Microsoft Office格式的支持...

    PHPExcel:非常好的PHP处理Excel文件的包

    PHPExcel是一款专为PHP开发的库,用于处理Microsoft Excel文件,无论是读取还是写入。它在版本1.5中提供了对Excel97和Excel2007格式的全面支持,这意味着开发者可以使用PHP轻松地与这两种广泛使用的Excel版本进行...

    基于Java Excel API的excel文件的操纵技术及其应用.pdf

    Java Excel API是一种基于Java的excel文件处理API,能够快速、高效地处理和操作excel文件。通过使用Java Excel API,可以实现excel文件的读取、写入、编辑、格式化、打印等操作,从而满足企业和个人对excel文件的...

    Python处理Excel

    对于Excel文件的处理,Python提供了多种库,使得我们可以方便地读取、创建和修改Excel文档。本资源主要针对初学者,通过清晰注释的代码实例,帮助大家快速掌握Python与Excel交互的基本技能。 1. **pandas库**:...

    WebExcel文件展现

    总的来说,WebExcel文件展现技术涉及了ASP.NET编程、Excel文件处理、前端交互、性能优化等多个方面,是Web应用中一种实用且复杂的功能。开发者需要熟练掌握相关的工具和技巧,才能实现高效、稳定的WebExcel展示。

    java springboot poi 从controller 接收不同类型excel 文件处理

    "Java SpringBoot POI 从Controller 接收不同类型Excel 文件处理" Java SpringBoot POI 从Controller 接收不同类型Excel 文件处理是指在Java Web开发中,使用SpringBoot框架和Apache POI库来处理从Controller层接收...

Global site tag (gtag.js) - Google Analytics