POI 操作 excel表格 (简单整理)

 

简单的整理:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.streaming.SXSSFCell;
import org.apache.poi.xssf.streaming.SXSSFRow;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * Created by Administrator on 2019/6/12.
 */
public class SXSSFWorkbook_Main
{
    public static void main(String[] args)
    {
        long startTime = System.currentTimeMillis();
        String filePath = "E:\\111.xlsx";
        SXSSFWorkbook sxssfWorkbook = null;
        BufferedOutputStream outputStream = null;
        try {
            //这样表示SXSSFWorkbook只会保留100条数据在内存中,其它的数据都会写到磁盘里,这样的话占用的内存就会很少
            sxssfWorkbook = new SXSSFWorkbook(getXSSFWorkbook(filePath),100);
            //获取第一个Sheet页
            SXSSFSheet sheet = sxssfWorkbook.getSheetAt(0);

            //合并行之后创建第一行
            sheet.addMergedRegion(new CellRangeAddress(0,0,0,3));
            SXSSFRow row = sheet.createRow(0);

            //添加第一行的单元格
            SXSSFCell cell = row.createCell(0);
            CellStyle cellStyle = getHeadStyle(sxssfWorkbook);
            cell.setCellStyle(cellStyle);
            row.createCell(1).setCellStyle(cellStyle);
            row.createCell(2).setCellStyle(cellStyle);
            row.createCell(3).setCellStyle(cellStyle);   //合并单元格之后要加边框, 所以都要加上
            cell.setCellValue("项目工作清单"); //合并单元格之后设置值


            //创建第2行
            SXSSFRow row1 = sheet.createRow(1);
            CellStyle style = getHeadStyle(sxssfWorkbook);
            style.setFillForegroundColor(IndexedColors.SKY_BLUE.getIndex());
            row1.createCell(0).setCellStyle(style);

            outputStream = new BufferedOutputStream(new FileOutputStream(filePath));
            sxssfWorkbook.write(outputStream);
            outputStream.flush();
            sxssfWorkbook.dispose();// 释放workbook所占用的所有windows资源
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if(outputStream!=null) {
                try {
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        long endTime = System.currentTimeMillis();
        System.out.println(endTime-startTime);

    }

    private static CellStyle getHeadStyle(SXSSFWorkbook sxssfWorkbook)
    {
        CellStyle cellStyle = sxssfWorkbook.createCellStyle();
        cellStyle.setAlignment(HorizontalAlignment.CENTER);   //设置单元格的水平居中

        //上下左右的边框
        cellStyle.setBorderTop(BorderStyle.THIN);
        cellStyle.setBorderBottom(BorderStyle.THIN);
        cellStyle.setBorderLeft(BorderStyle.THIN);
        cellStyle.setBorderRight(BorderStyle.THIN);

        //设置单元格背景填充颜色
        cellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
        cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
        return cellStyle;
    }

    public static XSSFWorkbook getXSSFWorkbook(String filePath) {
        XSSFWorkbook workbook =  null;
        BufferedOutputStream outputStream = null;
        try {
            File fileXlsxPath = new File(filePath);
            outputStream = new BufferedOutputStream(new FileOutputStream(fileXlsxPath));
            workbook = new XSSFWorkbook();
            workbook.createSheet("测试Sheet");
            workbook.write(outputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if(outputStream!=null) {
                try {
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return workbook;
    }

}

 

官网向导:https://poi.apache.org/components/spreadsheet/quick-guide.html#FillsAndFrills

官网API:http://poi.apache.org/apidocs/dev/org/apache/poi/xssf/streaming/SXSSFWorkbook.html

posted @ 2019-06-12 23:44  风止雨歇  阅读(2120)  评论(0编辑  收藏  举报