一般的EXCEL导出使用POI先创建一个HSSFWorkbook,然后通过不断创建HSSFRow,HSSFCell后设置单元格内容便可以完成导出。

这次在项目中需要用到模板,导出的内容包括(1.模板中的内容、样式。2.自己需要新增的内容、样式。),还需要设置单元格的样式,在网上搜了一些blog,完成后记录一下。

分析这次需求,最关键的就是如何获取到填充了模板的新HSSFWorkbook,如果获取到它,我们可以熟练的往里面添加内容。

File fi = new File("F:/usr/user.xls");

POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(fi));

HSSFWorkbook wb = new HSSFWorkbook(fs);

这样便可以获取到我们熟悉的HSSFWorkbook对象了,操作熟悉的HSSFWorkbook对象想必爽歪歪了。这里还有一个需求,就是需要设置一些单元格的样式,这在之前我也没有接触到过,记录下来。

//生成单元格样式

HSSFCellStyle cellStyle = wb.createCellStyle(); //wb是上一步创建的HSSFWorkbook对象

//设置背景颜色

cellStyle.setFillForegroundColor(HSSFColor.RED.index);

//solid 填充 foreground 前景色

cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

这样便创建完成了一个单元格的样式,接下来便是在特定的单元格添加样式。

//获取特定的单元格

HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);

//设置样式

cell.setCellStyle(cellStyle); //cellStyle是上一步创建的HSSFCellStyle对象

如此,整个需求基本完成。对于整个过程中需要用到的其他方法,这里写了一个封装类。

**  有些方法可能只适用此项目,使用时需要修改。

package com.pole.educate.excel;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.Calendar;

import java.util.Date;

import org.apache.poi.hssf.usermodel.HSSFCell;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.hssf.util.HSSFColor;

import org.apache.poi.poifs.filesystem.POIFSFileSystem;

import org.apache.poi.ss.usermodel.RichTextString;

/**

* 共分为六部完成根据模板导出excel操作:

* 第一步、设置excel模板路径(setSrcPath)

* 第二步、设置要生成excel文件路径(setDesPath)

* 第三步、设置模板中哪个Sheet列(setSheetName)

* 第四步、获取所读取excel模板的对象(getSheet)

* 第五步、设置数据(分为6种类型数据:setCellStrValue、setCellDateValue、setCellDoubleValue、setCellBoolValue、setCellCalendarValue、setCellRichTextStrValue)

* 第六步、完成导出 (exportToNewFile)

*

* @author Administrator

*

*/

public class ExcelWriter {

POIFSFileSystem fs = null;

HSSFWorkbook wb = null;

HSSFSheet sheet = null;

HSSFCellStyle cellStyle = null;

private String srcXlsPath = "";// excel模板路径

private String desXlsPath = ""; // 生成路径

private String sheetName = "";

/**

* 第一步、设置excel模板路径

* @param srcXlsPaths

*/

public void setSrcPath(String srcXlsPaths) {

this.srcXlsPath = srcXlsPaths;

}

/**

* 第二步、设置要生成excel文件路径

* @param desXlsPaths

* @throws FileNotFoundException

*/

public void setDesPath(String desXlsPaths) throws FileNotFoundException {

this.desXlsPath = desXlsPaths;

}

/**

* 第三步、设置模板中哪个Sheet列

* @param sheetName

*/

public void setSheetName(String sheetName) {

this.sheetName = sheetName;

}

/**

* 第四步、获取所读取excel模板的对象

*/

public void getSheet() {

try {

File fi = new File(srcXlsPath);

if(!fi.exists()){

//System.out.println("模板文件:"+srcXlsPath+"不存在!");

return;

}

fs = new POIFSFileSystem(new FileInputStream(fi));

wb = new HSSFWorkbook(fs);

sheet = wb.getSheet(sheetName);

//生成单元格样式

cellStyle = wb.createCellStyle();

//设置背景颜色

cellStyle.setFillForegroundColor(HSSFColor.RED.index);

//solid 填充 foreground 前景色

cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

/**

*

*/

public HSSFRow createRow(int rowIndex) {

HSSFRow row = sheet.createRow(rowIndex);

return row;

}

/**

*

*/

public void createCell(HSSFRow row,int colIndex) {

row.createCell(colIndex);

}

/**

* 第五步、设置单元格的样式

* @param rowIndex 行值

* @param cellnum 列值

*/

public void setCellStyle(int rowIndex, int cellnum) {

HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);

cell.setCellStyle(cellStyle);

}

/**

* 第五步、设置字符串类型的数据

* @param rowIndex 行值

* @param cellnum 列值

* @param value 字符串类型的数据

*/

public void setCellStrValue(int rowIndex, int cellnum, String value) {

if(value != null) {

HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);

cell.setCellValue(value);

}

}

/**

* 第五步、设置日期/时间类型的数据

* @param rowIndex 行值

* @param cellnum 列值

* @param value 日期/时间类型的数据

*/

public void setCellDateValue(int rowIndex, int cellnum, Date value) {

HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);

cell.setCellValue(value);

}

/**

* 第五步、设置浮点类型的数据

* @param rowIndex 行值

* @param cellnum 列值

* @param value 浮点类型的数据

*/

public void setCellDoubleValue(int rowIndex, int cellnum, double value) {

HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);

cell.setCellValue(value);

}

/**

* 第五步、设置Bool类型的数据

* @param rowIndex 行值

* @param cellnum 列值

* @param value Bool类型的数据

*/

public void setCellBoolValue(int rowIndex, int cellnum, boolean value) {

HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);

cell.setCellValue(value);

}

