`

poi Excel 设置样式

阅读更多

POI中可能会用到一些需要设置EXCEL单元格格式的操作小结:

先获取工作薄对象:

HSSFWorkbook wb = new HSSFWorkbook();

HSSFSheet sheet = wb.createSheet();

HSSFCellStyle setBorder = wb.createCellStyle();

一、设置背景色:

setBorder.setFillForegroundColor((short) 13);// 设置背景色
setBorder.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

二、设置边框:

setBorder.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
setBorder.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
setBorder.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
setBorder.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框

三、设置居中:

setBorder.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中

四、设置字体:

HSSFFont font = wb.createFont();
font.setFontName("黑体");
font.setFontHeightInPoints((short) 16);//设置字体大小

HSSFFont font2 = wb.createFont();
font2.setFontName("仿宋_GB2312");
font2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示
font2.setFontHeightInPoints((short) 12);

setBorder.setFont(font);//选择需要用到的字体格式

五、设置列宽:

sheet.setColumnWidth(0, 3766); //第一个参数代表列id(从0开始),第2个参数代表宽度值

六、设置自动换行:

setBorder.setWrapText(true);//设置自动换行

七、合并单元格:

Region region1 = new Region(0, (short) 0, 0, (short) 6);

//参数1:行号 参数2:起始列号 参数3:行号 参数4:终止列号
sheet.addMergedRegion(region1);

八、加边框

  HSSFCellStyle cellStyle= wookBook.createCellStyle();
  cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
  cellStyle.setBorderBottom(HSSFCellStyle.BorderBORDER_MEDIUM);
  cellStyle.setBottomBorderColor(HSSFColor.BLACK.index);
  cellStyle.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);
  cellStyle.setLeftBorderColor(HSSFColor.BLACK.index);
  cellStyle.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
  cellStyle.setRightBorderColor(HSSFColor.BLACK.index);
  cellStyle.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
  cellStyle.setTopBorderColor(HSSFColor.BLACK.index);

另附:完整小例子一个

开发环境:IntelliJ IDEA 10.0.2

 

@ResponseBody

@RequestMapping(value = "/reportForms/joinStocktaking/exportStorage.api")

public AjaxResponse exportStorage(@RequestBody StorageModel model) throws Exception {

if (logger.isDebugEnabled())

logger.debug("tmpdir is, {}", System.getProperty(JAVA_IO_TMPDIR));

int row = 1;

 

HSSFWorkbook workbook = new HSSFWorkbook();

HSSFSheet hssfSheet = workbook.createSheet();

HSSFCellStyle style = workbook.createCellStyle();

style.setFillBackgroundColor(HSSFCellStyle.LEAST_DOTS);

style.setFillPattern(HSSFCellStyle.LEAST_DOTS);

 

//设置Excel中的边框(表头的边框)

style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

style.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);

style.setBottomBorderColor(HSSFColor.BLACK.index);

style.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);

style.setLeftBorderColor(HSSFColor.BLACK.index);

style.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);

style.setRightBorderColor(HSSFColor.BLACK.index);

style.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);

style.setTopBorderColor(HSSFColor.BLACK.index);

 

//设置字体

HSSFFont font = workbook.createFont();

font.setFontHeightInPoints((short) 14); // 字体高度

font.setFontName(" 黑体 "); // 字体

 

style.setFont(font);

HSSFRow firstRow = hssfSheet.createRow((short) 0);

HSSFCell firstCell = firstRow.createCell(0);

firstRow.setHeight((short) 400);

//设置Excel中的背景

style.setFillForegroundColor(HSSFColor.GREEN.index);

style.setFillBackgroundColor(HSSFColor.GREEN.index);

firstCell.setCellValue(new HSSFRichTextString("库房"));

firstCell.setCellStyle(style);

 

HSSFCell secondCell = firstRow.createCell(1);

firstRow.setHeight((short) 400);

style.setFillForegroundColor(HSSFColor.GREEN.index);

style.setFillBackgroundColor(HSSFColor.GREEN.index);

secondCell.setCellValue(new HSSFRichTextString("库区"));

secondCell.setCellStyle(style);

 

HSSFCell threeCell = firstRow.createCell(2);

firstRow.setHeight((short) 400);

style.setFillForegroundColor(HSSFColor.GREEN.index);

style.setFillBackgroundColor(HSSFColor.GREEN.index);

threeCell.setCellValue(new HSSFRichTextString("物料编号"));

threeCell.setCellStyle(style);

 

HSSFCell fourCell = firstRow.createCell(3);

firstRow.setHeight((short) 400);

style.setFillForegroundColor(HSSFColor.GREEN.index);

style.setFillBackgroundColor(HSSFColor.GREEN.index);

fourCell.setCellValue(new HSSFRichTextString("物料名称"));

fourCell.setCellStyle(style);

 

HSSFCell fiveCell = firstRow.createCell(4);

firstRow.setHeight((short) 400);

style.setFillForegroundColor(HSSFColor.GREEN.index);

style.setFillBackgroundColor(HSSFColor.GREEN.index);

fiveCell.setCellValue(new HSSFRichTextString("在库数量"));

fiveCell.setCellStyle(style);

 

HSSFCell sixCell = firstRow.createCell(5);

firstRow.setHeight((short) 400);

style.setFillForegroundColor(HSSFColor.GREEN.index);

style.setFillBackgroundColor(HSSFColor.GREEN.index);

sixCell.setCellValue(new HSSFRichTextString("锁定数量"));

sixCell.setCellStyle(style);

 

//设置列宽

hssfSheet.setColumnWidth(0, 7000);

 

hssfSheet.setColumnWidth(1, 8000);

hssfSheet.setColumnWidth(2, 4000);

hssfSheet.setColumnWidth(3, 6000);

hssfSheet.setColumnWidth(4, 4000);

hssfSheet.setColumnWidth(5, 4000);

 

 

List<?> list = joinStocktackingService.findjoinStorageByTerm(model.getWareHouse(), model.getStockArea(), model.getMaterialCode(), model.getMaterialName());

for (Object object : list) {

Object[] objects = (Object[]) object;

Storage storage = (Storage) objects[0];

Warehouse warehouse = (Warehouse) objects[1];

StockArea stockArea = (StockArea) objects[2];

Material material = (Material) objects[3];

 

 

//设置Excel中的边框

HSSFCellStyle cellStyle = workbook.createCellStyle();

cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

cellStyle.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);

cellStyle.setBottomBorderColor(HSSFColor.BLACK.index);

cellStyle.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);

cellStyle.setLeftBorderColor(HSSFColor.BLACK.index);

cellStyle.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);

cellStyle.setRightBorderColor(HSSFColor.BLACK.index);

cellStyle.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);

cellStyle.setTopBorderColor(HSSFColor.BLACK.index);

 

 

HSSFRow hssfRow = hssfSheet.createRow((short) row);

HSSFCell firstHssfCell = hssfRow.createCell(0);//库房

firstHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);

firstHssfCell.setCellValue(new HSSFRichTextString(warehouse.getName()));

firstHssfCell.setCellStyle(cellStyle);//设置单元格的样式

 

HSSFCell secondHssfCell = hssfRow.createCell(1);

secondHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);

secondHssfCell.setCellValue(new HSSFRichTextString(stockArea.getName()));

secondHssfCell.setCellStyle(cellStyle);//设置单元格的样式

 

HSSFCell threeHssfCell = hssfRow.createCell(2);

threeHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);

threeHssfCell.setCellValue(new HSSFRichTextString(material.getCode()));

threeHssfCell.setCellStyle(cellStyle);//设置单元格的样式

 

HSSFCell fourHssfCell = hssfRow.createCell(3);

fourHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);

fourHssfCell.setCellValue(new HSSFRichTextString(material.getName()));

fourHssfCell.setCellStyle(cellStyle);//设置单元格的样式

 

HSSFCell fiveHssfCell = hssfRow.createCell(4);

fiveHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);

fiveHssfCell.setCellValue(new HSSFRichTextString(String.valueOf(storage.getQty())));

fiveHssfCell.setCellStyle(cellStyle);//设置单元格的样式

 

HSSFCell sixHssfCell = hssfRow.createCell(5);

sixHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);

sixHssfCell.setCellValue(new HSSFRichTextString(String.valueOf(storage.getQtyLocked())));

sixHssfCell.setCellStyle(cellStyle);//设置单元格的样式

 

row++;

}

String newFileName = String.format("%s.%s", "joinStocktaking-" + (new Date()).getTime(), "xls");

String uploadPath = FileUtils.contractPath(System.getProperty(JAVA_IO_TMPDIR), newFileName);

FileOutputStream fOut = new FileOutputStream(uploadPath);

workbook.write(fOut);

fOut.flush();

fOut.close();

 

return AjaxResponse.createSuccess(newFileName);

}

分享到:
评论

相关推荐

    JS POI EXCEL 原样式导出

    "JS POI EXCEL 原样式导出"是关于使用JavaScript来实现Excel文件导出的一项技术,它允许用户将数据以Excel格式导出,并保持原有的样式和格式。这一技术主要依赖于Apache POI库,该库是Java平台上用于操作Microsoft ...

    poi excel poi excel poi excel

    ### POI Excel知识点详解 #### 一、Jakarta POI简介与Apache POI的作用 Jakarta POI 是 Apache POI 的早期项目名称,它提供了一组 API 来处理 Microsoft Office 文件格式,特别是针对 Excel(`.xls` 和 `.xlsx`)...

    POI-excel导出样式设计.docx

    本文总结了 POI-excel 的一些常用方法和样式设计,包括读取 Excel 文件、获取单元格内容、设置单元格内容、读取单元格内容、设置列宽和行高、添加区域和合并单元格、常用方法和常用单元格边框格式等。

    Java Poi 导出excel(支持各种设置字体、颜色、垂直居中)

    Java Poi 导出excel(支持各种设置字体、颜色、垂直居中)

    poi复制指定行数的Excel表格内容

    本教程将深入探讨如何使用Apache POI库来复制Excel表格的指定行数及其样式。 首先,让我们理解标题"poi复制指定行数的Excel表格内容"。这指的是使用Apache POI库来复制Excel文件中特定行的数据,并保留原有的格式和...

    java使用poi在excel单元格添加超链接,设置字体颜色(csdn)————程序.pdf

    本篇文章主要探讨如何利用POI在Excel单元格中添加超链接,并设置字体颜色。 首先,为了使用Apache POI库,你需要在Maven项目的pom.xml文件中引入以下依赖: ```xml &lt;!-- 主要的POI库 --&gt; &lt;groupId&gt;org.apache...

    POI操作Excel完美生成水印

    在Java编程领域,Apache POI 是一个非常流行的库,它允许开发者读取、写入和修改Microsoft Office格式的文件,包括Excel(XLS和XLSX)。本教程将深入探讨如何利用Apache POI来在Excel文件中完美地生成水印。水印通常...

    POI读取Excel带格式数据

    标题 "POI读取Excel带格式数据" 涉及到的是Apache POI库在Java中的使用,这个库允许开发者处理Microsoft Office格式的文件,包括Excel。Apache POI是一个开源项目,提供了API来读取、写入和修改Excel文档。在本场景...

    poi excel转html

    poi提供了excel转html的代码,但是吧,有好多问题。当有合并单元格时边框获取不到,单元格内的字体样式也转换不了,现在对poi提供的Tohtml.java做了一些修改,修复了这些问题,记录下,以备之后用到

    poi 将多个excel复制到新的excel 的多个sheet页中 并复制所有的样式 包括字体的样式

    poi 将多个excel复制到新的excel 的多个sheet页中 并复制所有的样式 包括字体的样式 背景颜色 单元格宽度 等

    POI Excel官方源码及文档及实例

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。这个资源包包含了POI项目的源代码、相关文档以及示例,可以帮助开发者深入理解如何使用POI来操作Excel文件。 一...

    使用poi读取、写入复杂excel工具类(包含样式)

    使用poi读取写入复杂excel内容包括样式,工具类

    poiexcel导出html格式

    Apache POI 是一个开源项目,专门用于处理 Microsoft Office 格式的文件,包括 Excel。在 POI 3.10 及以后的版本中,引入了对将 Excel 工作簿转换为 HTML 格式的支持,这极大地扩展了其在数据导出和网页展示中的应用...

    poi 操作excel模板

    5. **样式和格式**:可以为单元格设置样式,如字体、颜色、边框等。`CellStyle`和`Font`对象可以帮助你实现这一点。 6. **合并单元格**:若需要合并单元格,可以使用`Sheet`对象的`mergeCells()`方法。 7. **保存...

    POI导出Excel工具类,自动设置标题 列名 文件名,可插入图片,合并单元格

    这个工具类可以根据实际需求进行扩展,例如增加数据填充、样式设置、公式计算等功能。使用POI库,你可以构建一个灵活且高效的Excel导出解决方案,满足各种复杂需求。在实际开发中,记得对可能出现的异常进行妥善处理...

    poi excel 模板读取并导出带公式的excel文档

    ### POI Excel 模板读取并导出带公式的Excel文档 #### 一、概述 在实际工作中,经常需要批量处理数据,并将其导出到Excel文件中,特别是在需要复杂计算的情况下,例如工资单、统计数据汇总等场景。利用Apache POI...

    POI使用Excel模板文件循环输出行并导出Excel

    Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,尤其是Excel。在这个特定的例子中,我们将讨论如何使用POI库基于一个Excel模板文件循环输出数据行,并将结果导出为新的Excel文件。 首先,...

    POI生成Excel POI操作Excel POI读取Excel POI类库

    3. **样式和格式**:POI允许设置单元格的样式,如字体、颜色、边框、对齐方式等,以增强Excel的可读性。 4. **异常处理**:确保在读写过程中捕获并处理可能出现的IO异常或其他运行时异常。 通过lib.rar和Poi02.rar...

    poi读写excel+poi总结

    POI允许我们设置单元格的样式,如字体、颜色、对齐方式、边框等。这需要创建CellStyle对象,对其进行配置后,应用到Cell上。 6. 读取数据 读取Excel文件时,首先需要使用POI的FileInputStream打开文件,然后创建与...

Global site tag (gtag.js) - Google Analytics