POI通过模板导出EXCEL文件的实例
发布时间 - 2026-01-11 02:47:37 点击率:次一般的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操作:<br/>
* 第一步、设置excel模板路径(setSrcPath)<br/>
* 第二步、设置要生成excel文件路径(setDesPath)<br/>
* 第三步、设置模板中哪个Sheet列(setSheetName)<br/>
* 第四步、获取所读取excel模板的对象(getSheet)<br/>
* 第五步、设置数据(分为6种类型数据:setCellStrValue、setCellDateValue、setCellDoubleValue、setCellBoolValue、setCellCalendarValue、setCellRichTextStrValue)<br/>
* 第六步、完成导出 (exportToNewFile)<br/>
*
* @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文件的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# poi模板导出excel
# 基于apache poi根据模板导出excel的实现方法
# Springboot使用POI实现导出Excel文件示例
# 详解poi+springmvc+springjdbc导入导出excel实例
# jsp利用POI生成Excel并在页面中导出的示例
# Java利用POI实现导入导出Excel表格示例代码
# asp.net使用npoi读取excel模板并导出下载详解
# java使用poi导出Excel的方法
# POI导出Excel报错No such file or directory的解决方法
# Java poi导出Excel下载到客户端
# POI通用导出Excel(.xls
# .xlsx)的方法
# 单元格
# 第五步
# 浮点
# 给大家
# 便可
# 第二步
# 第三步
# 第四步
# 上一步
# 我也
# 前景色
# 第六步
# 下划线
# 我们可以
# 希望能
# 不存在
# 还有一个
# 写了
# 还需要
# 到过
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
创业网站制作流程,创业网站可靠吗?
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
活动邀请函制作网站有哪些,活动邀请函文案?
Swift中swift中的switch 语句
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
浅谈javascript alert和confirm的美化
Laravel distinct去重查询_Laravel Eloquent去重方法
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
魔毅自助建站系统:模板定制与SEO优化一键生成指南
Laravel如何使用withoutEvents方法临时禁用模型事件
JavaScript如何实现错误处理_try...catch如何捕获异常?
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
Python并发异常传播_错误处理解析【教程】
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
EditPlus中的正则表达式 实战(2)
百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
如何用免费手机建站系统零基础打造专业网站?
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
如何为不同团队 ID 动态生成多个非值班状态按钮
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
深圳网站制作培训,深圳哪些招聘网站比较好?
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
七夕网站制作视频,七夕大促活动怎么报名?
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
网站制作企业,网站的banner和导航栏是指什么?
如何在万网主机上快速搭建网站?
如何在IIS管理器中快速创建并配置网站?
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
如何在Windows 2008云服务器安全搭建网站?
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
Laravel如何与Inertia.js和Vue/React构建现代单页应用
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
Laravel Docker环境搭建教程_Laravel Sail使用指南
微信推文制作网站有哪些,怎么做微信推文,急?
香港服务器部署网站为何提示未备案?
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程
简单实现Android文件上传
java获取注册ip实例
中山网站推广排名,中山信息港登录入口?
Laravel如何使用.env文件管理环境变量?(最佳实践)
Laravel如何创建自定义Artisan命令?(代码示例)
北京的网站制作公司有哪些,哪个视频网站最好?
Laravel如何使用Livewire构建动态组件?(入门代码)
网站建设整体流程解析,建站其实很容易!
音乐网站服务器如何优化API响应速度?

