关闭

JAVA -- POI导出excel

标签: POIEXCEL
23人阅读 评论(0) 收藏 举报
分类:

POI中设置Excel单元格格式

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

先获取工作薄对象:

HSSFWorkbook wb =new HSSFWorkbook();

HSSFSheet sheet =wb.createSheet();

HSSFCellStylesetBorder = 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 = newRegion(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 = "D:\\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);
}
}
}

0
0
查看评论

POI 通用导出Excel(.xls,.xlsx)

POI操作EXCEL对象 HSSF:操作Excel 97(.xls)格式 XSSF:操作Excel 2007 OOXML (.xlsx)格式,操作EXCEL内存占用高于HSSF SXSSF:从POI3.8 beta3开始支持,基于XSSF,低内存占用。使用POI的HSSF对象,生成Exc...
  • houxuehan
  • houxuehan
  • 2016-03-23 08:53
  • 57222

Java poi Excel 通用导出

最近项目中需要用到数据的导出与导入功能,我和我同事各负责一个, 我负责做导出这一块,比较简单。至于想看导入的同志们,我这里暂时是没有的,所以就不要浪费时间在这片文章上了。不过以后肯定会补上导入的功能。鄙人看到一些博客上通过引用各种的util工具包,其实说白了还是利用apache的poi,在项目中直接...
  • moyanxuan_1993_2_24
  • moyanxuan_1993_2_24
  • 2016-03-22 16:39
  • 34639

Java POI 导出EXCEL 实现 Java导出Excel

在web开发中,有一个经典的功能,就是数据的导入导出。特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作。而数据导出的格式一般是EXCEL或者PDF,我这里就用两篇文章分别给大家介绍下。(注意,我们这里说的数据导出可不是数据库中的数据导出!么误会啦^_^)...
  • WoShiSuChaoSheng
  • WoShiSuChaoSheng
  • 2017-09-06 17:57
  • 2197

Java POI 导出Excel表格并下载

开发项目中,经常会用到要求导出Excel表格的情况,在网上查了很多,最后实现了功能,特此记录一下。 前台jsp页面是用ajax实现传参的 //导出数据--表格 function exportLabType(){ //选择要导出的数据 var array = new Array(); var n...
  • ting_125
  • ting_125
  • 2017-04-11 14:12
  • 1738

公共POI导出Excel方法--java

String title = Message.getString("manifestIExportTitle"); String[] rowsName = new String[]{"序号","货物运输批次号","...
  • wangchangpen62
  • wangchangpen62
  • 2015-03-18 15:25
  • 33588

POI生成Excel一个简单的分页例子

POI生成Excel一个简单的分页例子 其实分页很简单,当前页面记录数满足分页条件后,用工作簿对象再创一个sheet。 实现思路如下: 1、定义每页最大的记录数。 2、根据最大记录数计算出sheet数。 3、有可能最后一页记录达不到最大记录数maxRow,所以还要记录最后一个s...
  • longdage1992
  • longdage1992
  • 2015-09-12 16:40
  • 1587

Java POI 导出 Excel 到本地详细实例(附jar包,测试代码,测试结果图)

poi导出Excel测试实例,附jar包,测试Java代码,详细注释,测试结果图。 下面是poi的jar包的某度云盘。 链接:http://pan.baidu.com/s/1kVBEZNh 密码:74v7 以下是详细测试代码,附带详细注释。 package com.lxk.poiTest; ...
  • qq_27093465
  • qq_27093465
  • 2016-11-21 17:55
  • 1386

JAVA使用POI根据模版导出EXCEL

//excel模板路径 File fi=new File(basePath+templetName); POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(fi)); //读取excel模板 HSSFWorkboo...
  • hhl2046
  • hhl2046
  • 2015-10-14 11:38
  • 6574

java后台利用Apache poi 生成excel文档提供前台下载

java在后台利用Apache poi 生成excel文档提供前台下载
  • u010251278
  • u010251278
  • 2016-12-06 20:44
  • 9928

POI和Java Excel Api导入导出----详细到你不敢相信

来自:http://blog.csdn.net/jerehedu/article/details/45195359     一、介绍             当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常...
  • m0_37899388
  • m0_37899388
  • 2017-05-27 09:24
  • 10016
    个人资料
    • 访问:2427次
    • 积分:496
    • 等级:
    • 排名:千里之外
    • 原创:39篇
    • 转载:20篇
    • 译文:0篇
    • 评论:0条
    文章分类