/**

* 第五步、设置日历类型的数据

* @param rowIndex 行值

* @param cellnum 列值

* @param value 日历类型的数据

*/

public void setCellCalendarValue(int rowIndex, int cellnum, Calendar value) {

HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);

cell.setCellValue(value);

}

/**

* 第五步、设置富文本字符串类型的数据。可以为同一个单元格内的字符串的不同部分设置不同的字体、颜色、下划线

* @param rowIndex 行值

* @param cellnum 列值

* @param value 富文本字符串类型的数据

*/

public void setCellRichTextStrValue(int rowIndex, int cellnum,

RichTextString value) {

HSSFCell cell = sheet.getRow(rowIndex).getCell(cellnum);

cell.setCellValue(value);

}

/**

* 第六步、完成导出

*/

public void exportToNewFile() {

FileOutputStream out;

try {

out = new FileOutputStream(desXlsPath);

wb.write(out);

out.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

以上这篇POI通过模板导出EXCEL文件的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

java poi导出excel模板_POI通过模板导出EXCEL文件的实例相关推荐

  1. java poi 填充单元格_POI操作excel表格(建立工作薄、创建工作表、将数据填充到单元格中)...

    [java]代码库/* * To change this template, choose Tools | Templates * and open the template in the edito ...

  2. java poi 加粗居中_poi生成excel整理(设置边框/字体/颜色/加粗/居中/)

    HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); HSSFCellStyle setBorder = ...

  3. java poi读取word中附件_数据导出生成word附件使用POI的XWPFTemplate对象

    比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI和Java Excel. Jakarta POI 是一套用于访问微软格式文档的Java API.Jakarta POI有很多 ...

  4. java poi jar包下载_poi.jar下载-poi.jar包下载 (3.8/3.9/3.10)版--pc6下载站

    poi.jar全名叫做ApachePOI-theJavaAPIforMicrosoftDocuments该poi.jar包内包含了poi.jar-3.8poi.jar-3.9poi.jar-3.10马 ...

  5. java poi word换行符_poi读取word的换行符问题

    用Java的Poi插件读取word内容,类如下: package com.tw.word; import org.apache.poi.hwpf.HWPFDocument; import org.ap ...

  6. java poi在word文档中插入图片后文件无法打开

    错误情况 POI生成的word文档包含图片时用office打开失败,提示错误.但是用wps却可以打开. 原因分析 这是因为poi本身的问题,单纯的插入图片是不显示的,可以使用如下处理方式createP ...

  7. JAVA POI 导出EXCEL时,EXCEL模板中的公式无效问题

    JAVA POI 出力EXCEL时,EXCEL模板中的公式无效问题 工作中遇到一个问题. EXCEL模板有两个sheet,画面内容要导出到第二个sheet中,第一个sheet设置公式,读取第二个she ...

  8. java 复杂报表_Java+POI+模板”一:打造复杂Excel 报表

    1 设计思路 Java 对于Excel 的操作一般借助于POI 类库,由于有些报表的表头比较复杂,直接用POI 控制报表的生成比较困难,这时可以先制作Excel 报表模板,而后再通过Java 调用PO ...

  9. Java导出Excel模板,导出数据到指定模板,通过模板导入数据(一)

    本文章主要是介绍阿里巴巴的easyexcel的使用 1. 首先需要我们导入easyexcel的依赖包 <!-- alibaba/easyexcel 使用高版本,低版本string接收数字丢小数位 ...

最新文章

  1. redis 安装后不能使用
  2. 字体大小的设置_ios 设置的字体大小与实际的字体大小不一致
  3. Visual C++——定时刷新重绘窗口[WM_PAINT消息]解决方案
  4. redis的zset的底层实现_Redis(三)--- Redis的五大数据类型的底层实现
  5. 计算机控制系统第1次作业,计算机控制系统第1次作业86分.doc
  6. php过程函数,php流程控制和函数
  7. 服务器安装julia_julia | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror...
  8. 王一博、肖战、吴宣仪、杨紫,2019明星沸点榜,谁的颜值更高,Python告诉你
  9. 如何成为早起者(三)
  10. HTML文件自动加入了VBS代码,html病毒:自动注入VBS代码-Ramnit病毒怎么解决!
  11. 支付宝提现免手续费的方法步骤
  12. memcache数据组织
  13. 10个最佳企业移动支付APP应用和酷站欣赏
  14. Kali2020版安装 macof安装使用
  15. TICKScript简介
  16. matlab与数学实验心得体会,数学matlab实验心得体会
  17. android 唱歌评分系统,抖音上唱歌评分的软件叫什么 可以评分的唱歌软件推荐
  18. 传智播客100万现金奖励优秀校友
  19. Threejs实现3D场景浏览器内存消耗过高导致浏览器卡顿崩溃刷新等问题解决办法以及3D场景在手机浏览器中画质不高的原因
  20. 记一次Oracle测试环境安装

热门文章

  1. 智能路灯平台灯具控制系统的设计与实现
  2. 9个最好的PowerPoint模板2019
  3. [斯特林数][自然数幂和]JZOJ 4220 WYF的盒子
  4. 国委派在华产权专员 谋求数十亿美元利益
  5. 亚马逊云AWS认证助理工程师题库第五题
  6. 5G、AI、云计算走进抗疫最前线,请为这些科技公司点赞
  7. matlab 示波器(scope)保存为图片
  8. 计算机二级系统环境,操作系统环境Environ函数
  9. 冷冲压工艺缺陷及处理办法,常见产品展开工艺技术归纳
  10. Spring5框架(上) IOC