POI通过模板导出EXCEL文件
一般的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文件的更多相关文章
- apache poi根据模板导出excel
需要预先新建编辑好一个excel文件,设置好样式. 编辑好输出的数据,根据excel坐标一一对应. 支持列表数据输出,列表中列合并. 代码如下: package com.icourt.util; im ...
- java后台poi根据模板导出excel
public class ExcelUtils { private static final String INSPECTIONRECORD_SURFACE_TEMPLET_PATH = " ...
- 使用NPOI导出Excel文件
使用NPOI导出Excel文件,本实例使用了ASP.NET MVC. 1.使用NPOI导出Excel文件 实例:导出商品列表. 要求:1.通过NPOI导出导出商品列表信息: 2.使用Excel函数计算 ...
- java POI导出Excel文件数据库的数据
在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.这里我简单实现导出Excel文件. POI jar ...
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据
ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...
- PHP导出excel文件,第一步先实现PHP模板导出不带数据
今天继续研究PHP导出excel文件,把复杂的事情简单化,一步步实现功能,首先实现模板文件的导出,随后再实现写入数据后导出,最终实现功能,这是基本思路.中间可以加一步,先自己写入数据导出试试,随后再数 ...
- poi根据excel模板导出Excel
/****单元格值对象**/public class Cells { /*** * 行 */ private int row; /** * 列 */ private int column; /** * ...
- POI导入和导出Excel总结
POI导入和导出Excel总结 POI使用总结 1.POI读取Excel 打开工作簿的方式有以下两种简单的应用,POI读取和输出工作簿文件都可以通过以下两种方式来声明: //通过输入流的方式打开本 ...
- 导入导出Excel文件
搭建环境 先新建web project ,然后Add Struts Capabilties: 下载导入导出Excel所需的jar包: poi-3.8-20120326.jar包 : http:// ...
随机推荐
- 新技术探究之 GraphQL
What? GraphQL 是一种类似于 SQL 的结构化查询语言,由 facebook 于2012年创造,于2015年开源.SQL 在服务端定义,GraphQL 在客户端定义,也就是说 GraphQ ...
- 深入理解Java虚拟机-----------虚拟机类加载机制
虚拟机类加载机制 类从被加载到虚拟机内存开始,到卸载出内存为止,整个生命周期包括:加载,验证,准备,解析,初始化,使用,卸载等7个阶段.其中,验证,准备,解析3个部分称为连接. 以上7个阶段中,加载, ...
- jquery.validata.js 插件
一.Validate插件描述 Validate是基于jQuery的一款轻量级验证插件,内置丰富的验证规则,还有灵活的自定义规则接口,HTML.CSS与JS之间的低耦合能让您自由布局和丰富样式,支持in ...
- [jbdj]SpringMVC框架(1)快速入门
1)springmvc快速入门(传统版) 步一:创建springmvc_demo一个web应用 步二:导入springioc,springweb , springmvc相关的jar包 步三:在/WEB ...
- Android实现模拟表单上传
很久以前,写过一篇关于下载的文章:基于HTTP协议的下载功能实现,今天对于Android上的文件上传,也简单的提两笔.在Android上,一般使用Http 模拟表单或者FTP来进行文件上传,使用FTP ...
- ES6简介
function fn(){ return 100; } let name='sui'; let age=19; let sui={ name, age, ["pro"+fn()] ...
- 智联卓聘 卓聘IM(聊聊)开发实践
1. 卓聘IM开发背景 智联卓聘是智联旗下高端人才招聘平台,成立快4年多,业务增涨每年以100%速度增涨快,同时对产品和研发速度都比较高. 2015年提出IM开发,主要用于后选人与猎头及时交流,降低 ...
- codeforces 129B students and shoes
https://vjudge.net/problem/CodeForces-129B 题意: 有n个学生,他们之间被鞋带缠住了.现在,老师首先把所有只与一个学生直接相连的学生找出来,让他们聚集到一起, ...
- 008.Adding a model to an ASP.NET Core MVC app --【在 asp.net core mvc 中添加一个model (模型)】
Adding a model to an ASP.NET Core MVC app在 asp.net core mvc 中添加一个model (模型)2017-3-30 8 分钟阅读时长 本文内容1. ...
- 使用java语言编写窗口按钮
使用java语言编写窗口按钮 代码如下: package Day08; import java.awt.FlowLayout; import javax.swing.JButton;import ja ...