`
bcworld
  • 浏览: 39261 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

java通过apache的POI写EXCEL

阅读更多

Apache POI是Apache 软件 基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

 

HSSF - 提供读写Microsoft Excel 格式档案的功能。   

XSSF - 提供读写Microsoft Excel OOXML 格式档案的功能。   

HWPF - 提供读写Microsoft Word 格式档案的功能。   

HSLF - 提供读写Microsoft PowerPoint格式档案的功能。   

HDGF - 提供读写Microsoft Visio 格式档案的功能。


下面的代码演示了如何创建一个excel文件,并写数据:

 

package excel;
import java.io.IOException;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.Random;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
public class SummaryHSSF {

    public static void main(String[] args) throws IOException {

        //创建Workbook对象(这一个对象代表着对应的一个Excel文件)
        //HSSFWorkbook表示以xls为后缀名的文件
        Workbook wb = new HSSFWorkbook();
        //Workbook wb = new XSSFWorkbook();
        //获得CreationHelper对象,这个应该是一个帮助类
        CreationHelper helper = wb.getCreationHelper();
        //创建Sheet并给名字(表示Excel的一个Sheet)
        Sheet sheet1 = wb.createSheet("sheet01");
        //Row表示一行Cell表示一列
        Row row = null;
        Cell cell = null;
        row = sheet1.createRow(1);
        row.setHeightInPoints(20);
        for(int r=0;r<60;r=r+2){
            //获得这个sheet的第i行
            row = sheet1.createRow(r);
            //设置行长度自动
            //row.setHeight((short)500);
            row.setHeightInPoints(20);
            //row.setZeroHeight(true);
            for(int col=0;col<25;col++){
                //设置每个sheet每一行的宽度,自动,根据需求自行确定(宽度自适应)
                sheet1.autoSizeColumn(col+1, true);
                //创建一个基本的样式
                CellStyle cellStyle = SummaryHSSF.makeNewCellStyle(wb);
                //获得这一行的每j列
                cell = row.createCell(col);
                if(col==0){
                    //设置文字在单元格里面的位置
                    cellStyle = SummaryHSSF.alignmentDecorate(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
                    //先创建字体样式,并把这个样式加到单元格的字体里面
                    cellStyle.setFont(createFonts(wb));
                    //把这个样式加到单元格里面
                    cell.setCellStyle(cellStyle);
                    //给单元格设值(true作为单元格的值)
                    cell.setCellValue(true);
                }else if(col==1){
                    //设置文字在单元格里面的位置
                    cellStyle = SummaryHSSF.alignmentDecorate(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
                    //设置这个样式的格式(Format)
                    cellStyle = SummaryHSSF.cellFormatDecorate(helper,cellStyle, "#,##0.0000");
                    //先创建字体样式,并把这个样式加到单元格的字体里面
                    cellStyle.setFont(createFonts(wb));
                    //把这个样式加到单元格里面
                    cell.setCellStyle(cellStyle);
                    //给单元格设值
                    cell.setCellValue(new Double(2008.2008));
                }else if(col==2){
                    cellStyle = SummaryHSSF.alignmentDecorate(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
                    cellStyle.setFont(createFonts(wb));
                    cell.setCellStyle(cellStyle);
                    cell.setCellValue(helper.createRichTextString("RichString"+r+col));
                }else if(col==3){
                    cellStyle = SummaryHSSF.alignmentDecorate(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
                    cellStyle = SummaryHSSF.cellFormatDecorate(helper,cellStyle, "yyyy-MM-dd hh:mm:ss");
                    cell.setCellStyle(cellStyle);
                    cell.setCellValue(new Date());
                }else if(col==24){
                    cellStyle = SummaryHSSF.alignmentDecorate(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
                    cellStyle.setFont(createFonts(wb));
                    //设置公式,无"="号
                    cell.setCellFormula("SUM(E"+(r+1)+":X"+(r+1)+")");
                }else{
                    cellStyle = SummaryHSSF.alignmentDecorate(cellStyle, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_CENTER);
                    //背景设置
                    cellStyle = SummaryHSSF.fillBackgroundColorsDecorate(cellStyle,IndexedColors.ORANGE.getIndex(),IndexedColors.ORANGE.getIndex(),CellStyle.SOLID_FOREGROUND);
                    cell.setCellStyle(cellStyle);
                    cell.setCellValue(new Random().nextInt(20));

                }
            }
        }

        //输出
        OutputStream os = new FileOutputStream(new File("I:/SummaryHSSF_"+
                (System.currentTimeMillis())+"_.xls"));
        wb.write(os);
        os.close();

    }
    /**
     * 设置单元格 边框 风格(粗细,颜色)
     * @param wb 这一个对象代表着对应的一个Excel文件
     * @return CellStyle
     */
    public static CellStyle makeNewCellStyle(Workbook wb){
        CellStyle cellStyle = wb.createCellStyle();
        //设置一个单元格边框粗细(上下左右四边)
        cellStyle.setBorderBottom(CellStyle.BORDER_NONE);
        cellStyle.setBorderTop(CellStyle.BORDER_THIN);
        cellStyle.setBorderLeft(CellStyle.BORDER_THIN);
        cellStyle.setBorderRight(CellStyle.BORDER_THIN);
        //设置一个单元格边框颜色(上下左右四边)
        cellStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());
        cellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
        cellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
        cellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());
        return cellStyle;
    }
    /**
     * 设置文字在单元格里面的 对齐方式
     * @param cellStyle
     * @param halign
     * @param valign decorate
     * @return
     */
    public static CellStyle alignmentDecorate(CellStyle cellStyle,short halign,short valign){
        //设置上下
        cellStyle.setAlignment(CellStyle.ALIGN_CENTER);
        //设置左右
        cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
        return cellStyle;
    }
    /**
     * 格式化单元格
     * 如#,##0.00,m/d/yy 去HSSFDataFormat或XSSFDataFormat里面找
     * @param cellStyle
     * @param fmt
     * @return
     */
    public static CellStyle cellFormatDecorate(CreationHelper helper,CellStyle cellStyle,String fmt){
        //还可以用其它方法创建format
        cellStyle.setDataFormat(helper.createDataFormat().getFormat(fmt));
        return cellStyle;
    }
    /**
     * 前景和背景填充的着色
     * @param cellStyle
     * @param bg IndexedColors.ORANGE.getIndex();
     * @param fg IndexedColors.ORANGE.getIndex();
     * @param fp CellStyle.SOLID_FOREGROUND
     * @return
     */
    public static CellStyle fillBackgroundColorsDecorate(CellStyle cellStyle,short bg,short fg,short fp){
        //cellStyle.setFillBackgroundColor(bg);
        cellStyle.setFillForegroundColor(fg);
        cellStyle.setFillPattern(fp);
        return cellStyle;
    }
    /**
     * 设置字体
     * @param wb
     * @return
     */
    public static Font createFonts(Workbook wb){
        //创建Font对象
        Font font = wb.createFont();
        //设置字体
        font.setFontName("黑体");
        //着色
        font.setColor(HSSFColor.BLUE.index);
        //斜体
        font.setItalic(true);
        //字体大小
        font.setFontHeight((short)300);
        return font;
    }

}
 

 

 

分享到:
评论
1 楼 ljf_home 2012-04-23  
不错,收藏一下

相关推荐

    apache POI文件读写excel

    Apache POI是Java领域中广泛使用的库,专为处理Microsoft Office格式的文件而设计,特别是Excel文档。这个库使得在不依赖Microsoft Office的情况下,开发者能够读取、创建、修改和操作XLS、XLSX等Excel文件。在本文...

    Java使用apache POI读取Excel2007以上代码以及所需jar包

    在Java编程环境中,Apache POI库是一个非常实用的工具,它允许开发者处理Microsoft Office格式的文件,包括Excel的XLS和XLSX格式。本文将详细介绍如何使用Apache POI库来读取Excel 2007及以上版本(即XLSX格式)的...

    Apache poi 操作 excel 文件压缩包

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,包括Excel。在Java环境中,Apache POI 提供了一套API,使得...通过熟练掌握Apache POI,你可以提高Java应用程序与Excel交互的效率和灵活性。

    java_poi实现excel导入导出

    Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 Excel 文件。在本文中,我们将详细介绍如何使用 Java POI 实现 Excel 导入导出功能。 1. 什么是 Java ...

    Apache POI HSSF读写Excel

    Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,尤其是Excel(.xls)和Word(.doc)文档。HSSF(Horizontally Stored Sheet Format)是Apache POI项目的一部分,专注于处理旧版的Excel文件...

    Apache POI Excel操作

    总结,Apache POI为Java开发者提供了强大的Excel操作工具,通过理解并熟练掌握其核心概念、API和使用方法,可以轻松地在Java应用中实现Excel文件的读写和处理。在实际项目中,根据需求选择合适的API,配合Maven配置...

    Apache POI for Android

    Apache POI 是一个著名的开源项目,主要为处理微软的Office文档格式提供了一个强大的Java API。在Android开发中,Apache POI 提供了处理Excel文件的能力,使得开发者可以在Android设备上进行Excel的读写操作,无需...

    Apache Poi Excel导出

    Apache POI 是一个开源项目,专门用于处理Microsoft ...总之,Apache POI 是Java开发中处理Excel的强大工具,通过学习和掌握其API,我们可以轻松实现Excel文件的创建、读取和修改,为业务提供便利的数据导出功能。

    apache POI 导出Excel 设置打印

    在Java开发中,Apache POI 提供了API,使我们能够创建、修改和读取Excel文档。当我们需要导出Excel并设置打印参数时,Apache POI 提供了丰富的功能。 1. **创建Excel工作簿和工作表** 在使用Apache POI导出Excel时...

    java的poi生成excel图表demo

    Java的Apache POI库是一个强大的工具,用于读取、创建和修改Microsoft Office格式的文件,尤其是Excel(.xlsx)文档。在本示例中,我们将深入探讨如何利用POI库来生成Excel中的图表曲线,这对于数据可视化和报告生成...

    poi读写excel+poi总结

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,包括Excel、Word和PowerPoint等。在本文中,我们将深入探讨如何使用POI进行Excel的读写操作,并进行总结。 1. POI基本概念 Apache POI 提供了...

    apache poi 导出excel、word

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel和Word。它提供了Java API,使得开发者能够方便地在Java应用程序中创建、修改和读取这些文件。以下是对Apache POI的一些关键知识点的...

    apache poi解析Excel时报错,我将Excel打开后保存,就不会报错,用jar完美解决

    apache poi解析Excel时报错,我将Excel打开后保存,就不会报错,我将重写的类从新打包这样问题虽然网上有解决方案,但是需要自己打包重写对应类,我已将这些步骤做好了。

    java 通过poi操作excel jar包

    Java通过Apache POI库操作Excel是Java开发人员处理Microsoft Office文档的一种常见方法,特别是当需要在应用程序中生成、读取或修改Excel数据时。Apache POI是一个开源项目,提供了丰富的API,使得Java开发者能够...

    Apache POI 模板导出excel.rar

    Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。在"Apache POI 模板导出excel.rar"这个压缩包中,我们聚焦于使用Apache POI 3.16版本来生成基于Excel模板的...

    java Apache poi 对word doc文件进行读写操作

    Apache POI 是一个流行的 Java 库,用于处理 Microsoft Office 格式,如 Word、Excel 和 PowerPoint。在处理 Word .doc 文件时,POI 提供了一个名为 HWPF(Horizontally Written Property Set Files)的模块。这个...

    Apache poi 导出excel实例

    通过Apache POI,开发者可以充分利用Java的强大功能来处理Excel文件,无论是生成报表、数据分析还是数据交换,都能提供极大的便利。博客文章“Apache POI 导出excel实例”应该会详细介绍这些步骤,并可能提供更具体...

    使用ITEXT导出PDF、WORD,APACHE POI导出EXCEL报表文件

    接下来,我们转向Apache POI,这是一个用于处理Microsoft Office格式(如Excel)的Java库。Apache POI提供了一系列接口和类,允许开发者读取、写入和修改XLS(老版Excel)和XLSX(新版Excel)文件。创建Excel报表时...

    Java通过POI和JXL给Excel动态添加水印

    ### Java通过POI和JXL给Excel动态添加水印 #### 概述 在实际工作中,经常需要对敏感或重要的Excel文件进行保护措施,比如添加水印。这不仅可以增加文档的专业性,还可以作为版权保护的一种手段。本文将详细介绍...

    java用poi读写excel表

    Java中的Apache POI库是一个强大的工具,用于读取、创建和修改Microsoft Office格式的文件,尤其是Excel工作簿。本文将详细介绍如何使用POI库在Java中进行Excel的读写操作,以及一个在Eclipse环境中运行的实例。 ...

Global site tag (gtag.js) - Google Analytics