`

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);


附一个完整的例子:

package cn.com.util;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.util.CellRangeAddress;
import org.apache.poi.hssf.util.Region;
import org.apache.poi.ss.usermodel.CellStyle;

import java.io.FileOutputStream;

import javax.servlet.http.HttpServlet;

public class CreateXL extends HttpServlet {
/** Excel 文件要存放的位置,假定在D盘下 */
public static String outputFile = "c:\\test.xls";

private void cteateCell(HSSFWorkbook wb, HSSFRow row, short col, String val) {
HSSFCell cell = row.createCell(col);
// cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(val);
HSSFCellStyle cellstyle = wb.createCellStyle();
cellstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);
cell.setCellStyle(cellstyle);
}

public static void main(String argv[]) {
try {
// 创建新的Excel 工作簿
HSSFWorkbook workbook = new HSSFWorkbook();

// 设置字体
HSSFFont font = workbook.createFont();
// font.setColor(HSSFFont.COLOR_RED);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font.setFontHeightInPoints((short) 14);

// HSSFFont font2 = workbook.createFont();
// font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// font.setFontHeightInPoints((short)14);

// 设置样式
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFont(font);
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

// HSSFCellStyle cellStyle2= workbook.createCellStyle();
// cellStyle.setFont(font2);
// cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

// 在Excel工作簿中建一工作表,其名为缺省值
// 如要新建一名为"月报表"的工作表,其语句为:
HSSFSheet sheet = workbook.createSheet("月报表");
CellRangeAddress cellRangeAddress = new CellRangeAddress(0, 0, 0,
11);
sheet.addMergedRegion(cellRangeAddress);

//第一行
// 在索引0的位置创建行(最顶端的行)
HSSFRow row = sheet.createRow(0);
// 在索引0的位置创建单元格(左上端)
HSSFCell cell = row.createCell(0);
// 定义单元格为字符串类型
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellStyle(cellStyle);
// 在单元格中输入一些内容
cell.setCellValue(new HSSFRichTextString("北京亿卡联科技发展有限公司小区门禁维修月报表"));

//第二行
cellRangeAddress = new CellRangeAddress(1, 1, 3, 6);
sheet.addMergedRegion(cellRangeAddress);
row = sheet.createRow(1);
HSSFCell datecell = row.createCell(3);
datecell.setCellType(HSSFCell.CELL_TYPE_STRING);
datecell.setCellStyle(cellStyle);
datecell.setCellValue("时间间隔xxxxx");

cellRangeAddress = new CellRangeAddress(1, 1, 9,
10);
sheet.addMergedRegion(cellRangeAddress);
row.createCell(9).setCellValue("单位:元");

//第三行
row=sheet.createRow(2);
row.createCell(0).setCellValue("一、");
row.createCell(1).setCellValue("基本资料");

//第4行
row=sheet.createRow(3);
row.createCell(1).setCellValue("小区名称:");
cellRangeAddress=new CellRangeAddress(3,3,2,11);
sheet.addMergedRegion(cellRangeAddress);
row.createCell(2).setCellValue("xxxxx");

//第5行
row=sheet.createRow(4);
row.createCell(1).setCellValue("座落地点:");
cellRangeAddress=new CellRangeAddress(4,4,2,11);
sheet.addMergedRegion(cellRangeAddress);
row.createCell(2).setCellValue("xxxxx");

//第6行
row=sheet.createRow(5);
row.createCell(1).setCellValue("建成年月:");
cellRangeAddress=new CellRangeAddress(5,5,2,4);
sheet.addMergedRegion(cellRangeAddress);
row.createCell(2).setCellValue("年月日:xxxxx");
row.createCell(5).setCellValue("联系人");
cellRangeAddress=new CellRangeAddress(5,5,6,8);
sheet.addMergedRegion(cellRangeAddress);
row.createCell(6).setCellValue("XXX");
row.createCell(9).setCellValue("电话");
cellRangeAddress=new CellRangeAddress(5,5,10,11);
sheet.addMergedRegion(cellRangeAddress);
row.createCell(10).setCellValue("XXX");

//第7行
row=sheet.createRow(6);
row.createCell(1).setCellValue("住户:");
row.createCell(2).setCellValue("(XX)");
row.createCell(3).setCellValue("(户)");
cellRangeAddress=new CellRangeAddress(6,6,4,5);
sheet.addMergedRegion(cellRangeAddress);
row.createCell(4).setCellValue("共计(      )");       
row.createCell(6).setCellValue("幢");
cellRangeAddress=new CellRangeAddress(6,6,7,8);
sheet.addMergedRegion(cellRangeAddress);
row.createCell(7).setCellValue("发卡张数");   
cellRangeAddress=new CellRangeAddress(6,6,9,10);
sheet.addMergedRegion(cellRangeAddress);
row.createCell(9).setCellValue("xxxx");   


//第9行
row=sheet.createRow(8);
row.createCell(0).setCellValue("二、");
cellRangeAddress=new CellRangeAddress(8,8,1,2);
sheet.addMergedRegion(cellRangeAddress);
row.createCell(1).setCellValue("维修用材料台账");
row.createCell(6).setCellValue("三、");
cellRangeAddress=new CellRangeAddress(8,8,7,9);
sheet.addMergedRegion(cellRangeAddress);
row.createCell(7).setCellValue("维修工时记录");
//第10行
row=sheet.createRow(9);
row.createCell(0).setCellValue("日期");
row.createCell(1).setCellValue("维修事项");
row.createCell(2).setCellValue("材料清单");
row.createCell(3).setCellValue("数量");
row.createCell(4).setCellValue("单价");
row.createCell(5).setCellValue("材料金额");

row.createCell(7).setCellValue("日期");
row.createCell(8).setCellValue("技工");
row.createCell(9).setCellValue("工时数");
row.createCell(10).setCellValue("单价");
row.createCell(11).setCellValue("工时金额");

//填充数据
for (int i = 0; i < 10; i++) {
row=sheet.createRow(9+i+1);
row.createCell(0).setCellValue("日期");
row.createCell(1).setCellValue("维修事项");
row.createCell(2).setCellValue("材料清单");
row.createCell(3).setCellValue("数量");
row.createCell(4).setCellValue("单价");
row.createCell(5).setCellValue("材料金额");

row.createCell(7).setCellValue("日期");
row.createCell(8).setCellValue("技工");
row.createCell(9).setCellValue("工时数");
row.createCell(10).setCellValue("单价");
row.createCell(11).setCellValue("工时金额");
}


//第n+10行
row=sheet.createRow(9+10+1);
//cellRangeAddress=new CellRangeAddress(19,19,0,4);
//sheet.addMergedRegion(cellRangeAddress);
row.createCell(0).setCellValue("累计:");
row.createCell(1).setCellValue("xxx");
row.createCell(7).setCellValue("累计:");
row.createCell(8).setCellValue("xxx");




// 新建一输出文件流
FileOutputStream fOut = new FileOutputStream(outputFile);
// 把相应的Excel 工作簿存盘
workbook.write(fOut);
fOut.flush();
// 操作结束,关闭文件
fOut.close();
System.out.println("文件生成...");
} catch (Exception e) {
System.out.println("已运行 xlCreate() : " + e);
}
}
}

分享到:
评论
2 楼 18335864773 2017-06-14  
以后用pageoffice插件生成excel把。可以后台设置这些样式。最主要的是可以在线编辑,填充数据或者设置样式,都可以。并且pageoffice生成excel的代码比poi生成excel的代码简洁高效
1 楼 this_super 2011-08-22  
你好,请问设置内容格式怎么设置呢?如果不设置的话,打开excel后,选中一个单元格,右键"设置单元格",第一个TAB number中,显示的格式色general,我想设置为text该怎么设置呢,谢谢!!

相关推荐

    POI中设置Excel单元格格式.docx

    POI 中设置 Excel 单元格格式 在使用 POI 库时,经常需要设置 Excel 单元格的格式,以满足不同业务需求。本文将详细介绍如何使用 POI 库设置 Excel 单元格的格式,包括设置背景色、边框、居中、字体、列宽、自动...

    POI设置EXCEL单元格格式为文本.pdf

    POI 设置 EXCEL 单元格格式为文本 在实际开发过程中,经常需要从数据库中导出 EXCEL 表格,而 POI 就是一种常用的解决方案。POI 是一个 Java 库,提供了对 Microsoft Office 文件格式的读写能力。今天我们将讨论...

    POI设置EXCEL单元格格式为文本.docx

    在本文中,我们将探讨如何使用 POI 设置 Excel 单元格格式为文本,并从数据库生成带有数据的 Excel 文件。首先,我们需要了解 POI 的基本用法和概念,如工作簿(Workbook)、工作表(Sheet)和单元格(Cell)。POI ...

    POI读取Excel合并单元格并储存

    总结起来,通过Apache POI库,我们可以方便地使用Java读取Excel文件,处理合并单元格的数据,并将其存储到自定义的实体类中。这为后续的数据分析、业务逻辑处理或数据迁移提供了便利。在实际应用中,还可以根据具体...

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

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

    Java POI 生成Excel时显示货币格式

    在Java开发中,Apache POI库是处理Microsoft ...通过掌握Java POI的单元格格式设置功能,开发者可以轻松生成专业且美观的Excel文档,特别是在处理大量财务数据时,恰当的货币格式能够显著提升数据的可读性和专业度。

    poi读写excel+poi总结

    在本文中,我们将深入探讨如何使用POI进行Excel的读写操作,并进行总结。 1. POI基本概念 Apache POI 提供了HSSF(Horrible Spreadsheet Format)用于读写旧版的.xls格式的Excel文件,而XSSF则用于处理.xlsx格式的...

    java excel poi合并单元格

    在Java编程中,Apache POI库是一个非常流行的用于读写Microsoft Office格式文件的库,包括Excel。本篇文章将深入探讨如何使用Apache POI来合并Excel工作表中的单元格,以实现标题或者表头的美化。 首先,理解Excel...

    poi生成Excel及合并单元格示例

    在本示例中,我们将重点讨论如何使用 Apache POI 来生成 Excel 文件,并进行单元格的合并操作。 首先,我们需要引入 Apache POI 的相关依赖库。如果你使用的是 Maven,可以在项目的 `pom.xml` 文件中添加以下依赖:...

    Java 设置Excel单元格对齐方式、文本旋转、换行、缩进.pdf

    本篇文章主要探讨如何使用Java来设置Excel单元格的样式,包括对齐方式、文本旋转、换行以及缩进。为了实现这些功能,我们可以借助第三方库Free Spire.XLS for Java。 首先,要使用Free Spire.XLS for Java库,你...

    poi获取合并单元格

    在本篇文章中,我们将详细介绍如何使用 POI 处理 Excel 文件中的合并单元格。 #### 二、关键概念与术语解释 1. **合并单元格**:在 Excel 中,可以通过选择相邻的多个单元格并将其合并为一个单元格来简化数据展示...

    poi excel poi excel poi excel

    Jakarta POI 是 Apache POI 的早期项目名称,它提供了一组 API 来处理 Microsoft Office 文件格式,特别是针对 Excel(`.xls` 和 `.xlsx`)和 Word(`.doc` 和 `.docx`)文件。Apache POI 项目主要由以下几个子项目...

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

    在这个场景中,我们关注的是如何使用POI来创建一个功能丰富的Excel导出工具类,它能够自动设置标题、列名、文件名,并且支持插入图片以及合并单元格。下面将详细介绍这些功能的实现。 首先,要创建一个Excel工作簿...

    java poi处理excel数据

    4. **数据格式(CellStyle)**:POI允许你设置单元格的样式,如字体、颜色、对齐方式、边框等,通过`CellStyle`对象实现。 5. **数据读写**:使用`BufferedReader`和`BufferedWriter`进行文件操作,`...

    poi获取exccel有合并单元格的数据

    通过以上步骤,我们成功地使用Apache POI库读取了含有合并单元格的Excel文件,并将数据存储到了`List`中。这种方法不仅可以帮助开发者更方便地处理Excel数据,还可以提高程序的健壮性和数据的准确性。在实际应用中,...

    POI的EXCEL导出,自动换行

    - **兼容性问题**:虽然Apache POI支持多种Excel版本,但在实际使用过程中可能会遇到一些兼容性问题,特别是在处理某些特殊格式或功能时。因此,在正式部署前进行全面的测试是非常重要的。 - **性能优化**:当处理...

    poiexcel导出html格式

    在 POI 3.10 及以后的版本中,引入了对将 Excel 工作簿转换为 HTML 格式的支持,这极大地扩展了其在数据导出和网页展示中的应用。以下是对这个功能的详细讲解: 1. **Apache POI 概述**: Apache POI 是 Java 平台...

Global site tag (gtag.js) - Google Analytics