简单的整理:
- 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
来源: http://www.bubuko.com/infodetail-3090631.html